我正试图为一位朋友整理一个由风景照片和个人资料照片组成的照片组合。我有一个SQL表,里面有照片的详细信息,包括一列说明照片是水平的还是垂直的。
表格行分为3行:表格的第一行显示了4张垂直图片。第2行显示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'])." ".stripslashes($row_photos['photo_type'])."</td>";
}
elseif ($row_photos['photo_type'] == "Horizontal") {
echo "<td colspan="2">".stripslashes($row_photos['photo_file'])." ".stripslashes($row_photos['photo_type'])."</td>";
$c++;
}
if ($c == $cols) {
echo "</tr><tr>";
$c = 1;
} else { $c++; }
}
echo "</tr>" ;
echo "</table>";
?>
有几个问题:
- @Dan是对的,您需要将
$c
更改为0,或者使用>
而不是==
- 您在每个循环中将2添加到
$c
,而不是1,在if
语句之前添加一次,在else
语句中添加一次 - 如果数据库中记录的顺序不完全正确,则循环将失败。我建议循环浏览您的所有记录一次,生成2个阵列,一个带有水平照片,一个带垂直照片。然后你可以调整你的循环,只需从合适的数组中选择一张照片