我一直在研究这个问题,感觉就像无尽的时间,但我觉得我真的很接近解决它。
我已经将我的网站剥离到最低限度的代码来解决这个问题,我想我找到了导致我麻烦的线路,但我不知道为什么它会给我带来麻烦。这是我现在的代码:
//display all products
if (!isset($_GET['id'])) {
$result = mysqli_query($link, "SELECT products.*, company.company-name FROM products INNER JOIN company ON products.company-id=company.id");
if (!$result) {
echo 'Error';
exit();
}
}
//display one product
if (isset($_GET['id'])) {
$id = $_GET['id'];
$get_item_info = mysqli_query($link, "SELECT products.*, company.company-name FROM products INNER JOIN company ON products.company-id=company.id WHERE products.id='$id'");
$row = mysqli_fetch_assoc($get_item_info);
if (!$row) {
echo 'Error';
exit();
}
$company_name = $row['company-name'];
$model_abbreviation = $row['model-abbreviation'];
if ($row['model-version'] == NULL) { $image_directory_name = "$company_name/$model_abbreviation/"; } else $image_directory_name = "$company_name/$model_abbreviation (" . $row['model-version'] . ")/";
}
if (!isset($_GET['id'])) {
$group = array();
while ($row = mysqli_fetch_assoc($result)) {
$group[ $row['company-name'] ][] = $row;
}
foreach ($group as $company_name => $models) {
foreach ($models as $model) {
echo "<a href='$model[id]/'>$model[model-abbreviation]</a>";
}
}
}
if (isset($_GET['id'])) {
$top_thumb = "$image_directory_name" . "top.jpg";
echo "<img src='$top_thumb'>"; echo '</br>';
$images = glob($image_directory_name."*_thumb*");
if (!$images) {
echo 'No images to display.';
}
else {
foreach ($images as $image) {
$full = str_replace('thumb','full',$image);
echo '<a href="'.$full.'" target="_blank"><img src="'.$image.'"></a>';
}
}
}
因此,如果我将此代码与我的重写符号结合使用:
RewriteRule ^products/(.*)/$ /products/index.php?id=$1
我转到产品页面,例如localhost / products / 30 /
没有图片显示,但是,在页面源中我可以看到显示图像正在尝试(尽管我的脚本没有错误,只是一个空白页面),只是路径错误 - 它看起来像这样:
<img src='Company Name/Model Name (Model Version)/top.jpg'></br><a href="Company Name/Model Name (Model Version)/A_full.jpg"><img src="Company Name/Model Name (Model Version)/A_thumb.jpg"></a>
所以代码工作正常,但路径错误。行。
所以我将/ products /添加到此行的$ image_directory_name变量中:
if ($row['model-version'] == NULL) { $image_directory_name = "/products/$company_name/$model_abbreviation/"; } else $image_directory_name = "/products/$company_name/$model_abbreviation (" . $row['model-version'] . ")/";
这就是它破裂的地方。
顶部拇指是固定并显示的,但是在尝试使用glob()底部拇指时出现错误 - “没有要显示的图像”。而且消息来源甚至不再显示为试图加载它们了。
因此。我已经非常接近,我已经花了无数个小时。有人知道发生了什么事吗?与我的$ image_directory_name路径或我猜测的glob()代码有关...我非常渴望解决这个问题。
编辑:附加信息:当我在浏览器中访问localhost / products / companyname / productname /时,我从代码中的if(!$ row)行中得到错误。但是我转到localhost / products / companyname / productname / imagename.jpg,图片加载。
更新:我甚至尝试从/ products / companyname / productname /
移动我的所有图片到/ images / companyname / productname /
底部的拇指仍然没有显示出来。哎呀。