使用PHP / MySQL将信息插入DIV

时间:2012-08-11 23:11:26

标签: php mysql select

好的,我想要实现的是使用PHP和MySQL数据库的“新闻源”类型。我有数据库和表设置,以及将信息插入数据库的CMS设置,并使用SELECT语句成功地将表的各个行调用到我的HTML布局中。

现在,我要做的是拥有一个主页,其中包含12个div,每个div是一个链接到单个帖子页面的图像,并以DESC顺序从我的表中动态生成。这样,最新的12个设计显示在主页上。

然后,我希望实现相同类型的事情,除了在按类别排序的页面上,我假设将通过在我的SELECT语句中添加WHERE category = categoryname来完成。只是希望有更多知识的人可以给我一些指导如何继续这个。

这是我的HTML(我在链接和img src中插入需要动态生成):

/* Other relevant Code */
<div class="homeContent">
    <div class="newsItems">
        <div class="newsItem1">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem2">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem3">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem4">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem5">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem6">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem7">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem8">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem9">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem10">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem11">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
        <div class="newsItem12">
            <a href="**Needs to be dynamically generated**"><img src="**Needs to be dynamically generated**" alt="" class="newsItem" /></a>
        </div>
    </div>
</div>

我对这部分的PHP并没有太深入,因为我不确定要走哪条路,而且我慢慢了解到如果你选择错误的方向,那么通常需要重新开始。在此先感谢您的帮助!

Long Story Short,如何使用PHP将img src和链接从MySQL表中动态生成到这些预定义的DIV中,并使它们处于DESC顺序?

2 个答案:

答案 0 :(得分:1)

以下代码将从您的数据库中获取数据并显示新的<div>,链接和图片。

Image.php:

<?php
$query = "SELECT id, link, image FROM images ORDER BY id DESC";
?>

<html>
   <body>
      <?php while($row = mysql_fetch_assoc($query)): ?>
          <div class="NewsItem<?php echo $row['id']; ?>">
              <a href="<?php echo $row['link']; ?>"><img src="<?php echo $row['image']; ?>" alt="" class="newsItem" /></a>
          </div>
      <?php endwhile; ?>
   </body>
</html>

这假设您有一个包含以下列的表:

  • ID(AUTO INCREMENT)INT
  • image TINYTEXT - 图片文件的网址
  • link TINYTEXT - 指向您希望链接前往的位置。

答案 1 :(得分:1)

这个答案假定您有以下内容:

  1. PHP中的MySQL连接(此处存储在$sql变量中)。
  2. MySQL表格中的
  3. image_srcurlcreated_at列(我们称之为表my_table)。

  4. 查询一切

    首先,让我们回顾一下这个问题。

    我们希望同时获取所有12行的所有数据,因此我们不必多次查询。我们还希望以递减的方式排序所有内容,这是created_at发挥作用的地方。

    看起来像这样:

    SELECT m.image_src, m.url, m.created_at
    FROM my_table AS m
    ORDER BY m.created_at DESC
    LIMIT 12
    

    让我们将此查询存储在变量中。我们会简单地称之为$query

    $query = /* The query we just wrote above */
    


    显示结果

    现在我们只需要弄清楚如何让结果看起来不错。我假设你知道如何运行查询,看看你是如何管理它的。

    查看您的示例,我们希望每个结果都在其自己的div元素中,并具有唯一的class属性。我建议将它们改为ids,因为它们将是唯一的。我们可以为每个类添加newsItem类。

    为了做我们想要的,我们将创建一个while循环来遍历每一行并打印出适当的HTML。它看起来像这样:

    <div class="newsItems">
      <?php
        $result = $sql->query($query);
    
        $count = 0;
        while(null !== ($r = $result->fetch_assoc()): ?>
          <div id="newsItem<?php echo ++$count; ?>" class="newsItem">
            <a href="<?php echo $r['url']; ?>"><img src="<?php echo $r['image_src']; ?>" alt="" /></a>
          </div>
      <?php
        endwhile;
      ?>
    </div>
    


    几件事

    1. 请注意while条件。对于新版本的PHP,将$r变量与null值进行比较非常重要。过去曾经可以使用false,但现在它不是,像这样的语句会引发错误:

      while(false !== ($r = $result->fetch_assoc())):
      

      小心你的陈述。

    2. 请注意我们只将newsItem类放在div元素上。由于aimg代码位于div内,因此您可以在样式中使用.newsItem a.newsItem img选择其中任何一个。

    3. 如果您有一系列独特的课程,为了清晰起见,最好将其设为ids而不是classes。拥有一个只能使用一次的课程是没有意义的。

    4. 祝你的项目好运!