使用PHP创建动态HTML表

时间:2014-12-03 16:45:51

标签: php jquery html codeigniter

我正在尝试使用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表行和第三行,我需要附加一个


并在继续查询时创建一个新的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,但我只是在寻找逻辑方面的帮助。

如果我能帮忙澄清一下,请告诉我。

感谢您抽出宝贵时间阅读本文。任何帮助将不胜感激。

2 个答案:

答案 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
        }
    }
}