[英]A better solution to handle PHP and HTML <option> logic
想知道你是否可以告訴我一個更好的方法來處理這個邏輯? 我寫了這篇文章並為此感到非常慚愧。 你能告訴我這個邏輯的更好的優化版本嗎?
PS $ result [“item”]; 返回一個整數。
$type = $result["item"];
switch ($type){
case "1":
$type_output = '
<option value="1" selected>Cash</option>
<option value="2">Cheque</option>
<option value="3">Debit Card</option>
<option value="4">Credit Card</option>';
break;
case "2":
$type_output = '
<option value="1">Cash</option>
<option value="2" selected>Cheque</option>
<option value="3">Debit Card</option>
<option value="4">Credit Card</option>';
break;
case "3":
$type_output = '
<option value="1">Cash</option>
<option value="2">Cheque</option>
<option value="3" selected>Debit Card</option>
<option value="4">Credit Card</option>';
break;
case "4":
$type_output = '
<option value="1">Cash</option>
<option value="2">Cheque</option>
<option value="3">Debit Card</option>
<option value="4" selected>Credit Card</option>';
break;
}
HTML
<td>
<select style="width:200px;" name="payment_type">
<option value=""> </option>
'.$type_output.'
</select>
</td>
謝謝
我會用這種方法
$type = $result["item"];
$type_output = "";
$options =array(
"1"=>"cash",
"2"=>"Cheque",
"3"=>"Debit Card",
"4"=>"Credit Card",
);
foreach($options as $value=>$text) {
$type_output .= "<option value=\"$value\"".($type==$value? " selected" : "").">$text</option>\n";
}
你可以這樣做,只做一次
<option value="1" <?php if ($type == 1) echo "selected"; ?>>Cash</option>
<option value="2" <?php if ($type == 2) echo "selected"; ?>>Cheque</option>
<option value="3" <?php if ($type == 3) echo "selected"; ?>>Debit Card</option>
<option value="4" <?php if ($type == 4) echo "selected"; ?>>Credit Card</option>
你在這里重復很多東西。 你可以做點什么
<option value="..." <?php if($type == 1) { print "selected"; } ?> >Something</option>
這可行,但是你可能最好使用模板引擎並讓它為你處理這類東西。
http://www.smarty.net/docsv2/en/language.function.html.options.tpl
在您的文檔中嘗試此操作:
<option value="1" <?php if ($type == 1) echo 'selected="selected"' ?>>Cash</option>
<option value="2" <?php if ($type == 2) echo 'selected="selected"' ?>>Cheque</option>
<option value="3" <?php if ($type == 3) echo 'selected="selected"' ?>>Debit Card</option>
<option value="4" <?php if ($type == 4) echo 'selected="selected"' ?>>Credit Card</option>'
請記住, selected
它本身是無效的,至少在XHTML中是這樣。 您可以在HTML5中使用它,但就我個人而言,我會正確地執行它,如上所述。 無論哪種方式,請確保根據W3C驗證器檢查HTML輸出。
此外,我傾向於不像你所做的那樣在PHP字符串中包裝大塊的HTML; 最好使用HTML模式並進入需要動態輸出的PHP。 這使您的IDE可以理解文檔的結構,並允許語法着色和自動完成工作。
嘗試這個
type_output = '
<option value="1"'.($type == 1 ? " selected" : "").'>Cash</option>
<option value="2"'.($type == 2 ? " selected" : "").'>Cheque</option>
<option value="3"'.($type == 3 ? " selected" : "").'>Debit Card</option>
<option value="4"'.($type == 4 ? " selected" : "").'>Credit Card</option>';
你可以使用這樣的函數:
function selected($selected, $current) {
if($selected == $current)
return "selected";
}
接着:
$options = array(
1 => 'Cash',
2 => 'Cheque',
3 => 'Debit Card',
4 => 'Credit Card'
);
foreach($options as $value => $option)
echo '<option value="'.$value.'" '.selected($value, $type).'>'.$option.'</option>';
請注意, selected
功能也適用於其他類似情況。
羞愧)))
sel = document.getElementById("select_id");
if($type>=0&&$type<sel.options.length)
sel.options[$type].selected=true;
在onDo或更好的onDomReady上執行它...或者只是在您選擇代碼之后。 不要忘記分配一個id:
<select id="select_id">...
如果你正在控制輸入,那么它只是一行 JS:
document.getElementById("select_id").options[$type].selected=true;
這是我怎么做的。
$options = array(
"1"=>"Cash",
"2"=>"Cheque",
"3"=>"Debit Card",
"4"=>"Credit Card"
);
$type = $result['item'];
$type_output = "";
foreach($options as $value=>$text) {
if($value==$type){
$selected = " selected";
}
else {
$selected = "";
}
$type_output .= '<option value="'.$value.'"'.$selected.'>'.$text.'</option>';
}
剛剛注意到Chumkiu有一個類似的答案,但無論如何我會發布我的,以防一些人比三元if語句更清楚
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.