2011-05-11 39 views
1

我是一个PHP和编程的完整noob。我对编程非常陌生,所以我的问题可能看起来很愚蠢,但请耐心等待。PHP错误:未定义索引:event_list当我认为它已经定义。

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

我在这里的代码。

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)具有相同的声明时无法识别。我对这种不一致感到困惑。只有第二个元素不被识别,而另一个元素被识别。有人可以用简单的方式向我解释,像我这样的初学者可以理解。

+0

使用'的print_r($ _ GET)'和'的print_r($ _ REQUEST)',让我知道什么是它打印? – 2011-05-11 10:47:29

回答

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

+0

谢谢...解决了它。 – 2011-05-11 10:56:40