如何创建显示图像的订单? (MySQL + PHP问题)

时间:2011-03-22 21:08:27

标签: php mysql

现在,我的所有图像基本上都会同时插入到我的页面上(或者显示出来)。如何创建订单,以便我的图像显示为左,从左到右,从上到下的一个?

我正在使用MySQL来存储图像名称。那么也许我应该通过升序ID创建一个订单,将图像名称处理到我的php上?我不知道,任何建议都会受到赞赏。

这是一小段代码来说明我的意思。这是图像代码循环:

echo '<img src="https://s3.amazonaws.com/pictures/' . $objResult["Image"] . '.png" />

编辑: 以下是更多上下文的代码:

<html>
<body>
    <?php
        $objConnect = mysql_connect("localhost","root","") or die(mysql_error());
        $objDB = mysql_select_db("dfvdfv");
        $strSQL = "SELECT * FROM images";
        if (!isset($_GET['Page']))  $_GET['Page']='0';
        $objQuery = mysql_query($strSQL);
        $Num_Rows = mysql_num_rows($objQuery);
        $Per_Page = 16;   // Per Page
        $Page = $_GET["Page"];
        if(!$_GET["Page"])
        {
            $Page=1;
        }
        $Prev_Page = $Page-1;
        $Next_Page = $Page+1;
        $Page_Start = (($Per_Page*$Page)-$Per_Page);
        if($Num_Rows<=$Per_Page)
        {
            $Num_Pages =1;
        }
        else if(($Num_Rows % $Per_Page)==0)
        {
            $Num_Pages =($Num_Rows/$Per_Page) ;
        }
        else
        {
            $Num_Pages =($Num_Rows/$Per_Page)+1;
            $Num_Pages = (int)$Num_Pages;
        }

        $strSQL .=" order  by ImagesID ASC LIMIT $Page_Start , $Per_Page";
        $objQuery  = mysql_query($strSQL);
$cell = 0;
echo '<table border="1" cellpadding="2" cellspacing="1"><tr>';
while($objResult = mysql_fetch_array($objQuery))
{
  if($cell % 4 == 0) {
    echo '</tr><tr>';
  }

if($cell == 2) {
    echo '<td>RESERVED</td>';
} elseif ($cell == 3) {
    echo '<td>The other cell</td>';
} else {
    echo '
    <td><img src="https://s3.amazonaws.com/images/' . $objResult["Image"] . '" />' .
    $objResult["ImagesName"] . '</td>'; }
    $cell++;
}
echo '</tr></table>';
    ?>

        <br />
view more:
<?php
        if($Prev_Page)
        {
            echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$Prev_Page'>prev</a> ";
        }
            {
                echo "|";
        }
        if($Page!=$Num_Pages)
        {
            echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$Next_Page'>next</a> ";
        }
        ?>
<?php
mysql_close($objConnect);
?>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

假设您通过单个循环迭代来编写html,因此可以通过将css float属性设置为left来轻松完成图像,将图像放在具有您选择大小的div容器中,因此图像行如果他们到达正确的边界将会破裂。这将导致从左到右构建图像。

嵌入代码段的代码示例:

// open container
echo '<div style="width:\'500px\'">';

foreach ($results as $key => $objResult) {
    echo '<img style="float:left;" src="https://s3.amazonaws.com/pictures/' . $objResult["Picture"] . '.png" />';
}
// close container
echo '</div>';

我建议使用样式表而不是直接设置样式属性,但为了简化示例,它就是这样。

评论中第二个问题的示例

if ($objResult["description"]) {
    $imageTitle = $objResult["description"];
} else {        
    $imageTitle = $objResult["number"];
}       
echo 
    '<td>'.
        '<img src="https://s3.amazonaws.com/images/' . $objResult["Image"] . '" />' .
        $imageTitle . 
    '</td>'; 

答案 1 :(得分:1)

如果要更改图像的显示顺序,请将sort_order列添加到数据库并在其上添加索引。添加图片时,请增加sort_order。我更喜欢增加10,所以我有空间在其他人之间移动图像。

从数据库中选择时,请确保ORDER BY sort_order