【问题标题】:Blog Post with Pictures?带图片的博客文章?
【发布时间】:2011-08-02 14:22:16
【问题描述】:

为了了解更多关于 php 和 mysql 的知识,我一直在研究许多不同的教程和帖子,以构建一个简单的博客站点。我有一个数据库,其中包含必要的、常见的嫌疑人(ID、标题、作者、日期和职位)。在我的 php 中,我查询数据库,将所有嫌疑人加载到货车中,然后在我需要它们的时间和地点回显每个嫌疑人 - 效果很好。

现在我想更进一步。我希望能够在博客文章中添加一些图像,这些图像现在只需输入到数据库的文本表中。我该如何构建这样的东西?我一直在到处寻找某种提示-基本上是谷歌搜索“MySQL PHP博客将图像插入帖子”的每个组合,我能想到。有很多不同的软件选项,但我想了解如何从头开始构建它 - 没有 Wordpress、Blogger 等。

我不想让用户上传图片。我只想在实际帖子中包含图像,这样当我查询数据库以加载各种 php div(标题、作者、日期和帖子)时,帖子将包含我想要显示的任何图片。 [IE。 “这是我一直在使用的一些示例文本和一张图片”(图片)“如您所见,上面的图片是我放置在实际博客文章中的示例”。

如何获取 mysql 查询以加载帖子并将图片添加到适当的位置?这与将图像上传到服务器或数据库无关。这只是关于阅读帖子的文本并将该帖子的图像包含在适当的位置。我根本不希望用户能够上传任何东西,我只希望 php 页面输出标题、作者、日期和帖子(带有图片)。

【问题讨论】:

  • 你试过谷歌“php图片上传”吗?
  • 您只想将您的帖子与图片链接?您可以发布实际的数据库架构吗?
  • 你不能在帖子文本中添加一个普通的<img> 标签吗?或者,如果您想去除 HTML,请在显示帖子之前提出一些其他语法,例如 [img:URL],将其更改为 img 标签。

标签: php mysql


【解决方案1】:

需要考虑的几点:

  • 您希望用户通过网站上的表单上传图片,还是您将成为唯一的用户并通过 FTP 上传?
  • 用户是要在文本编辑器中输入他们希望显示图片的地方,还是要解析出某种简单的标记语言(例如 [img="path/to/image.jpg" ])
  • 数据库对于您要完成的工作是否真的必要?

如果您的目标是了解更多关于 PHP、MySQL 和使用图像的知识,那么支持多个相册的图像库之类的东西可能是一种更直接的方式来了解您想学习的内容。我正在谈论的一个例子可以在here 找到(披露:此链接指向我正在为我妻子的摄影业务建立的网站,但相关)。

希望这会有所帮助!

::编辑:: 根据对您问题的更新和对我的回答的评论,我将向您推荐两种可能的解决方案:

简单的解决方案: 根据您上传照片的位置,在您的帖子中写一些 HTML 来引用照片。标签很简单,甚至像 wordpress 这样的博客也可以让你这样做(所以这不是逃避):)

教育解决方案: 在每篇文章中,允许使用某种类型的标记来指示图像需要在哪里(例如 [img]1[/img]... 一些内容 ...[img]2[/img]... 更多内容),然后在您的数据库中将每个照片 ID 链接到每个帖子 ID,以及您希望照片在帖子中填写的位置。为清楚起见,可能是:

Table photo_in_post:
----------------------------------
|img_id  | post_id | img_position|
|--------|---------|-------------|
| 17     |  4      |  1          |
|--------|---------|-------------|
| 3      |  4      |  2          |
|--------|---------|-------------|
| 4      |  2      |  1          |
|--------|---------|-------------|

抓取帖子的文本后,也许您可​​以运行如下查询:

select * from photo_in_post join img on img.id = photo_in_post.img_id where photo_in_post.post_id = 4 order by photo_in_post.img_position;

然后循环浏览您的帖子,将每次出现的 [img]NUMBER[/img] 替换为基于与标签内的 img_position 对应的数据库结果生成的图像标签。或者,您甚至可以遍历数据库结果并执行以下操作:

str_replace("[img]".$row['img_position']."[/img]", "Generated image tag", $postContents);

这可能足以让你开始。

【讨论】:

  • 不,我不希望用户能够上传任何东西,我只希望 php 页面输出标题、作者、日期和帖子(带有图片)。
  • 非常感谢您的深入解释。对此,我真的非常感激。我将采用“教育解决方案”并开始研究它。 :)
【解决方案2】:

这是我在大学时遇到的问题,因为它不像我想象的那样工作,没有写出整个代码(并为您节省所有试错的乐趣)基本上你想在你的包含图像名称并引用帖子 ID 的数据库,以便您可以在输出到屏幕时将两者链接在一起。

现在每个人一开始都会遇到两个主要问题,希望这些问题可以为您节省几个小时的时间:

首先确保您的表单编码类型设置为 multipart/form-data。

<form enctype="multipart/form-data"></form>

其次,当您处理上传的内容时,它存储在 $_FILES 超全局数组中,而不是 $_POST。

我刚刚做了一个快速的 google 并从 Tizag 中提取了第一个结果,它提供了 php 文件上传的基本概述。它不是最好的,但肯定涵盖了基础知识。

http://www.tizag.com/phpT/fileupload.php

按照该教程,您应该能够将图像放到您的服务器上(如果权限设置为允许这样做)。

【讨论】:

    【解决方案3】:

    我之前考虑过这个问题,在我看来,有一个简单的解决方案,但它是固定的。以我的方式,您的图片必须固定在文本中。在每个博客中,“第一张”图片必须在自己的位置,然后“第二张”图片必须在自己的位置......等等。等等。

    我是什么意思? 当您构建上传图片的表单时,将其构建为第一张图片将命名为“image1”,第二张图片将命名为“image2”或这么长......但名称必须固定,以便您可以正确编写html代码。 然后,当您写博客并选择要上传的图片时,当您按下提交按钮时,您的 php 脚本必须在您的网站上建立适当的文件夹,然后在该文件夹中上传图片。

    当您编写 html 时,您会为您的图片发布一个位置,一个位置“调用”特定文件夹中的 image1,第二个位置“调用”特定文件夹中的 image2 等等……在该博客的 MySQL 表中,除了 id、title、date、hour 和 blog 的内容之外,你还必须有 column name 文件夹,你将使用 php 代码调用并放置在你的 HTML 中。

    我理解了吗?抱歉,如果我的英语语法不正确或某些单词也不正确。

    这是我的看法。

    【讨论】:

      【解决方案4】:

      我之前和之后都考虑过这个问题 - 这是唯一看起来最简单、最灵活的方法。

      在深入研究之前先解释一下一些功能

      我的网站 (www.nathannoye.com) 有一个博客部分。在管理面板中 - 有一种方法可以为帖子标题图像上传单个图像,但我和你想在我的博客帖子中发布图像一样。看到我可以在每篇博客文章中一次上传 一张 图片(并且已经在其他地方上传了多张图片) - 为什么不制作一个专门上传资产并使用数据库引用在二。

      这就是我要在我的网站重新设计中实施的解决方案:

      1. 创建一个部分以上传图片资源
      2. 允许在此部分中上传多个图像,这会将它们上传到一个文件夹并将新文件名和位置保存在数据库中。 (甚至可以为更小分辨率和完整分辨率创建图像压缩脚本)
      3. 创建博客时 - 有一个按钮,我可以单击该按钮将 HTML 标记添加到我的 textarea 中带有空 src 标记的 carrat 所在的位置。
      4. 这将导致出现一个模态,所有图像缩略图都会在模态中显示一个小预览,因此当我单击它时 - 我可以确保它是正确的
      5. 单击“确定”会将图片引用添加到博客文章中,因此当用户请求该博客文章时,它将在浏览器中显示为普通图片。

      遵循这一策略 - 我可以在整个网站中重复使用这些图片,而不必担心该图片是否会粘在一篇博客文章中。

      不确定这是否是最好的方法,但因为我将是唯一使用它的人 - 我真的不在乎

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 2015-06-03
        • 1970-01-01
        • 2017-08-16
        • 1970-01-01
        • 2017-10-22
        • 1970-01-01
        • 2011-06-25
        相关资源
        最近更新 更多