我试图在html页面中使用PHP显示来自MySQL表的数据,将数据包装在HTML表格中。
我在MySQL表中有11列和 x 行,其中我只需要6列就可以将所有行打印为HTML表格。我能做到的。(成功)
我的方法:
$result = mysqli_query($connect, "SELECT order_id, order_name, order_from, order_to, order_pickup, order_dropoff FROM users");
// Printing results in HTML
echo "\n";
while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr id='$line[order_id]'>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "\n";
&#13;
输出:
我的问题:
在这6列中,我希望1列名为order_id
的列为行id
的{{1}},所以现在我只想剩下5列作为 table-cell&#39; s tr
。我不希望td's
列的值为表格单元格。
答案 0 :(得分:2)
还检查$line
中的列名:
foreach ($line as $col_name => $col_value) {
if ($col_name != 'order_id') {
echo "\t\t<td>$col_value</td>\n";
}
}
答案 1 :(得分:2)
好的,有很多解决方案。通常在编写此类代码时,通常会将数据库层与模板层分开,并将信息评估到模板层。
为了您的示例,您可以选择删除foreach并单独定义单独的列值,在我看来这通常是最好的方法,因为您已经知道所有列并且可以更好地控制何时回显它们:
$result = mysqli_query($connect, "SELECT order_id, order_name, order_from, order_to, order_pickup, order_dropoff FROM users");
// Printing results in HTML
echo "\n";
while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr id='$line[order_id]'>\n";
echo "\t\t<td>$line['title']</td>\n";
echo "\t\t<td>$line['second title']</td>\n";
echo "\t</tr>\n";
}
echo "\n";
我相信用户已经提到的另一种方法是使用if 声明。您可以在数组的键上执行此操作:
$result = mysqli_query($connect, "SELECT order_id, order_name, order_from, order_to, order_pickup, order_dropoff FROM users");
// Printing results in HTML
echo "\n";
while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr id='$line[order_id]'>\n";
foreach ($line as $col_name => $col_value) {
if ($col_name === 'order_id') {
continue;
}
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "\n";
答案 2 :(得分:1)
你的解决方案很简单,你只需要检查数组键是否为order_id,如果是,则不要回应它:D
echo "\n";
while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr id='$line[order_id]'>\n";
foreach ($line as $key => $col_value) {
if ($key != 'order_id')
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "\n";
答案 3 :(得分:1)
我确定我会发布一个更好的答案,但我会发布它,看看这个想法有多简单。
我的代码的缺点是它检查每个循环语句中的if()
,增加了代码的复杂性。
基本上你设置一个bool
变量来保存每个表行的第一遍。此变量设置为false($pass_one = false
)。然后,当我们开始获取列信息时,我们将bool变量设置为true
并跳过第一个元素。在下一列迭代中,我们按照自己的意愿进行。在我们完成列集后,我们将$pass_one
更改为false并重复进入其他行。
<?php $result = mysqli_query($connect, "SELECT order_id, order_name, order_from, order_to, order_pickup, order_dropoff FROM users");
$pass_one = false; //you set it to false
// Printing results in HTML
echo "\n";
while ($line = mysqli_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr id='$line[order_id]'>\n";
foreach ($line as $col_value) {
if (!$pass_one) {
$pass_one = true; // you pass the first echo, so you set the bool to true
continue; // skip the first pass, (this statement goes to foreach() loop
}
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
$pass_one = false; // we get a new <tr> so we set the $pass_one for that loop to false
}
echo "\n";
?>