我有一个产品名称及其图像列表,因为我希望避免为多个产品重复相同的页面。我正在做以下事情:
我正在传递一个变量id
我希望在products.php页面中显示的名称,例如我正在使用products.php?id=anyname
并使用$_GET
来了解id名称变量。然后我用一个包含我需要的所有名字的数组填充一个菜单
例如,我将在菜单中显示:
key: gfon
和value: Fondant pt
然后将加载带有gfon.png的图像
这是代码
<li>
<a href="menu.html" style="padding:8px 30px;">THE MAIN MENU</a>
<ul>
<?php
if (isset($_GET['id'])) {
$product = $_GET['id'];
}
$array = array(
"gfon" => "Fondant pt",
"galf" => "Alfajores gy",
"gdom" => "Domino tre",
"gesp" => "Espiral ere",
"gsan" => "Sandwich we ",
);
foreach($array as $key => $val) {
echo "<li><a href=\"http://www.mysite.com/products.php?id=".$key."\">".$val."</a> </li>";
}
?>
</ul>
</li>
然后是根据所选产品改变图片的部分
<?php
echo "<h1>";
switch ($product) {
case "gfon":
echo "Fondant</h1>";
break;
case "galf":
echo "Alfajores</h1>";
break;
case "gdom":
echo "Domino</h1>";
break;
case "gesp":
echo "Espiral</h1>";
break;
case "gsan":
echo "Sandwich</h1>";
break;
}
echo "<p> <a href=\"http://www.mysite.com\"><img src=\"images/".$product.".png\" alt=\"" .$product." width=\"300\" height=\"300\" align=\"right\"/> </a>"
?>
有时候它有效,有时候没有,我偶尔会收到这个错误
内部服务器错误
服务器遇到内部错误或配置错误 无法完成您的请求。请联系服务器 管理员通知错误发生的时间和任何事情 你可能已经做过这可能导致错误。
有关此错误的详细信息可能在服务器错误中可用 日志中。
此外,我无法访问日志文件:(有没有更好的方法来解决这个问题?
答案 0 :(得分:3)
您确实需要检查服务器日志中是否存在特定问题,但您的代码也存在问题,这里有一些更改。
<?php
// Define your array before checking the $_GET['id']
$array = array(
"gfon" => "Fondant pt",
"galf" => "Alfajores gy",
"gdom" => "Domino tre",
"gesp" => "Espiral ere",
"gsan" => "Sandwich we ",
);
// Check that the id is in the array as a key and assign your product var, else set as null
$product = (isset($_GET['id']) && array_key_exists($_GET['id'],$array)) ? $_GET['id'] : null;
// Output your html
?>
<li>
<a href="menu.html" style="padding:8px 30px;">THE MAIN MENU</a>
<ul>
<?php foreach($array as $key=>$val):?>
<li><a href="http://www.mysite.com/products.php?id=<?=$key?>"><?=$val?></a></li>
<?php endforeach;?>
</ul>
</li>
<?php
// Replacing the switch statement with a simple if else
// Is $product not null? ok it must be within the array
if($product !== null){
// Use explode to chop up the string and grab the first value.
echo '<h1>'.explode(' ',$array[$product])[0].'</h1>';
echo '<p><a href="http://www.mysite.com"><img src="images/'.$product.'.png" alt="'.$product.'" width="300" height="300" align="right" /></a>';
}else{
// Echo something default
echo '<h1>Default</h1>';
echo '<p><a href="http://www.mysite.com"><img src="images/default.png" alt="" width="300" height="300" align="right" /></a>';
}
?>
我注意到alt=\"" .$product." width=\"300\"
会影响您的输出,因为您没有关闭alt属性。