2011-06-16 59 views
0

我正在尝试为包含景观和个人资料照片的朋友组合一个照片组合。 我有一张SQL表格,里面有照片的详细信息,包括一列说明照片是水平的还是垂直的。重新排列MySQL数据以适合每行有不同列数的4列表格(使用colspan)

表格行被分组为3: 表格的第一行显示了4张垂直图片。 第2行显示1个垂直图像,1个水平图像,其中colspan为2,然后是另一个垂直图像。 第3排显示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>"; 
?> 
+0

你应该简单地把图像放在那里并设置填充。没有需要的桌子! – Brad 2011-06-16 21:51:58

+0

您想要将c更改为0.否则,在第一张图片c为2之后,在第二张图片c为3之后,在第三张图片之后,它已经在4并且创建一个新的行。对于这个命令,原因可能在你的SQL查询中? – Dan 2011-06-16 21:56:33

+0

您所描述的内容要求数据库中的记录完全按照正确的顺序排列。你确定他们是? – jeroen 2011-06-16 21:58:17

回答

0

有几个问题:

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