2011-08-08 54 views
1

我有這個問題了一會兒,構建網址無項目ID並獲得正確的項目

讓我們說我們有一個電影網站

而且我們有一個名爲Test-movies123!數據庫中的電影,

現在我想要做的是做一個網址watch/test-movie123-{$id}/,然後用ID查詢數據庫,

現在的問題是,ID不應該在那裏,我該如何解決這個問題? 如果我從URL中test-movie123和搜索它,我不會找到它,因爲它沒有!,除非我用LIKE但那不是很可靠的......

任何人都可以提出什麼嗎?將不勝感激

回答

4

那麼,你可以創建一個規則,採取電影標題,並把它變成一個slu。。所以,你會知道你總是將標題縮小,刪除了除字母,數字和破折號以外的任何東西,並將空格轉換爲單個短劃線。

然後將其存儲在數據庫的另一列中,並確保您強制唯一。採取網址並從中搜索該列。

從這一點,你只需要處理髮生的情況,如果你有第二個視頻上傳,產生完全相同的slug。這裏有很多選項...追加一個隨機數slu,,增加一個數字並追加它等等。

+0

我看,謝謝,任何想法或我可以用來正確剝離它的PHP代碼示例? –

+0

'$ slug = preg_replace('/ \ s + /',' - ',preg_replace('/ [^ A-Za-z0-9 \ s] /','',strtolower($ original)));' –

+0

我使用'$ original ='測試了我的電影-123!';'並且將它轉換爲'test-my-move123'。對不起,一起運行它;我的測試用例在三條線上打破了mods,但由於我們不能在評論中插入換行符,因此我按照上面的格式對它進行了格式化。 –

2

要做到這一點,你可能在你的數據庫中有類似於primary_key的東西 「test-movies123 」。

想象一下,您有一個控制面板,您可以在表單中插入電影。 然後使用標題測試Movies123!將它保存在類似這樣的例子數據庫:

ID:AUTO_INCREMENT NUMBER 鍵名:sanityTitle( 「測試Movies123!」)< - 這應該救 「測試movies123」 標題: 「測試Movies123!」 東西:「blablabla」

注意sanityTitle()將您的函數從標題中準備友好的URL。

那麼你的URL看起來像 手錶/測試movie123 /使用的URL 或 手錶正則表達式控制/?ID =測試movie123原料

你將要被索引或主鍵搜索「鍵名「在表格中,它會輸出1行,包含所有的東西。