繁体   English   中英

重新排列mysql数据以适合4列表,其中每行具有不同的列数(使用colspan)

[英]Rearranging mysql data to fit a 4 column table where each row has a different number of columns (using colspan)

我正在尝试为一个由风景和个人资料照片组成的朋友整理一个照片集。 我有一个SQL表,其中包含照片详细信息,其中包括一列,说明照片是水平的还是垂直的。

表格行分为3:表格的第一行,显示4张垂直图片。 第二行显示1张垂直图片,1张水平差为2的水平图片,然后是另一张垂直图片。 第三行显示4张垂直图片。

根据需要重复上述模式。

我可以使用以下代码将表格限制为4列,并为水平照片添加一个colspan,但是顺序不正确-也会错过第一条记录。

任何帮助,将不胜感激!

<?php
$cols = 4; // number of columns
$c = 1;
echo "<table border=1>";
echo "<tr>";
while ($row_photos = mysql_fetch_assoc($photos)) {
    if ($row_photos['photo_type'] == "Vertical") {
    echo "<td>".stripslashes($row_photos['photo_file'])."&nbsp;".stripslashes($row_photos['photo_type'])."</td>";
    }
    elseif ($row_photos['photo_type'] == "Horizontal") {
    echo "<td colspan=\"2\">".stripslashes($row_photos['photo_file'])."&nbsp;".stripslashes($row_photos['photo_type'])."</td>";
    $c++;
    }
    if ($c == $cols) {
        echo "</tr><tr>";
        $c = 1;
    } else { $c++; }
}
echo "</tr>" ;
echo "</table>";
?>

有几个问题:

  1. @Dan是正确的,您需要将$c更改$c 0或使用>而不是==
  2. 您在每个循环中将$c加2而不是加1,一次在if语句之前,一次在else语句中;
  3. 如果数据库中记录的顺序不正确,则循环将失败。 我建议您遍历所有记录一次,以生成2个数组,一个包含水平照片,一个包含垂直照片。 然后,您可以调整循环并仅从适当的阵列中选择一张照片。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM