所以我有一些代码可以从'产品中提取数据。我的数据库中的表,并显示如下:
while ($row = mysqli_fetch_assoc($result)) {
$group[ $row['companyname'] ][] = $row;
}
foreach ($group as $company_name => $products) {
echo "$company_name";
foreach ($products as $product) {
echo "<a href='/products/$product[id]/$product[companyname]/$product[itemname]'>";
echo "<img src='$image_dir_url'>";
echo '</a>';
}
}
为了使这个链接有效,我有一个改写:
RewriteRule ^products/(.*)/(.*)/(.*)$ /products/index.php?id=$1&company=$2&itemname=$3 [L]
然后在代码中
if (isset($_GET['id']) && isset($_GET['company']) && isset($_GET['itemname'])) {
display that items data
}
这很有用,并且给了我这样的网址:
www.mysite.com/products/5311/company name / item name
而不是
www.mysite.com/products/index.php?id=5311&company=company name&amp; itemname = item name
然而,这就是我的问题,我还需要在url的任何空格中添加破折号,使它看起来像这样:
www.mysite.com/products/5311/company-name/item-name
我以为我已经解决了这个问题,而且我对自己真的很满意(我在这方面很新手):
我简单地补充道:
$company = str_replace(' ', '-', $product['companyname']);
$item = str_replace(' ', '-', $product['itemname']);
并使用这些变量生成链接。
然后使用相反的方法来修复它们以备数据库查询:
str_replace('-', ' ', $company);
现在,正如我所说的那样,我认为这非常好,而且一切正常......
直到我意识到我的某些公司和产品在其名称中以连字符开头。
因此,将连字符添加到有空格的公司/产品中的所有空格,但是当我删除查询的所有连字符时,公司/产品 连字符最初丢失了!因此,我的查询不再检索它们。
Craaaap。
有没有办法解决这个问题,或者我应该在我的产品数据库中创建一个名为rewrite_url的新字段,并将其用于我的链接并在我的数据库中检查该字段以查找该项目?任何建议都会受到赞赏,我几乎没有 昨晚睡觉,因为这在我的脑海中流传。