mysql进入表交替

时间:2013-12-04 13:13:16

标签: php mysql while-loop html-table

我有一个使用mysql填充的表

<?php $sql = mysqli_query($con, "SELECT * FROM itemList"); ?>

<table>
<?php while($row=mysqli_fetch_assoc($sql)){ ?>
<tr>
<td>
<?php echo $row['item'] . ": <input type=\"checkbox\" name=\"cart[]\"
      value=\"" . $row['item'] . "\">";?>
</td>
<td>
<?php echo $row['item'] . ": <input type=\"checkbox\" name=\"cart[]\" 
value=\"" . $row['item'] . "\">";?>
</td>
</tr>
<?php 
} ?>
</table>

目前,此代码将相同的数据循环到表中的两列中。我将如何将数据循环变为备用列?

例如:

<table>
  <tr>
     <td>
        item1
     </td>

     <td>
       item2
   </td>
</tr>
<tr>
    <td>
      item3
    </td>

    <td>
       item4
    </td>
</tr>
</table>

3 个答案:

答案 0 :(得分:2)

我会使用索引计数器和模运算符来检查该计数器是偶数还是不均匀。类似的东西:

$i = 1;
while (bla) {
    $i++;
    if ($i % 2 == 0) {
       // even number, col 1
    } else {
       // uneven number, col 2
    }
}

答案 1 :(得分:0)

试试这个

<?php $sql = mysqli_query($con, "SELECT * FROM itemList"); ?>

<table>
<tr>
<?php  $i=1; while($row=mysqli_fetch_assoc($sql)){ ?>

<td>
    <?php echo $row['item'] . ": <input type=\"checkbox\" name=\"cart[]\"
      value=\"" . $row['item'] . "\">";?>
</td>

<?php if($i%2 == 0){ echo "</tr><tr>";  } ?>

<?php $i++;
} ?>
</tr>
</table>

按照@OlivierH对我上面的anwser的评论的其他方式

<?php 
$rows = array(); while($row=mysqli_fetch_assoc($sql)){
 $rows[] = $row;
} 
?>

<table>
<?php $totalrows = count($rows); 
if($totalrows){ ?>
    <tr>
    <?php  $i=1; foreach($totalrows as $r){ ?>
        <td>
            <?php echo $r['item'] . ": <input type=\"checkbox\" name=\"cart[]\"
              value=\"" . $r['item'] . "\">";?>
        </td>
        <?php if($i%2 == 0 && $totalrows != $i){ echo "</tr><tr>";  } ?>
    <?php $i++; } ?>
    </tr>
<?php } ?>
</table>

答案 2 :(得分:0)

你可以使用计数并玩它:

  • 对于第一项,您会显示<tr>和您的数据
  • 对于第二项,您可以显示数据和</tr>
  • 对于第三项,您会显示<tr>和您的数据
  • ...

您可以使用%(模运算符)。它返回除法的其余部分。

示例:

echo 0%2; //0
echo 1%2; //1
echo 2%2; //0
echo 3%2; //1
echo 4%2; //0
...

您也可以使用设置为0,1,0 ......的变量进行播放。 这是代码:

$sql = mysqli_query($con, "SELECT * FROM itemList"); 
$i = 0;

echo "<table>";
while($row=mysqli_fetch_assoc($sql)){ 
    //create new line if this item is the first of the row (i == 0)
    if($i == 0){
        echo "<tr>";
    }

    echo "<td>" . $row['item'] . ": <input type=\"checkbox\" name=\"cart[]\" value=\"" . $row['item'] . "\"></td>";

    //if the item is the second of the row, close the tr and set i to 0
    if($i == 1){
        echo "</tr>";
        $i = 0;
    }
    //else, increment i 
    else{
        $i++;
    }
}
echo "</table>";