0

好的,所以我想要实现的是使用 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 方面还没有走得太远,因为我不确定该往哪个方向发展,而且我慢慢了解到,如果你用 PHP 选择了错误的方向,通常需要重新开始。提前感谢您的帮助!

长话短说,如何使用 PHP 从 MySQL 表中将 img src 和链接动态生成到这些预定义的 DIV 中,并使它们按 DESC 顺序排列?

4

2 回答 2

1

此答案假设您具备以下条件:

  1. PHP 中的 MySQL 连接(这里,它存储在$sql变量中)。
  2. image_src, url, 和created_atMySQL 表中的列(我们称之为表my_table)。


查询一切

首先,让我们回顾一下查询。

我们希望同时获取所有十二行的所有数据,因此我们不必多次查询。我们还希望所有东西都以降序排列,这就是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元素上。因为aandimg标记在 内部div,您可以使用.newsItem a.newsItem img在您的样式中选择它们中的任何一个。

  3. 如果您有一系列独特的课程,最好制作它们ids而不是classes为了清晰。拥有一个只使用一次的类是没有意义的。

享受您的项目并祝您好运!

于 2012-08-11T23:43:04.513 回答
1

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

图片.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(自动增量)INT
  • image TINYTEXT - 图像文件的 URL
  • link TINYTEXT - 链接到您想要链接的位置。
于 2012-08-11T23:25:49.627 回答