2016-07-09 2 views
0

У меня возникают проблемы с экспортом данных из базы данных MySQL с использованием PHP-скрипта, который отображает файл excel. Данные экспортируют только последнюю строку таблицы MySQL. Я порезал код, чтобы удалить все реляционные поисковые запросы (так как есть несколько запросов MySQL, из-за которых трудно читать). Я понимаю, что я переписываю свои переменные, поэтому для скрипта доступен только последний ряд выбранных, но после большого поиска я все еще не могу найти ответ (я предполагаю, что мне нужно сохранить данные в массиве, затем вызвать этот массив в коде, который экспортирует данные в виде файла excel). Вся помощь будет принята с благодарностью. Мой код (срубили версия) является:Экспорт PHP Excel показывает только последнюю строку таблицы MYsql

<?php 
    // Apply server security settings and keep cookies 
    // connecting to the server 
    // selecting the appropriate database 
    //storing and fetching user data 

$generate_query = "SELECT * FROM main_report"; 

$generate_data = mysql_query($generate_query, $link); 

while($report = mysql_fetch_array($generate_data)) 
      { 

      $reportnoout = "<td>".$report['report_number']."</td>"; 

      $incdateout = "<td>".$report['incident_time']."</td>"; 

      $siteout = "<td>".$site_data['site_name']."</td>"; 

      $deptout = "<td>".$dept_data['department_name']."</td>"; 

      $reportout = " <td>".$report['report_type']."</td>"; 

      $superout = "<td>".$staff_data5['name']."</td>"; 

      $descout = "<td>".$report['detailed_desc']."</td>"; 

// Needs some form of array declaration here maybe? 

      }  
// filename for download 
$filename = "test_data_" . date('Ymd') . ".xls";  
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$filename"); 
$test="<table><th>Report No.</th><th>Incident Date</th><th>Site</th><th>Department</th><th>Incident Type</th><th>Responsible Supervisor</th><th>Description</th><tr>"; 
$test2="$reportnoout $incdateout $siteout $deptout $reportout $superout $descout"; // This is not right either should probably be an array or not even here? 
echo $test; 
echo $test2; // This was a stop gap to at least see if some of the code worked 
exit; 
?> 

Большое спасибо заранее.

Приветствия Jase

PS Я работал этот код помощью поиска в Интернете в течение последних нескольких дней, и положил его вместе с, что до этого я никогда не работал на этом типе материала (вывод типов файлов)

+1

, что HTML-, его не первенствовать отформатированный файл –

+0

@Dagon Excel распознает HTML-теги и делает загрузку таблицы Excel, заголовки столбцов выделены жирным шрифтом с содержимое на лицевой поверхности обычного типа и столбцы также учитывают ширину символов заголовков. Я не сомневаюсь, что есть программный способ лучше выразить содержимое файла, однако на этом этапе мне просто нужно что-то, что работает, что я заменяю HTML, чтобы сделать эту работу. Предполагая, что ваш комментарий не связан с значениями переменных, но синтаксис? – Jase

+0

, вам никогда не удастся получить HTML-код и утверждать его xls, когда вы могли бы просто создать xls, чтобы начать с: http://phpexcel.codeplex.com/ –

ответ

1

Ваш код мог бы использовать много очистки, но я позволю вам понять это позже и сосредоточиться на том, чтобы он работал так, как вы намеревались.

Вы можете сделать это с помощью конкатенации .=

//start table string 
$table = "<table><tr> 
     <th>Report No.</th> 
     <th>Incident Date</th> 
     <th>Site</th> 
     <th>Department</th> 
     <th>Incident Type</th> 
     <th>Responsible Supervisor</th> 
     <th>Description</th><tr>"; 

$generate_query = "SELECT * FROM main_report"; 
$generate_data = mysql_query($generate_query, $link);  

while($report = mysql_fetch_array($generate_data)) 
{ 
    //add row to string using concatenation 
    $table .= "<tr><td>{$report['report_number']}</td> 
       <td>{$report['incident_time']}</td> 
       <td>{$site_data['site_name']}</td> 
       <td>{$dept_data['department_name']}</td> 
       <td>{$report['report_type']}</td> 
       <td>{$staff_data5['name']}</td> 
       <td>{$report['detailed_desc']}</td></tr>"; 
}  

//close table 
$table .="</table>"; 

// filename for download 
$filename = "test_data_" . date('Ymd') . ".xls";  
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$filename"); 

echo $table; 
+0

Большое спасибо, что ваш предлагаемый код работал отлично - да, конечно, мне нужно работать над очисткой моего кода (по крайней мере, это более аккуратно, чем мой сарай в данный момент :-)) - вы сэкономили мне много мучений на этой работе. – Jase

Смежные вопросы