好的,我想要实现的是使用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顺序?
答案 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>
这假设您有一个包含以下列的表:
答案 1 :(得分:1)
这个答案假定您有以下内容:
$sql
变量中)。image_src
,url
和created_at
列(我们称之为表my_table
)。
首先,让我们回顾一下这个问题。
我们希望同时获取所有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>
请注意while
条件。对于新版本的PHP,将$r
变量与null
值进行比较非常重要。过去曾经可以使用false
,但现在它不是,像这样的语句会引发错误:
while(false !== ($r = $result->fetch_assoc())):
小心你的陈述。
请注意我们只将newsItem
类放在div
元素上。由于a
和img
代码位于div
内,因此您可以在样式中使用.newsItem a
或.newsItem img
选择其中任何一个。
如果您有一系列独特的课程,为了清晰起见,最好将其设为ids
而不是classes
。拥有一个只能使用一次的课程是没有意义的。
祝你的项目好运!