2013-05-28 79 views
0

我正在生成AJAX調用的URL,就像我解釋here(請看這篇文章,需要了解實際情況)。這是一個生成友好URL的正確方法嗎?

某些URL具有特殊字符等等會是這樣的:

http://myweb.com/ni%C3%B1o/pull%26bear/jacket%20shirt%20pants%20underwear%20hat/23

我想創建友好的URL刪除一些字符,並限制了第三個參數只有三個最大的話。其結果將是這樣的:

http://myweb.com/nino/pullbear/jacket-shirt-pants/23

所以PHP就能知道哪些參數我走過時,我增加了一個新科拉姆在我的數據庫中的每個VARCHAR與漂亮的URL轉換。我解釋一下,是這樣的:

ID SEX SEX_PRETTY BAND  BRAND_PRETTY DESCRIPTION      DESCRIPTION_PRETTY AGE 
1 NIÑO NINO  PULL&BEAR PULLBEAR  JACKET SHIRT PANTS UNDERWEAR HAT JACKET-SHIRT-PANTS 10 
2 NIÑA NINA  ZARA  ZARA   JEANS BIKINI DRESS SWEATER  JEANS-BIKINI-DRESS 13 

的AJAX調用PHP,並在PHP我做了漂亮科拉姆正常科拉姆數據庫轉換。

我認爲這是做我想做的事的唯一方法,不是嗎?任何幫助或建議,將不勝感激,如果你需要更多的信息,讓我知道,我會編輯帖子。

回答

2

你在做什麼是正確的。 URL中的值只是參數,因此您可以使用它們從數據庫中選擇行。當您分析您的網址http://myweb.com/nino/pullbear/jacket-shirt-pants/23它會返回類似

<? 
$sex = 'nino'; 
$brand = 'pullbear'; 
$description = 'jacket-shirt-pants'; 
$age = '23'; 
?> 

然後你就可以使用這些信息從數據庫中選擇的東西。爲簡單起見,我將Concat的查詢,但要確保你記住一些validation or use parameterized queries

<? 
//WARNING: POSSIBLE UNSAFE EXAMPLE, DONT USE DIRECTLY IN PRODUCTION 

$query = "SELECT * FROM Table WHERE SEX_PRETTY='$sex' AND BRAND_PRETTY='$brand' AND DESCRIPTION_PRETTY='$description' AND AGE='$age'"; 

//now in your results you can use the `SEX`, `BRAND` and `DESCRIPION` columns to show information 
?> 

記住,如果你想唯一標識一個單一的產品,將是最好的創建合併列UNIQUE INDEXSEX_PRETTYBRAND_PRETTY,DESCRIPTION_PRETTYAGE

此外,由於您正在討論使用JSON,請記住,並非所有特殊字符都是允許的,因此您可能需要將它們編碼到輸出中。檢查json-character-encoding

+0

真的感謝您的答案@ Hugo Delsing。那麼,我只是爲了這個例子做了這張桌子,因爲我認爲這比我所擁有的更清晰。我還有一個小小的答案:我有一排排,每排重複20次左右。所以我認爲在另一個表格中加入_pretty colum_以便不必重複這些信息。所以你認爲這是個好主意,或者它只是混淆了結構? – harrison4

+1

我認爲「性別」應該是一個單獨的名稱和漂亮的名字表,然後將產品鏈接到該表。品牌也是如此。所以每個品牌都在品牌表中,產品鏈接到該表。 –

+0

正如我所說,這不是我工作的表的真正結構。但我理解你的想法。謝謝你,你幫了我很多。 :) – harrison4

相關問題