我在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 .= " ";
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 :(得分: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.php和 http://www.php.net/manual/en/ini.core.php#ini.register-globals