2014-10-08 70 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