【问题标题】:How to display SQL result in two rows (unlimited columns)?如何在两行(无限列)中显示 SQL 结果?
【发布时间】:2014-02-16 21:16:49
【问题描述】:

我需要像这样显示来自 MySQL 的图片:

-------|-------|-------|-------|
 Pic 1 | Pic 2 | Pic 3 | Pic 4 |
-------|-------|-------|-------| ----> there can be more then 4 this way>
 Pic 5 | Pic 7 | Pic 8 | Pic 9 |
-------|-------|-------|-------|

不能超过两行,但右侧可以有无限数量的列。

我认为我需要使用 foreach 循环。有人有可以做到这一点的代码吗?

到目前为止我的代码:

 if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT title FROM donuts");
while ($row = mysqli_fetch_assoc($result)) { 

for ($x=0; $x<=2; $x++)
{
    if($x==0) 
    {
    echo "<tr>";  
    }
    else
    {
    echo "<td>".$row['title']."</td>";
    $x++;
    if($x==1) {
    echo "</tr>";
    }

        } 
    }
}

我得到了什么

-------|
pic 1  |
-------|
-------|
pic 2  |
-------|
-------|
pic 3  |
-------|
-------|
pic 4  |
-------|
-------|
pic 5  |
-------|
-------|
pic 6  |
-------|

【问题讨论】:

  • @user3236300,我已经为您格式化了代码,因为您是 SO 新手。所以下一步是运行你的代码,如果你认为它是相关的,发布结果(在你的问题中),并告诉我们它与你想要得到的有什么不同,(可能会抛出一些猜测你认为问题可能是什么)PS欢迎来到 SO :)
  • 您需要做的是计算出结果集中有多少项目,然后将其除以 2。然后打印出表格的开头部分。遍历结果集,计算你打印了多少;当您在第一步中获得值时,打印出关闭表行并打开一个新行。循环浏览其余图片,然后打印表格的最后部分。

标签: php mysql html-table


【解决方案1】:

此代码将根据结果集的数量自动计算列的数量。并将它们分两行输出。

$result = array ("Pic 1","Pic 2","Pic 3","Pic 4","Pic 5","Pic 6","Pic 7","Pic 8" );

$rows = 2; // define number of rows
$cols = ceil(count($result)/$rows);// define number of columns

echo "<table border='1'>";
$i=0; 
for($tr=1;$tr<=$rows;$tr++){

    echo "<tr>";
        for($td=1;$td<=$cols;$td++){
                            if (isset($result[$i])) {   
                                 echo "<td>".$result[$i]."</td>";
                                 $i++; 
                            }
        }
    echo "</tr>";

}

echo "</table>"; 
/*
OUTPUT:

-------|-------|-------|-------|
 Pic 1 | Pic 2 | Pic 3 | Pic 4 |
-------|-------|-------|-------| 
 Pic 5 | Pic 6 | Pic 7 | Pic 8 |
-------|-------|-------|-------|

*/

【讨论】:

  • 这是我现在遇到的问题 致命错误:无法在第 39 行的 C:\xampp\htdocs\lakeside\index.php 中使用 mysqli_result 类型的对象作为数组 $result = mysqli_query( $con,"从甜甜圈中选择标题");而($data = mysqli_fetch_assoc($result)){ $result[] = $data; } $结果=$结果; $行 = 2; $cols = ceil(count($result)/$rows);回声“”; $i=0; for($tr=1;$tr"; for($td=1;$td".$result[$i]." "; $i++; } } 回声“”; } 回声“”;
  • @user3236300 您得到一个查询结果为“对象”并试图将其作为“数组”处理。 stackoverflow 中有很多很好的答案可以解决这个问题。例如检查这个:stackoverflow.com/a/16525482/3235793 ...另外最好检查示例“如何使用 mysqli 查询并处理结果集”
  • 这就是我现在得到的!....作为测试,我只是将文本显示为图像,所以现在它在每个框中放置一个字母,但它只有 2 个(即 $ rows=2) $result = mysqli_query($con,"SELECT title FROM donuts"); $行 = 2; $cols = ceil(count($result)/$rows); $row = mysqli_fetch_array($result);回声 $result=$row['title'];回声“”; $i=0; for($tr=1;$tr"; for($td=1;$td".$result[$i]." "; $i++; } } 回声“”; } 回声“”;
  • 很难阅读您的代码。据我了解,在这段代码 (echo $result = $row['title'];) 之后,您的结果集不再是数组。您可以从数组的一项中将其设为一个简单的变量。这与您的主要问题无关。打开新问题并询问有关处理 mysqli 结果集的问题。你不知道并且需要关于工作 mysqli 结果集的帮助。另外,我建议阅读有关 mysqli 和结果集的基本示例。你的错误是非常基本的。
猜你喜欢
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多