Php 以编程方式生成下拉菜单
我在下面有一个下拉菜单:Php 以编程方式生成下拉菜单,php,html,Php,Html,我在下面有一个下拉菜单: $form = " <form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'> <table> <tr> <td><select name='year' id='yearDrop'> <option value=''></option> <option value='$getyea
$form = "
<form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'>
<table>
<tr>
<td><select name='year' id='yearDrop'>
<option value=''></option>
<option value='$getyear[1]'>1</option>
<option value='$getyear[2]'>2</option>
<option value='$getyear[3]'>3</option>
<option value='$getyear[4]'>4</option>
<option value='$getyear[5]'>5</option>
<option value='$getyear[6]'>6</option>
<option value='$getyear[7]'>7</option>
<option value='$getyear[8]'>8</option>
<option value='$getyear[9]'>9</option>
<option value='$getyear[10]'>10</option>
</select></td>
</tr>
</table>
</form>
";
更新:
<?php
$getyear = (isset($_POST['year'])) ? $_POST['year'] : '';
$errormsg = (isset($errormsg)) ? $errormsg : '';
$min_year = 1;
$max_year = 10;
$years = range($min_year, $max_year); // returns array with numeric values of 1900 - 2012
$yearHTML = '';
$yearHTML .= '<select name="year" id="yearDrop">'.PHP_EOL;
$yearHTML .= '<option value="">Please Select</option>'.PHP_EOL;
foreach ($years as $year) {
$yearHTML .= "<option>$year</option>".PHP_EOL; // if no value attribute, value will be whatever is inside option tag, in this case, $year
}
$yearHTML .= '</select>';
if( (isset($_POST['registerbtn']))){
$getyear = $_POST['year'];
if (!in_array($getyear , $years)){
echo "year is chosen";
}else{
$errormsg = "You must enter in Student's current Academic Year to Register";
}
}
$form = "
<form action='" . htmlentities($_SERVER["PHP_SELF"]) . "' method='post'>
<table>
<tr>
<td></td>
<td id='errormsg'>$errormsg</td>
</tr>
<tr>
<td>Year:</td>
<td>{$yearHTML}</td>
<td><input type='text' name='year' value='$getyear' /></td>
</tr>
<tr>
<td></td>
<td><input type='submit' value='Register' name='registerbtn' /></td>
</tr>
</table>
</form>";
echo $form;
?>
在数组上循环并对其值执行操作时,foreach
循环非常有益
在数组上循环并对其值执行操作时,foreach
循环非常有益
此文件将自动生成选择
选项,并为您提供进行进一步处理的方便位置。
function process_form(){
if(!isset($_POST['year']) || !is_numeric($_POST['year'])){
// Form invalid
return false;
}
$year = $_POST['year'];
// Perform actions - save to database, etc..?
// Form valid
return true;
}
$error = false;
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// Form submitted
$result = process_form();
if($result){
?>
<p>Valid year selected</p>
<?php
exit;
}
$error = true;
}
?>
<form action="" method="post">
<?php if($error){ ?>
<p class="error">You must select the student's current academic year to register</p>
<?php } ?>
<label for="select_year">Academic Year:</label>
<select name="year" id="select_year">
<option value=""></option>
<?php for($year = $start_year; $year <= $end_year; $year++){ ?>
<option value="<?php echo $year;?>"><?php echo $year;?></option>
<?php } ?>
</select>
<button type="submit">Register</button>
</form>
函数过程\u form(){
如果(!isset($_POST['year'])是数字($_POST['year'])){
//表格无效
返回false;
}
$year=$_POST['year'];
//执行操作-保存到数据库等。。?
//形式有效
返回true;
}
$error=false;
如果($\u服务器['REQUEST\u METHOD']=='POST'){
//提交的表格
$result=process_form();
如果($结果){
?>
选择的有效年份
您必须选择学生的当前学年进行注册
学年:
此文件将自动生成选择
选项,并为您提供一个进行进一步处理的方便位置。
function process_form(){
if(!isset($_POST['year']) || !is_numeric($_POST['year'])){
// Form invalid
return false;
}
$year = $_POST['year'];
// Perform actions - save to database, etc..?
// Form valid
return true;
}
$error = false;
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// Form submitted
$result = process_form();
if($result){
?>
<p>Valid year selected</p>
<?php
exit;
}
$error = true;
}
?>
<form action="" method="post">
<?php if($error){ ?>
<p class="error">You must select the student's current academic year to register</p>
<?php } ?>
<label for="select_year">Academic Year:</label>
<select name="year" id="select_year">
<option value=""></option>
<?php for($year = $start_year; $year <= $end_year; $year++){ ?>
<option value="<?php echo $year;?>"><?php echo $year;?></option>
<?php } ?>
</select>
<button type="submit">Register</button>
</form>
函数过程\u form(){
如果(!isset($_POST['year'])是数字($_POST['year'])){
//表格无效
返回false;
}
$year=$_POST['year'];
//执行操作-保存到数据库等。。?
//形式有效
返回true;
}
$error=false;
如果($\u服务器['REQUEST\u METHOD']=='POST'){
//提交的表格
$result=process_form();
如果($结果){
?>
选择的有效年份
您必须选择学生的当前学年进行注册
学年:
您所有的选项值…都是相同的吗?或者我在这里遗漏了一些基本的东西…我想您是在寻找一个复选框。@RussellDias我不确定是否允许我对每个选项使用相同的值。是否有一种方法可以使每个选项通过使用维度数组(例如,$getyear[1]
,$getyear[2]来包含自己的值
$getyear[1]
等。如果是,那么我应该在If语句中写些什么来查看是否选择了drop dowm菜单中的值?为每个选项赋予相同的value属性相当于只给用户一个选项。$getYear代表什么?@moonDogDog我将编辑代码,为每个下拉列表赋予不同的值,我可以问If语句应该是什么吗那么,您是否有更新的值?您所有的选项值……都是相同的?或者我在这里遗漏了一些基本内容……我想您是在寻找一个复选框。@RussellDias我不确定是否允许我对每个选项使用相同的值。是否有一种方法可以通过使用维度数组(例如,$getyear[1])使每个选项包含自己的值
,$getyear[2]
$getyear[1]
等。如果是,那么我应该在If语句中写些什么来查看是否选择了drop dowm菜单中的值?为每个选项赋予相同的value属性相当于只给用户一个选项。$getYear代表什么?@moonDogDog我将编辑代码,为每个下拉列表赋予不同的值,我可以问If语句应该是什么吗那么,我是否需要更新值?只需一个简单的问题,在页面顶部,我需要包含一个isset,所以isset是否可以完全像这样:`$getyear=(isset($\u POST['year'])?$\u POST['year']:'';如果有一个带有“year”的选择选项,我就不会得到未定义的索引作为表单中的name属性,用户是否输入了任何内容都无关紧要。从上面的问题来看,默认选项将是一个空字符串,因为它是列表中的第一个选项。换句话说,如果$\u POST不为空并且您的表单已提交,您的年份索引将在那里。也就是说,我如果JavaScript或其他东西删除了它,我当然不会有什么坏处,所以我修改了答案以反映这一预防措施。我在我的代码问题中包含了一个更新,我似乎还没有完全正常工作,你能看看我哪里出了错,因为如果你想使用$getyear作为代码,我不知道哪里出了错测试一个条件语句,然后您可以在数组中使用$getyear=($\u POST['year',$years),它返回布尔值true或false。然后您只需使用if($getyear)echo“year is Selected”;。你的脚本到底发生了什么?没关系,你解决了问题。它返回的是布尔值,这是问题所在,我已经标记了你的答案。只需一个简单的问题,在页面顶部,我需要包含一个isset,所以isset是否可以像这样显示:“$getyear=(isset($\u POST['year'])?$\u POST['year']:“”;`这就是为什么我不会得到未定义的索引如果有一个带有“year”的select选项作为表单中的name属性,用户是否输入了任何内容都无关紧要。从上面的问题来看,默认选项将是一个空字符串,因为它是列表中的第一个选项。换句话说,如果$\u POST不为空并且您的表单已提交,您的年份索引将在那里。也就是说,我如果JavaScript或其他东西删除了它,我当然不会有什么坏处,所以我修改了答案以反映这一预防措施。我在我的代码问题中包含了一个更新,我似乎还没有完全正常工作,你能看看我哪里出了错,因为如果你想使用$getyear作为代码,我不知道哪里出了错测试一个条件语句,然后你可以在数组中使用$getyear=in_($_POST['year',$years),它返回布尔值true或false。然后你可以简单地使用($getyear)echo'year's Selected';。你的脚本到底发生了什么?没关系,你解决了这个问题。它返回的是布尔值,这就是问题所在,我已经标记了你的答案。
function process_form(){
if(!isset($_POST['year']) || !is_numeric($_POST['year'])){
// Form invalid
return false;
}
$year = $_POST['year'];
// Perform actions - save to database, etc..?
// Form valid
return true;
}
$error = false;
if($_SERVER['REQUEST_METHOD'] == 'POST'){
// Form submitted
$result = process_form();
if($result){
?>
<p>Valid year selected</p>
<?php
exit;
}
$error = true;
}
?>
<form action="" method="post">
<?php if($error){ ?>
<p class="error">You must select the student's current academic year to register</p>
<?php } ?>
<label for="select_year">Academic Year:</label>
<select name="year" id="select_year">
<option value=""></option>
<?php for($year = $start_year; $year <= $end_year; $year++){ ?>
<option value="<?php echo $year;?>"><?php echo $year;?></option>
<?php } ?>
</select>
<button type="submit">Register</button>
</form>