在行中显示图像

时间:2013-12-10 18:31:42

标签: php mysql

我有这个代码以5行显示我的图像但由于某种原因,代码在第一行的末尾添加了一个图像。

此代码是否有错误?如果没有,我该如何更改它以停止在第一行的末尾添加额外的图像。

代码:

$query = mysql_query("SELECT * FROM gallery WHERE gallery_number='$gallery_number'");

echo '<table width="960">';
$i = 0; //first, i set a counter 
while($fetch = mysql_fetch_assoc($query)){
//counter is zero then we are start new row  
    if ($i==0){
        echo '<tr>';
    }
    //here we creating normal cells <td></td>
    $image_name = $fetch['image_name'];
    $image_location = $fetch['image_location'];
    echo '<td>'.'<img src="'.$image_location.'" alt="'.$image_name.'"/>'.'</td>';   
    //there is a magic - if our counter is greater then 5 we set counter to zero and close tr tag  
    if ($i>5){
        $i=0;
        echo '</tr>';
    };  
    $i++; //$i = $i + 1 - counter + 1
}
echo '</table>';

3 个答案:

答案 0 :(得分:1)

您使用$i开始0计数,因此,对于您的检查,它将返回6个结果。

if ($i>5){
    $i=0;
    echo '</tr>';
};

那应该是这样的:

if ($i>4){
    $i=0;
    echo '</tr>';
};

或者您可以将$i计数器更改为从1开始,然后重置为1

答案 1 :(得分:1)

你没有关闭TR。只有当$ i达到5时才关闭TR,并且您也不会打开新的TR。在浏览器中检查结果(Ctrl-U)。

您的程序应包含以下内容:

if ($i > 5) {
  echo("</tr><tr>");
  $i = 0;
}

关闭整行并打开一个新行。此外,您应该在循环之前打开TR,并在循环之后关闭。 (高级任务:消除空TR对。)

答案 2 :(得分:0)

由于几个原因,此代码无效。

首先,考虑一下您实际创建<td>的次数。您可以在$i处开始计数器0。然后,您只需在到达6后重置它。你循环次数太多了。

其次,在增加计数器的位置,您只能创建1 <tr>。这是因为您将计数器重置为0。然后立即将其增加到1.这将阻止创建下一个<tr>