Php 将数据库中的值显示到html表中

Php 将数据库中的值显示到html表中,php,html,Php,Html,我想将数据库(类别列表)中的值显示到一个包含2列和x行数的表中 我希望我的网页显示如下: Apes Cats Apples Cherries Bats Tigers Berries Zebras 猿猫 苹果和樱桃 蝙蝠老虎 浆果斑马 而不是 Apes Apples Bats Bears Cats Cherries Tigers Zebras 猿猴苹果 蝙蝠熊 猫樱桃 老虎斑马 以下是我目前的代码: <table border="0" bordercolor="#FFCC00" style=

我想将数据库(类别列表)中的值显示到一个包含2列和x行数的表中

我希望我的网页显示如下:

Apes Cats Apples Cherries Bats Tigers Berries Zebras 猿猫 苹果和樱桃 蝙蝠老虎 浆果斑马 而不是

Apes Apples Bats Bears Cats Cherries Tigers Zebras 猿猴苹果 蝙蝠熊 猫樱桃 老虎斑马 以下是我目前的代码:

<table border="0" bordercolor="#FFCC00" style="background-color:#FFFFCC" width="400" cellpadding="3" cellspacing="3">
    <?php
        $query = "SELECT * FROM category ORDER BY cat_name";
        $data = mysqli_query($dbc, $query);

        while ($category = mysqli_fetch_array($data)) {
    ?>
    <tr>
        <td><?php echo $category['cat_name'] ?></td>
    </tr>
    <?php } ?>
</table>

您可以向循环中添加另一个变量,比如$i,然后按如下方式递增:

<table border="0" bordercolor="#FFCC00" style="background-color:#FFFFCC" width="400" cellpadding="3" cellspacing="3">
        <?php
        $query = "SELECT * FROM category ORDER BY cat_name";
        $data = mysqli_query($dbc, $query);

        $i=1;

        while ($category = $data->fetch_row()) {
        ?>
            <tr>
                <td><?php echo $i; ?></td>   
                <td><?php echo $category[1] ?></td>
            </tr>   
        <?php
        $i++;
        } ?>
    </table>


编辑:更新以获取每个结果的行数据,并假设cat_name是数组中的第二项,即$category[1]。

如果它不必是表,并且您可以使用支持CSS 3的浏览器,那么您可以使用CSS列:

否则,您需要首先对结果进行排序(未经测试-PHP不是我的强项):


以下是基本思路:

通过num_行获得数据的计数 除以二。 现在,除法的结果将是行数

输出行x和x+num行的循环回显值。例如,第1行的输出为:

<tr><td>$row[val1][data]</td><td>$row[val5][data]</td></tr>
当递增变量=num_行时,循环应该结束。从那开始应该很简单。祝你好运。

试试这个(不过还没有测试过):

<?php
$query = "SELECT * FROM category ORDER BY cat_name";
$data = mysqli_query($dbc, $query);
$midpoint = ceil($data->num_rows / 2);
$i=0;

while ($category = $data->fetch_array()) {
  if ($i < $midpoint)
    $left[$i] = "<td>" . $category['cat_name'] . "</td>";
  else 
    $right[$i - $midpoint] = "<td>" . $category['cat_name'] . "</td>";
  $i++;
}

print "<table>";
for ($j=0; $j < $i; $j++)
{
    print "<tr>" . $left[$j];
    if (array_key_exists($j, $right)) print $right[$j];
    print "</tr>";     
}
print "</table>";


哎呀。我应该指出,我确实不希望它看起来像数字,但我希望数据库中的值(类别名称)按顺序排列。好吧,我已经更新了原始答案。这假设您的表结构是cat_id,cat_name。希望这更接近目标。不是,对不起,不清楚。我更新了我的问题,希望它能让你理解我现在想问的问题。你是否有一个预先确定的每列你想要的条目数,即在你的例子中显示四个条目。如果是这样的话,那么您可以看看utlising array_chunk()。这会将数组拆分为多个数组,然后可以循环使用。否则,您可以计算数组中的条目数,并在需要开始下一列时工作。如果查询结果没有偶数行,这不会引发“未定义索引”通知吗?是的,我添加了检查key exist。很有趣的是,看看在基本相同的逻辑上可以采取多少种方法。问得好+1.
val 1  |  val 5
val 2  |  val 6
val 3  |  val 7
val 4  |  val 8
<?php
$query = "SELECT * FROM category ORDER BY cat_name";
$data = mysqli_query($dbc, $query);
$midpoint = ceil($data->num_rows / 2);
$i=0;

while ($category = $data->fetch_array()) {
  if ($i < $midpoint)
    $left[$i] = "<td>" . $category['cat_name'] . "</td>";
  else 
    $right[$i - $midpoint] = "<td>" . $category['cat_name'] . "</td>";
  $i++;
}

print "<table>";
for ($j=0; $j < $i; $j++)
{
    print "<tr>" . $left[$j];
    if (array_key_exists($j, $right)) print $right[$j];
    print "</tr>";     
}
print "</table>";
<table border="0" bordercolor="#FFCC00" style="background-color:#FFFFCC" width="400" cellpadding="3" cellspacing="3">
    <?php
    $query = "SELECT * FROM category ORDER BY cat_name";
    $data = mysqli_query($dbc, $query);

    # Calculate total rows and half rows, rounded up
    $full_row_count = mysqli_num_rows($data);
    $half_row_count = ceil($full_row_count / 2);

    $i = 0;
    while ($i <= $half_row_count) {
        # Set the result pointer for first column ...
        mysqli_data_seek($data, $i);
        $category_1 = mysqli_fetch_array($data);

        # ... then calculate the offset for the second column ...
        $col_2_offset = $i + $half_row_count;

        # .. and make sure it's not larger than total rows - 1
        if ($col_2_offset <= $full_row_count - 1) {
            mysqli_data_seek($data, $col_2_offset);
            $category_2 = mysqli_fetch_array($data);
        } else {
            $category_2 = array('cat_name' => '');
        }
    ?>
    <tr>    
        <td><?php echo $category_1['cat_name'] ?></td>
        <td><?php echo $category_2['cat_name'] ?></td>
    </tr>
    <?php
        $i++;
    }
    ?>
</table>