我需要生成一个html表,显示存储在数据库中的信息。我的代码读取此信息并将其放在一个多维数组中:
Array ( [1] => Array (
[FIRST_NAME] => Admin
[MIDDLE_NAME] => Admin
[LAST_NAME] => Admin
[PHONE] =>
[EMAIL] =>
) [2] => Array (
[FIRST_NAME] => Jad
[MIDDLE_NAME] =>
[LAST_NAME] => Jad
[PHONE] => 961558777
[EMAIL] => jad.jad@gmail.com
) [3] => Array (
[FIRST_NAME] => Sara
[MIDDLE_NAME] =>
[LAST_NAME] => Sara
[PHONE] =>
[EMAIL] =>
) )
我需要将此数组显示为包含5列的表:名字,中间名,姓氏,电话,电子邮件
我试过了:
$fieldarray = array("First Name","Middle Name","Last Name", "Phone", "E-mail");
maketable("SELECT first_name, middle_name, last_name, phone, email FROM staff", $fieldarray);
function maketable($query, $fieldarray){
//count number of columns
$columns = count($fieldarray);
//run the query
$result = DBGet(DBQuery(($query))) or die(mysql_error()) ;
// $itemnum = mysql_num_rows($result);
if(count($result) > 0){
do {
echo "< tr >" ;
for($x = 0; $x < $columns; $x++) {
echo "< td >" .$items[$fieldarray[$x]]. "< /td >" ;
}
echo "< /tr >" ;
} while($items = mysql_fetch_assoc($result));
}
但这是我得到的结果:
< table >< tr >< td >< /td >< td >< /td >< td >< /td >< td >< /td >< td >< /td >< /tr >< /table >
我该如何解决这个问题?
答案 0 :(得分:2)
您遇到的问题出现在$fieldarray
变量中,您使用的是“人性化”字符串,如“名字”,“电子邮件”等。从数据库返回的信息如下所示:
Array ( [FIRST_NAME] => Admin [MIDDLE_NAME] => Admin [LAST_NAME] => Admin [PHONE] => [EMAIL] => )
您必须在代码中非常具体:FIRST_NAME
与First Name
不同。
答案 1 :(得分:2)
可能你的数组键是DB列名,不是吗?
因此,您需要寻找First Name
等
first_name
答案 2 :(得分:1)
2unco和B-and-P状态都是正确的,您使用了错误的关键字作为数据库字段。但是,您还有另一个围绕do / while循环的问题 - 事实上,在第一次迭代中$items
将不会被设置。当PHP执行时,这本身可能会导致错误/警告,因为您尝试从$items
读取的密钥将不存在。
要纠正这两个问题,您可以尝试以下方法:
<?php
/// build a look up for both field names and nice equivalents
$fieldarray = array(
'first_name' => 'First Name',
'middle_name' => 'Middle Name',
'last_name' => 'Last Name',
'phone' => 'Phone',
'email' => 'E-mail'
);
function maketable($query, $fieldarray) {
//count number of columns
$columns = count($fieldarray);
//run the query
$result = DBGet(DBQuery(($query))) or die(mysql_error());
$table = '';
if ($result) {
while( ($items = mysql_fetch_assoc($result)) ) {
/// build the table into a string, makes for easier function usage
$table .= '<tr>';
foreach ( $fieldarray as $field_name => $field_nice ) {
$table .= '<td>' .$items[$field_name]. '</td>';
}
$table .= '</tr>';
} ;
}
/// only return markup if we found rows
return $table ? '<table>' . $table . '</table>' : '';
}
/// I've switched all quotes to singular, as it's best to reserve double
/// quotes for strings you wish parsed for $variables.
$table = maketable('SELECT first_name, middle_name, last_name, phone, email '.
'FROM staff', $fieldarray);
echo $table;
作为上述内容的扩展,您可以通过添加生成表头的功能(即<th>
来构建第一行值来改进代码 - 您可以使用$field_nice
变量执行此操作
我需要生成一个html表,显示存储在数据库中的信息。我的代码读取此信息并将其放在多维数组中
您粘贴的实际代码不构建多维数组,也不能从一个数组中运行;它直接从数据库中获取一个assoc数组。这就是为什么我已经构建了代码来处理这个问题。如果需要从多维数组生成表 - 您需要更改maketable
函数以接受该数组作为其第一个参数,并从内部删除数据库处理代码。只需稍加修改,您应该可以使它适用于多维数组。