Php 从多维数组创建表
我需要生成一个html表,显示存储在数据库中的信息。我的代码读取此信息并将其放入多维数组中:Php 从多维数组创建表,php,html,mysql,arrays,Php,Html,Mysql,Arrays,我需要生成一个html表,显示存储在数据库中的信息。我的代码读取此信息并将其放入多维数组中: Array ( [1] => Array ( [FIRST_NAME] => Admin [MIDDLE_NAME] => Admin [LAST_NAME] => Admin [PHONE] => [EMAIL] => ) [2] => Array ( [FIRST_NAME] => Jad
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));
}
$fieldarray=array(“名字”、“中间名”、“姓氏”、“电话”、“电子邮件”);
maketable(“选择员工的名字、中间名字、姓氏、电话、电子邮件)”,$fieldarray);
函数maketable($query,$fieldarray){
//计算列数
$columns=count($fieldarray);
//运行查询
$result=DBGet(DBQuery($query)))或die(mysql_error());
//$itemnum=mysql\u num\u行($result);
如果(计数($result)>0{
做{
回声“”;
对于($x=0;$x<$columns;$x++){
echo“”$items[$fieldarray[$x]]。“ ”;
}
回声“ ”;
}而($items=mysql_fetch_assoc($result));
}
但这是我得到的结果:
< table >< tr >< td >< /td >< td >< /td >< td >< /td >< td >< /td >< td >< /td >< /tr >< /table >
如何解决此问题?您遇到的问题是在
$fieldarray
变量中,您使用的是“人性化”字符串,如“名字”、“电子邮件”等。从数据库返回的信息如下所示:
Array ( [FIRST_NAME] => Admin [MIDDLE_NAME] => Admin [LAST_NAME] => Admin [PHONE] => [EMAIL] => )
代码必须非常具体:
FIRST\u NAME
与FIRST NAME
不同。您遇到的问题是$fieldarray
变量中使用了“人性化”字符串,如“FIRST NAME”、“E-mail”等。从数据库返回的信息如下所示:
Array ( [FIRST_NAME] => Admin [MIDDLE_NAME] => Admin [LAST_NAME] => Admin [PHONE] => [EMAIL] => )
代码必须非常具体:
FIRST\u NAME
与FIRST NAME
不一样,您的数组键可能是DB列名,不是吗?
因此,您需要查找
First\u Name
等,而不是First\u Name
。您的数组键很可能是DB列名,不是吗?
因此,您需要查找
First_Name
等,而不是First_Name
等。2unco和B-and-p状态都是正确的,您对数据库字段使用了错误的assoc键。然而,您的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;
什么2unco和B-and-p状态都是正确的,您对数据库字段使用了错误的assoc键。但是,您的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;