Добрый день.
Хочу экспортировать данные из таблицы в xls файл.
Нашёл класс для экспорта в xls, данные успешно формируются в xls файл, но формируется только одна запись, хотя в таблице их сотни.
Вот скрипт с таблицей, данные выводятся из БД.
<?php
session_name("students");
session_start();
?>
<table bgcolor="#FFFFF0" border="1" cellpadding="3" cellspacing="0" width="100%" ">
<tr bgcolor="#FAEBD7" align="center">
<td><b>Номер зачетки</td>
<td><b>Фамилия</td>
<td><b>Имя</td>
<td><b>Отчество</td>
</tr>
<?php
include("xls.php");
include("connect.php");
include("index.php");
if(!isset($_SESSION['id'])) {
exit("Необходимо авторизироваться!!!");
}
$st_group = $_POST['st_group'];
$sql_add = "SELECT * FROM students WHERE st_group='$st_group'";
$result = mysql_query($sql_add);
while($arr = mysql_fetch_assoc($result))
{
$num_zach = $arr[num_zach];
$family = $arr[family];
$name = $arr[name];
$otch = $arr[otch];
$st_group = $arr[st_group];
echo "
<tr>
<td>  $num_zach</td>
<td>  $family </td>
<td>  $name </td>
<td>  $otch </td>
</tr>";
$xls = new XLS();
$xls->add_cell(0,0,"Номер зачетки");
$xls->add_cell(1,0,"Фамилия");
$xls->add_cell(2,0,"Группа");
$xls->add_cell(0,1,$arr[num_zach]);
$xls->add_cell(1,1,$arr[family]);
$xls->add_cell(2,1,$arr[st_group]);
}
$xls->save_file('file.xls');
?>
</table>
Вот класс для формирования xls. Взят на просторах сети...
<?
/*
+-----------------------------------+
| |
| Microsoft Excel v5 file writer |
| By Ali Imran ali@gimptalk.com |
| |
| Copyrights reserverd: |
| www.swish-db.com |
| |
+-----------------------------------+
*/
#Microsoft Excel 5 Header and End Of File Binary Representation
define("XLSFile_Header", pack("s*",2057,8,0,0,0,0));
define("XLSFile_End", pack("s*",10,0));
#Following function return code for an Excel Worksheet Cell
function get_xlscell_code($x,$y,$cell_txt) {
$ret = pack("s*",516,strlen($cell_txt)+8,$y,$x,0,strlen($cell_txt));
$ret .= $cell_txt;
return $ret;
}
class XLS {
var $_final_bytes = "";
var $_file_name = 'text.xls';
function XLS() { }
function add_cell($COLUMN,$ROW,$cell_text) {
$this->_final_bytes .= get_xlscell_code($COLUMN,$ROW,$cell_text);
}
function xls_bytes() {
return XLSFile_Header.$this->_final_bytes.XLSFile_End;
}
function save_file($fname='',$_overwrite=true) {
$fname = $fname=='' ? $this->_file_name : $fname;
$f = @fopen($fname,"r");
if($f and !$_overwrite) {
@fclose($f);
return false;
}
@fclose($f);
$f = @fopen($fname,"w");
if(!$f) return false;
$bytes = $this->xls_bytes();
if(!@fwrite($f,$bytes)) return false;
@fclose($f);
return true;
}
}
?>
Подскажите пожалуйста в чем проблема?
UPDATE:
print_r($family) или любая другая переменная выводит только одну запись. Почему тогда в таблице формируются все записи?