博客与图像穿插在整个帖子中

时间:2011-08-04 23:30:30

标签: php mysql blogs

好吧,我已经对这个问题喋喋不休了一会儿,似乎无法在谷歌或其他任何地方得到我想要的东西。我使用PHP和MySQL构建了一个CMS博客。它很棒。我有一个表格,其中包含博客信息(标题,作者,日期和帖子)。在我的index.php中,我点击它:

    $sql = "SELECT posts.ID as 'ID' ,
    posts.author as 'author' ,
    posts.title as 'title' ,
    posts.category as 'category',
    posts.date as 'date', 
    LEFT(posts.post, 312) as 'post'
    FROM posts
    ORDER BY date DESC
    LIMIT 3";

    $result = mysql_query($sql);
    while($row=mysql_fetch_array($result)){

然后我通过以下方式将它们滚到屏幕上:

    echo $row['ID'];
    echo $row['title'], etc., etc.

我还有一个包含一些图像信息的表 - 只有大小,文件名等。

在“帖子”表格中,实际帖子会写在文字字段中。我真的想在图片的文本中放置一些占位符 - 你知道,使博客文章看起来更好,一些与内容相关的散布图像。我似乎无法让它正常工作。我试着把它拉下来:

    $sql2 = "select * from images, posts where posts.ID = images.image_post";
    $result2 = mysql_query($sql2) or die ("Could not access DB: " . mysql_error());

    while ($row2 = mysql_fetch_assoc($result2))
    {
    echo "<div class=\"picture\">";
    echo "<p>";
    // Note that we are building our src string using the filename from the database
    echo "<img src=\"images/" . $row2['image_url'] . "\" alt=\"\" /><br />";
    echo "</p>";
    echo "</div>";
    }

然后我回复帖子。所以图片显示,但文件夹中的所有图片都显示在每个帖子中。我认为这是因为它在while循环中是一个while循环 - 我相当肯定可能会破坏宇宙中的一个洞。

我想要的只是图片,以显示我在帖子文本中标记它们的位置。

任何人都可以帮我理解如何将我在posts表格的文本字段中添加的“标记”与图像表中的图像相匹配吗?我一直在网上看,但每个人似乎都使用不同的想法 - str_replace,preg_match,preg_replace;我似乎无法绕过他们中的任何一个。

那么,我哪里错了?

1 个答案:

答案 0 :(得分:1)

我不明白你想要从$ sql2中得到什么。您是否尝试仅获取标记为属于当前帖子的图像?然后你需要类似的东西(你错过了AND子句):

$sql2 = "select * from images, posts where posts.ID = images.image_post 
           AND posts.ID = ".$row['ID'];

在那之后,你需要一种方法将图像放在帖子中,而不仅仅是最后,我想。也许你可以在帖子的文本中加入某种标签,然后对其进行字符串替换。

因此,您的文本中可能会显示[imageID:2837]的内容,然后在上面的循环中,您将更改代码以使用正则表达式拉出imageID,并执行(例如)。

$sql2 = "select * from images where images.ID = ".$imageId