如何预先选择一个HTML下拉列表与PHP?
我想使用PHP选择选项,但我用完了想法!如何预先选择一个HTML下拉列表与PHP?
下面是代码我已经试过至今:
<select>
<option value="1">Yes</options>
<option value="2">No</options>
<option value="3">Fine</options>
</select>
<input type="text" value="" name="name">
<input type="submit" value="go" name="go">
所以,我有什么做的?
<select>
<option value="1" <?php if ($myVar==1) echo 'selected="selected"';?>>Yes</options>
<option value="2" <?php if ($myVar==2) echo 'selected="selected"';?>>No</options>
<option value="3" <?php if ($myVar==3) echo 'selected="selected"';?>>Fine</options>
</select>
<input type="text" value="" name="name">
<input type="submit" value="go" name="go">
这是一个非常简单和直接的方法,如果我正确理解你的问题。
首先给你的选择一个名字。然后这样做:
<select name="my_select">
<option value="1" <?= ($_POST['my_select'] == "1")? "selected":"";?>>Yes</options>
<option value="2" <?= ($_POST['my_select'] == "2")? "selected":"";?>>No</options>
<option value="3" <?= ($_POST['my_select'] == "3")? "selected":"";?>>Fine</options>
</select>
这样做是检查是否选择什么是相同的每个和当它找到回声“选定”。
此答案与特定recepient无关,但可能对其他人有用。 我与从数据库返回的值选择正确的'选项'有类似的问题。 我解决了它通过添加额外的标签与应用显示:无。
<?php
$status = "NOT_ON_LIST";
$text = "<html>
<head>
</head>
<body>
<select id=\"statuses\">
<option value=\"status\" selected=\"selected\" style=\"display:none\">$status</option>
<option value=\"status\">OK</option>
<option value=\"status\">DOWN</option>
<option value=\"status\">UNKNOWN</option>
</select>
</body>
</html>";
print $text;
?>
程序员是懒惰......呃....高效....我会做它像这样:
<select><?php
$the_key = 1; // or whatever you want
foreach(array(
1 => 'Yes',
2 => 'No',
3 => 'Fine',
) as $key => $val){
?><option value="<?php echo $key; ?>"<?php
if($key==$the_key)echo ' selected="selected"';
?>><?php echo $val; ?></option><?php
}
?></select>
<input type="text" value="" name="name">
<input type="submit" value="go" name="go">
这是唯一解决选择数十或数百个选项的解决方案。 +1 – Wes 2014-03-17 05:34:47
我假设你正在使用的阵列来创建select
表单输入。 在这种情况下,使用数组:
<?php
$selected = array($_REQUEST['yesnofine'] => 'selected="selected"');
$fields = array(1 => 'Yes', 2 => 'No', 3 => 'Fine');
?>
<select name=‘yesnofine'>
<?php foreach ($fields as $k => $v): ?>
<option value="<?php echo $k;?>" <?php @print($selected[$k]);?>><?php echo $v;?></options>
<?php endforeach; ?>
</select>
如果没有,你可能只是展开上述循环,而且还使用数组。
<option value="1" <?php @print($selected[$k]);?>>Yes</options>
<option value="2" <?php @print($selected[$k]);?>>No</options>
<option value="3" <?php @print($selected[$k]);?>>Fine</options>
注意到我不知道:
- 你是如何命名您的输入,所以我为它做了一个名字。
- 哪种方式你在服务器端处理你的表单输入,我用
$_REQUEST
,
你将不得不去适应的代码,如果任何匹配您正在使用的框架的要求。
而且,在许多框架中习惯使用the alternative syntax来查看专用脚本。
你可以使用这个..
<select name="select_name">
<option value="1"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='1')?' selected="selected"':'');?>>Yes</option>
<option value="2"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='2')?' selected="selected"':'');?>>No</option>
<option value="3"<?php echo(isset($_POST['select_name'])&&($_POST['select_name']=='3')?' selected="selected"':'');?>>Fine</option>
</select>
我使用内联,如果是
($_POST['category'] == $data['id'] ? 'selected="selected"' : false)
为了记录,“inline if”实际上被称为“三元操作符”。 – Christian 2014-03-17 20:48:07
我有2个PHP文件和我做了这一点,它的工作原理。 (这是一个例子)第一个代码来自一个文件,第二个代码来自两个文件。
<form action="two.php" method="post">
<input type="submit" class="button" value="submit" name="one"/>
<select name="numbers">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
</select>
</form>
if(isset ($_POST['one']))
{
if($_POST['numbers']=='1')
{
$a='1' ;
}
else if($_POST['numbers']=='2')
{
$a='2' ;
{
else if ($_POST['numbers']=='3')
{
$a='3' ;
}
}
这是我已经想出了解决方案:
<form name = "form1" id = "form1" action = "#" method = "post">
<select name = "DropDownList1" id = "DropDownList1">
<?php
$arr = array('Yes', 'No', 'Fine'); // create array so looping is easier
for($i = 1; $i <= 3; $i++) // loop starts at first value and ends at last value
{
$selected = ''; // keep selected at nothing
if(isset($_POST['go'])) // check if form was submitted
{
if($_POST['DropDownList1'] == $i) // if the value of the dropdownlist is equal to the looped variable
{
$selected = 'selected = "selected"'; // if is equal, set selected = "selected"
}
}
// note: if value is not equal, selected stays defaulted to nothing as explained earlier
echo '<option value = "' . $i . '"' . $selected . '>' . $arr[$i] . '</option>'; // echo the option element to the page using the $selected variable
}
?>
</select> <!-- finish the form in html -->
<input type="text" value="" name="name">
<input type="submit" value="go" name="go">
</form>
我的作品,只要值是一些数字顺序(升序或降序)整数代码。它所做的是在html中启动下拉列表,并在php代码中添加每个选项元素。如果你有随机值,它将不起作用,例如:1,4,2,7,6。每个值必须是唯一的。
你不能让它变得更加低效: ** 1。**只检查'$ _POST ['go']'一次,而不是循环中的每次迭代** 2。**你的循环没有照顾数组中的变化,至少使用'count($ arr)'不是一个硬编码的数字。 ** 3。PHP的foreach()循环自动处理迭代数组并检索键和值 - 因此您不必拥有自己的增量索引。 – Christian 2014-03-17 20:53:05
我揍你一秒钟先生!:P – Iznogood 2010-08-13 17:15:27
@Iznogood我认为你的意思是另一种方式。将鼠标悬停在答案的时间戳上说17:14:48,而在巴特的回答中,它说17:14:47 :) – DavChana 2015-01-17 12:31:16
@Davinder你迟到了5年! :-) – Iznogood 2015-01-17 19:05:11