2013-12-24 4 views
1

Я пытаюсь запросить базу данных mysql и отобразить данные в таблице. Теперь я хочу взять таблицу и сделать кнопку, которая позволяет экспортировать ее в файл excel. Теперь вы были в состоянии экспортировать, чтобы преуспеть, но его показ в error Notice: Undefined variable: dataЭкспорт таблицы mysql html в файл excel

Ниже мой код:

<?php 
$mysql_hostname = "localhost"; 
$mysql_user = "root"; 
$mysql_password = ""; 
$mysql_database = "export"; 
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database"); 
mysql_select_db($mysql_database, $bd) or die("Could not select database"); 

$values =mysql_query("SELECT name,email,phone,nationality,dob FROM users order by id"); 

$header = "Name" . "\t"; 
$header .= "Email" . "\t"; 
$header .= "Phone" . "\t"; 
$header .= "Nationality" . "\t"; 
$header .= "DOB" . "\t"; 

while($row = mysql_fetch_assoc($values)){ 
$row1 = array(); 


$row1[] = $row['name']; 
$row1[] = $row['email']; 
$row1[] = $row['phone']; 
$row1[] = $row['nationality']; 
$row1[] = $row['dob']; 

$data .= join("\t", $row1)."\n"; 
    } 
header("Content-type: application/x-msdownload"); 
header("Content-Disposition: attachment; filename=expot.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
print "$header\n$data"; 
exit(); 
?> 
+0

Переместить инициализацию '$ row1 = array();' за пределами цикла 'foreach' –

+0

@MarkBaker спасибо, но все значение отображается в одной строке, а не показывается один за другим – arok

+0

Затем переместите заголовки над' while 'и попытайтесь использовать встроенную функцию PHP [fputcsv()] (http://www.php.net/manual/en/function.fputcsv.php), чтобы создать ваш файл для php: // output, а не для построения все эти данные в памяти –

ответ

2

Ваш код содержит заявление:

$data .= join("\t", $row1)."\n"; 

Здесь вы конкатенации строки к существующей переменной $data. Однако такой переменной не существует. Вы должны добавить где-то в верхней части кода:

$data = ""; 

инициализировать переменную $data.

+0

спасибо, теперь ошибка не отображается, но она только беря последнее значение в таблице html, не принимая все данные – arok

+0

Вы уверены, что вы поместите '$ data =" "' вне цикла while? –

+0

Спасибо, это сработало ..... – arok

2

Потому что вы никогда не инициализировать переменную $data.

Put:

$data = ''; 

в начале кода, перед циклом в то время.

+0

спасибо, теперь ошибка не отображается, но она принимает только последнее значение в таблице html, не принимая все данные – arok

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