簡體   English   中英

處理PHP和HTML的更好解決方案 <option>邏輯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM