2013-05-28 46 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

相关问题