1

我有一个产品名称及其图像的列表,因为我想避免为多个产品重复同一页面。我正在执行以下操作:

我正在向 a 变量传递我想出id现在 products.php 页面中的名称,例如,我正在使用 products.php?id=anyname 和使用$_GET来了解 id 名称变量。然后我用一个数组填充一个菜单,其中包含我需要的所有名称

例如,在我将显示的菜单中:

key: gfonvalue: 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>"

?>

有时它工作,有时不工作,我偶尔会收到此错误

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。请联系服务器管理员,告知错误发生的时间以及您可能所做的任何可能导致错误的事情。

服务器错误日志中可能提供有关此错误的更多信息。

另外我无权访问日志文件:(有没有更好的方法来解决这个问题?

4

1 回答 1

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 属性。

于 2012-09-18T00:58:19.727 回答