我正在尝试使用PHP查询数据库时创建动态html表。我在理解如何为它添加两个不同的循环时遇到一些困难,以确保正确生成我想创建的表。
<table><tr>
<td>$ID and $ITEM_NAME</td>
<td>$ID and $ITEM_NAME</td>
</tr>
<tr>
<td>$ID and $ITEM_NAME</td>
<td>$ID and $ITEM_NAME</td>
</tr>
<tr>
<td>$ID and $ITEM_NAME</td>
<td>$ID and $ITEM_NAME</td>
</tr></table>
<hr>
<table><tr>
<td>$ID and $ITEM_NAME</td>
<td>$ID and $ITEM_NAME</td>
</tr>
<tr>
<td>$ID and $ITEM_NAME</td>
<td>$ID and $ITEM_NAME</td>
</tr>
<tr>
<td>$ID and $ITEM_NAME</td>
<td>$ID and $ITEM_NAME</td>
</tr></table>
<hr>
正如您所看到的,我必须将两行信息附加到一个HTML表行和第三行,我需要附加一个
目前我的PHP代码看起来像这样。
foreach($item_ID as $x => $x_value) {
$sql = "SELECT item_name FROM item_table WHERE id = '$x_value'";
$query = $this -> db -> query($sql);
foreach($query->result() as $row){
$item_name = $row->item_name;
}
$html_output .= '<tr><td>';
$html_output .= $x_value. " ".$item_name;
$html_output .= '</td>';
//Not sure how to proceed with closing the rows and opening new one on 3rd query item?
}
请注意我使用的是Codeigniter,但我只是在寻找逻辑方面的帮助。
如果我能帮忙澄清一下,请告诉我。
感谢您抽出宝贵时间阅读本文。任何帮助将不胜感激。
答案 0 :(得分:1)
首先,只做一个查询:
$sql = "SELECT id, item_name FROM item_table WHERE id IN ('" . implode("', '", $item_ID) ."')";
$query = $this -> db -> query($sql);
设置计数器
$i = 1;
然后启动你的表格代码
$html_output .= '<table>';
现在遍历结果,创建行并查找该计数器
foreach($query->result() as $row){
if ($i % 2 == 1) {
$html_output .= '<tr>';
}
$html_output .= '<td>' . $row->id .' and' . $row->item_name . '</td>';
if ($i % 2 == 0) {
$html_output .= '</tr>';
}
if ($i % 6 == 0) {
$html_output .= '</table><hr><table>';
}
$i++;
}
$i % 2 == 1
部分在每个奇数项目(1,3,5,...)之前开始一个新的表格行。
$i % 2 == 0
部分在每个偶数项(2,4,6,...)之后结束表格行。
$i % 6 == 0
部分在每个第三行之后添加一行(实际上在每个第六个项目之后,因为每行有两个项目在三行之后)。
最后关闭桌子但首先检查我们是否有偶数项目。如果没有,请添加一个空表格单元格。
if ($i % 2 == 1) {
$html_output .= '<td></td></tr>';
}
$html_output .= '</table>';
答案 1 :(得分:0)
换言之,听起来您想要创建一个包含每个奇数行的新表。此外,您希望将表与HR标记分开。
$i = 0; //initialize as 0 rows
foreach($item_ID as $x => $x_value) {
$sql = "SELECT item_name FROM item_table WHERE id = '$x_value'";
$query = $this -> db -> query($sql);
foreach($query->result() as $row){
$item_name = $row->item_name;
$row_output = '<tr><td>';
$row_output .= $x_value. " ".$item_name;
$row_output .= '</td>';
//presumably you would close the row here too, unless you have more table cells you aren't showing us
$i++;//we have a row, so increment
if ( !($i % 2) ) { // if this has a remainder, then the current row counter is odd
if ( $i != 1 ) {
//beginning of a table that isn't the first table, add the hr
$html_output .= '<hr>';
}
$html_output .= '<table>'; // open table
$html_output .= $row_output;
} else { //this is an even numbered row, the last row of the table
$html_output .= $row_output;
$html_output .= '</table>'; // close table
}
}
}