我使用以下代码从页面网址中删除产品编号,以便我可以查询数据库以检查自定义规范链接。
$qs = explode('&',$_SERVER['QUERY_STRING']);
$prodid = explode('=',$qs[0]);
$prod_ID = $prodid[count($prodid)-1];
例如,$ qs包含 数组([0] => products_id = 1121 [1] => cPath = 180_182 [2] =>)
然后我决定我还需要能够为类别指定自定义规范,所以我添加了以下代码:
$catid = explode('=',$qs[1]);
$lastnmbr = explode('_',$catid[1]);
$cat_ID = $lastnmbr[count($lastnmbr)-1];
这给了我$ 11的prod_ID和182的$ cat_ID。
然而,这是问题所在。如果我回到产品列表而不是特定产品页面,$ qs中保存的数组将变为Array([0] => cPath = 180_182 [1] =>),这意味着
$catid = explode('=',$qs[1]);
不再是收集类别ID的正确数组位置,实际上它是由
收集的$prodid = explode('=',$qs[0]);
这使得以下所有代码都认为它是一种产品。
我认为我需要以某种方式使用=符号前面的信息来确保如果它说cPath它将它分配给$ catid,如果它说product_id它将它分配给$ prodid。
是否有正确的"这样做的方法?我确实试过制作一个新的
$catchk = explode($qs[0], '=');
认为这会在=符号之前返回数据,但它没有,所以我显然在这里有错误的结束。
为了使解决方案清楚,我使用了Tyr(谢谢你)的建议并完成了
$catid = $_GET['cPath'];
$lastnmbr = explode('_',$catid);
$cat_ID = $lastnmbr[count($lastnmbr)-1];
$prod_ID = $_GET['products_id'];
由于子类别显示为180_182等,因此必须能够删除最后一个_(下划线)后的数字集
答案 0 :(得分:3)
如果您尝试$ _GET [' product_id']和$ _GET [' cPath']而不是$ _SERVER [' QUERY_STRING']用法会怎样?
您正在避免使用正确的阵列路径的问题。