Member 13618048 Ответов: 2

Как экспортировать данные таблицы mysql в PHP


это мой код для экспорта в excel, но он отображает список данных, а не для экспорта в excel

function ExportToExcel($requests){		
	//print_r($requests);//exit;
		extract($requests);		
		 
		$query = "SELECT * FROM ".$tname." P WHERE 1";
		$cond_search = '';
		$Querycond = '';
		if(isset($dwnld) && ($dwnld == "dwnld_all")){
			$Querycond    .= " AND  1 ";
		}
		
		if(isset($dwnld) && ($dwnld == "new_submission")){
			$Querycond    .= " AND apply_on >= CURDATE()";
		}
		
		if(isset($dwnld) && ($dwnld == "all_submission")){
			$Querycond    .= " AND  3";
		}

		$query .=  $Querycond;
	
		$query1 = $query . " ORDER BY P.apply_on desc";
		
		$setRec = mysql_query($query1);
		  
		$developer_records = array();
		while( $rows = mysql_fetch_assoc($setRec) ) {
		$developer_records[] = $rows;
		} 	
		$filename = "export_".date('Ymd') . ".xls";
		header("Content-type: application/octet-stream");
		header("Content-Type: application/vnd.ms-excel; name='excel'");
		header("Content-Disposition: attachment; filename='".$filename."'");
		header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
		header('Cache-Control: max-age=0');

		$show_coloumn = false;
		if(!empty($developer_records)) {
		foreach($developer_records as $record) {
		if(!$show_coloumn) {
		// display field/column names in first row
		echo implode("\t", array_keys($record)) . "\n";
		$show_coloumn = true;
		}
		echo implode("\t", array_values($record)) . "\n";
		}
		}
		
		exit;		
		return true;
	}


Что я уже пробовал:

пожалуйста, помогите мне, как это решить,я сделал в ajax вызов php-файла, а затем этот php-файл в другой php-файл

Richard Deeming

Почему вы посылаете три разных Content-Type заголовки?

2 Ответов

Рейтинг:
1

Jochen Arndt

Хороший код всегда проверяет, завершаются ли вызовы функций неудачно. Для этого проверьте возвращаемые значения и покажите сообщения об ошибках при сбоях.

Если вы сделаете это, вам будет сообщено, что ваш запрос не выполняется из-за передачи недопустимой команды SQL:

SELECT * FROM tname P WHERE 1
Допустимая команда будет выглядеть примерно так
SELECT * FROM tname WHERE P=1
Аналогично для добавления " AND 1 " что тоже недопустимо.

Наконец, вы не создаете файл Excel. Вы создаете текстовый файл, разделенный вкладками, который распознается Excel при импорте. Но это не файл Excel, и поэтому его не следует объявлять таковым.


Рейтинг:
0

Member 13618048

я пишу это

SELECT * FROM tname P WHERE 1
из-за того, что P используется позже в качестве псевдонима, например
$query1 = $query . " ORDER BY P.apply_on desc";
.