2014-10-08 78 views
-2

我一直在我丈夫的网站上工作了一段时间。我目前正在重新设计该网站,并且我想让它更具前瞻性。目前,他的博客帖子只是在他的页面上连续显示(有些分页将其分开),这意味着如果有人想将帖子添加到他们的收藏夹,那么当更多帖子被添加时它不会工作。所以,我想创建一些摘录帖子,然后链接到完整的帖子。链接到完整的博客文章sql

我的问题是,如何做到这一点?我搜索了很多试图找到答案的网站,但是我能够找到的所有网站都是如何建立自己的数据库(我已经拥有)以及如何创建登录(我不需要这些登录) ,并以我已有的方式回复帖子。

基本上,我想从文章摘录(前几行或某事),然后链接阅读完整的文章。我不确定如何在不为每篇文章制作单独的html页面的情况下做到这一点,而不是以某种方式将它们从我的数据库中取出。即,我不知道如何自动生成显示完整帖子所需的URL(和代码)。

对不起,如果我不是以最好的方式问这个。答案可能在那里,我似乎无法找到正确的东西。 :(

编辑: 该网站是SpidersInAJar.com 数据库是MySQL中,建立了非常简单地用ID,标题,正文和日期

+1

请保持您的问题的解释,根据需要简短,我们不需要某人的生活故事来回答一个问题:)。您也可以链接到实际页面或显示示例。对我而言,目前还不清楚你究竟在问什么,以及问题是什么。 – Juru 2014-10-08 17:21:33

+0

为了帮助您,我们需要更多地了解您的设置。数据库中的帖子是如何布置的?网站使用哪种语言编写? – aelfric5578 2014-10-08 17:21:40

+0

我看了一下你的网站,我强烈建议你在WordPress(或其他一些现有的内容管理系统)中这样做,而不是自己动手。您试图解决的问题已经由各种CMS解决了数百次。重新设计这个网站的功能与您想象中的功能之间的差异,以及如何设置一个已经做到了你想要的现有CMS ...第二门将会快得多,并且不太容易出错。 – evanv 2014-10-08 17:35:19

回答

1

工作过,前提是你的博客文章是在一个叫做表。 blogpost在你的数据库中。我也假设目前你正在做的事情一样SELECT ID, Title, Body, Date FROM blogpost ORDER BY ID DESC,然后通过循环的结果,坚持一个

他们身边,把它完成。

进一步假设,你想要的是有相同的页面加载与片段列表,每个片段在按下时会重新加载页面并只显示博文。

为了让您的片段,你需要改变你的SQL一点:

SELECT ID, Title, CONCAT(Substring(Body FROM 1 for 300), "...") as Body, Date FROM blogpost 

这会给你的第一个300个字的每篇博客文章,例如。

在你的PHP,你遍历结果和包装你<p></p>周围的一切,你需要添加一个新的链接标签...像

echo '<a href="index.php?blogpost=" & <This blogposts ID> & '">read more</a>' 

这将发送博客文章的ID作为一个变量返回到index.php页面。因此,浏览器将刷新,您将能够在您的php页面的顶部blogPost=$_GET['blogpost']抓住发送和执行的内容。显然,这会让你的代码变得更复杂一些,因为现在你必须确定是否有变量发送,并显示所有代码片段(如果blogPost变量为空)或者仅显示博客帖子(仅从表中选择该ID并且显示它)。

这也通过SQL注入引发了很大的安全风险。任何人现在都可以通过处理URL:http://spidersinajar.com/index.php?id=1 or a=a;DROP TABLE blogpost;和whoosh走到你的桌面来向你的数据库发送任意的SQL。您需要详细了解如何在将SQL语句发送到数据库之前正确地准备sql语句,以避免心情沮丧。

显然需要编写更多的代码才能完成这项工作,但这是高层次的,应该给你一些指导。

+0

谢谢!这非常有帮助。我在另一个网站上看到了一些关于只从URL中获取int来避免sql注入的问题。这会起作用吗? – SetsunaMH 2014-10-08 18:22:16

+1

使用int将限制注入的程度,但如果您试图学习最佳实践,您应该阅读以下问题和最佳答案:http://stackoverflow.com/questions/60174/how-can-i-防止-SQL注入功能于PHP?RQ = 1 – aelfric5578 2014-10-08 18:27:01