PHP错误:未定义的索引:event_list,当我认为它已经定义。

时间:2011-05-11 10:36:02

标签: php

我在PHP和编程方面也是一个完整的菜鸟。我对编程很陌生,所以我的问题可能看起来很愚蠢,但请耐心等待。

我有一个未定义的索引错误,我认为它已经定义了。

我这里有代码。

index.php

<?php include('functions.php'); ?>

<?php 
 $yr = $_GET['year_list'];
 $evnt = $_GET['event_list']; 
?>

<html>
<head>
 <script type="text/javascript" src="myscripts.js"></script>
</head>
<body>
 <div>
  <form name="myform" >
   Select Year: <?php echo hspacer(1); ?>
   <select id="year_list" name="year_list">
   <?php  
    for($year = (date('Y') - 100); $year <= (date('Y') + 100); $year++ ) {
     if ($year == date('Y'))  echo "<option value='$year' name='$year' selected='' >" . $year . "</option>";
     else echo "<option value='$year' name='$year' >" . $year . "</option>";
    }
   ?>
   </select>
   <?php echo hspacer(5); ?>
   Select Event:  <?php echo hspacer(1); ?>
   <select id="event_list" name="event_list" >
   <?php  
    $events = array("Karate Tournament", "Beauty Pageant", "Film Festival", "Singing Contest", "Wedding");

    foreach($events as $event) echo "<option value='$event' name='$event' >" . $event . "</option>";
   ?>
   </select>
   <?php echo vspacer(2); echo hspacer(22); ?>
   <input type="submit" id="add_description" name="add_description" value="Add Description" onclick=""/> 
  </form>
 </div>
</body>
</html>


functions.php

<?php
 function hspacer($num_of_spaces) {
  $spaces = "";
  if ($num_of_spaces > 0)  for($i=0; $i<$num_of_spaces; $i++ )  $spaces .= "&nbsp;";

  return $spaces;
 }

 function vspacer($num_of_linefeeds) {
  $linefeeds = "";
  if ($num_of_linefeeds > 0)  for($i=0; $i<$num_of_linefeeds; $i++ )  $linefeeds .= "<br />";

  return $linefeeds;
 }
?>

我对此无法理解,我认为当您声明带有ID的元素时,您可以将ID用作$_GET$_POST的索引。其次,为什么当第二个元素(event_list)与第一个元素(year_list)具有相同的声明时,它们不被识别。我对这种不一致感到困惑。只识别第二个元素,而识别另一个元素。有人可以用简单的方式向我解释一下,像我这样的初学者可以理解。

1 个答案:

答案 0 :(得分:1)

访问该网页时,您的网址中是否已经有&year_list?否则,访问$_GET['year_list'];

时没有理由不会出现相同的错误

通常你应该检查你对_GET / _POST等的访问权限,而不是仅仅假设设置了密钥。

尝试:

$yr = isset($_GET['year_list']) ? $_GET['year_list'] : null;
$evnt = isset($_GET['event_list']) ? $_GET['event_list'] : null; 

您还可以构建一个函数来减少一些代码。另外看看:

http://php.net/manual/en/ref.filter.phphttp://www.php.net/manual/en/ini.core.php#ini.register-globals