2010-08-13 79 views
5

我想使用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"> 

所以,我有什麼做的?

回答

5
<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"> 

這是一個非常簡單和直接的方法,如果我正確理解你的問題。

+0

我揍你一秒鐘先生!:P – Iznogood 2010-08-13 17:15:27

+0

@Iznogood我認爲你的意思是另一種方式。將鼠標懸停在答案的時間戳上說17:14:48,而在巴特的回答中,它說17:14:47 :) – DavChana 2015-01-17 12:31:16

+2

@Davinder你遲到了5年! :-) – Iznogood 2015-01-17 19:05:11

1

首先給你的選擇一個名字。然後這樣做:

<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> 

這樣做是檢查是否選擇什麼是相同的每個和當它找到回聲「選定」。

-1

此答案與特定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; 
?> 
12

程序員是懶惰......呃....高效....我會做它像這樣:

<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"> 
+0

這是唯一解決選擇數十或數百個選項的解決方案。 +1 – Wes 2014-03-17 05:34:47

0

我假設你正在使用的陣列來創建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來查看專用腳本。

5

你可以使用這個..

<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> 
0

我使用內聯,如果是

($_POST['category'] == $data['id'] ? 'selected="selected"' : false) 
+0

爲了記錄,「inline if」實際上被稱爲「三元操作符」。 – Christian 2014-03-17 20:48:07

0

我有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' ; 
} 

} 
-1

這是我已經想出瞭解決方案:

<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。每個值必須是唯一的。

+2

你不能讓它變得更加低效: ** 1。**只檢查'$ _POST ['go']'一次,而不是循環中的每次迭代** 2。**你的循環沒有照顧數組中的變化,至少使用'count($ arr)'不是一個硬編碼的數字。 ** 3。PHP的foreach()循環自動處理迭代數組並檢索鍵和值 - 因此您不必擁有自己的增量索引。 – Christian 2014-03-17 20:53:05

相關問題