PHP - 循环乘法元素

时间:2014-03-21 18:56:53

标签: php mysql database loops

我在列表中使用循环图像,但现在我想循环更多元素 - 即标题和描述。我该怎么做?

代码

mysql_select_db($database_connection, $connection);
$query_img = "SELECT imgname FROM img ORDER BY imgname";
$img = mysql_query($query_img, $connection) or die(mysql_error());
$row_img = mysql_fetch_assoc($img);
$totalRows_img = mysql_num_rows($img);

$query_post = "SELECT title, description FROM post";
$post = mysql_query($query_post, $connection) or die(mysql_error());
$row_post = mysql_fetch_assoc($post);
$totalRows_post = mysql_num_rows($post);


<ul>
    <?php
        while($row_img = mysql_fetch_assoc($img)) {
    ?>
        <li>
            <img src="images/<?php echo $row_img['imgname']; ?>">
            <h3><?php echo $row_post['title']; ?></h3>
            <p><?php echo $row_post['description']; ?></p>
        </li>
    <?php
    }
    ?>   

</ul>

2 个答案:

答案 0 :(得分:2)

如果有很多标题,每张照片的描述只是在上面的代码中添加了另一个:

while($row_post = mysql_fetch_assoc($post)) {

echo "<h3>".$row_post['title']."</h3>";
echo "<p>".$row_post['description']."</p>";

}

我无法解决问题所在...... 如果它只是一个标题,那么desc。对于每张照片而不是更好地调整您的SQL查询以立即获取所有这些。

这就是您所需要的:

SELECT * FROM image INNER JOIN post ON post.postimage = image.imagename;

从中创建视图:

CREATE VIEW all_you_need AS <the_one_above>

你可以在PHP上轻松使用它:

SELECT * FROM all_you_need;

还有一条建议: 了解MVC术语的含义,有什么好处。您可以从头开始以自己的方式构建应用程序,或者至少为View使用一些东西(例如Smarty)。

答案 1 :(得分:1)

您可以为与post数据关联的行创建第二个while循环,但我认为您真正需要的(除了迁移到PDO或至少是mysqli方法之外)是在一个查询中一起获取数据。 / p>

此刻,您似乎正在尝试使用每个标题和说明来显示图像;如果将数据合并到一个查询中,那么您可以获得更好的结果,这样您就可以同时迭代这两个数据集。否则,您就会希望自己拥有正确的标题和说明,并使用您正在服务的图片名称。

在不了解底层数据结构的情况下,我不确定您需要的确切查询,但可能基于JOIN语法。