簡體   English   中英

首先回應選定的值

[英]Echo selected value first

當用戶想要進行更新時,我需要首先在表單中回顯所選值。 我嘗試了幾種變體:

1)

<?php 
  $opt= array('1' => 'opt1', '2' => 'opt2', '3' => 'opt3') ;
  echo '<select name="up_opt" >' ;

  foreach ($opt as $i => $value) {
    echo "<option value=\"$i\"";
    if ($_REQUEST['up_opt'] == $i) 
    {
      echo "selected" ; 
    }
    echo ">$opt[$i]</option>" ;
  }
  echo '</select>' ;
?>

2)

<?php $opt= array('1' => 'opt1', '2' => 'opt2', '3' => 'opt3') ;
  $edu = $_REQUEST['edu']; 
  <select name="up_opt">     
    <?php foreach ( $opt as $i=>$opt ) : ?>       
      <option value="<?php echo $i?>" <?php echo $i == $edu ? 'selected' : ''?>><?php echo $opt ?></option>
    <?php endforeach; ?>
  </select>

3)

<select name="up_opt">
    <option value="1" <?php if ($_GET['1'] == 'option1') { echo 'selected'; } ?>>Opt1</option>
    <option value="2" <?php if ($_GET['2'] == 'option2') { echo 'selected'; } ?>>Opt2</option>
    <option value="3" <?php if ($_GET['3'] == 'option3') { echo 'selected'; } ?>>Opt3</option>
 </select>

這些變體都不會首先回應檢查值。 有人可以幫助我,告訴我什么是錯的或給我另一個變種?

變體3是可以的(但我寧願使用循環而不是硬編碼選項)。 你的錯誤是你比較'option1','option2',那么你的實際值是'1','2','3'。 另外正如@ElefantPhace所說,在選擇之前不要忘記空格,否則你將得到無效的html。 所以它會是這樣的:

<select name="up_opt">
    <option value="1" <?php if ($_GET['up_opt'] == 1) { echo ' selected="selected"'; } ?>>Opt1</option>
    <option value="2" <?php if ($_GET['up_opt'] == 2) { echo ' selected="selected"'; } ?>>Opt2</option>
    <option value="3" <?php if ($_GET['up_opt'] == 3) { echo ' selected="selected"'; } ?>>Opt3</option>
</select>

帶循環:

<?php

$options = array(
    1 => 'Opt1',
    2 => 'Opt2',
    3 => 'Opt3',
);

?>

<select name="up_opt">
<?php foreach ($options as $value => $label): ?>
    <option value="<?php echo $value; ?>" <?php if ($_GET['up_opt'] == 1) { echo ' selected="selected"'; } ?>><?php echo $label; ?></option>
<?php endforeach ?>
</select>

以下是您的三種變體,經過測試並按預期工作。 它們基本上都是一樣的,你只是使用了錯誤的變量名,而不是從示例到示例


1)

<?php
    $opt= array('1' => 'opt1', '2' => 'opt2', '3' => 'opt3') ;
    echo '<select name="up_opt">';
    foreach ($opt as $i => $value) {
        echo "<option value=\"$i\"";
        if ($_POST['up_opt'] == $i){
            echo " selected"; 
        }
        echo ">$value</option>";
    }
    echo '</select>';
?>

2)使用與上面相同的陣列

$edu = $_POST['up_opt']; 
echo '<select name="up_opt">';
foreach ( $opt as $i => $value ){       
    echo "<option value=\"$i\"", ($i == $edu) ? ' selected' : '';
    echo ">$value</option>";
}
echo "</select>";

3)

echo '<select name="up_opt">';
echo '<option value="1"', ($_POST['up_opt'] == '1') ? 'selected':'' ,'>Opt1</option>';
echo '<option value="2"', ($_POST['up_opt'] == '2') ? 'selected':'' ,'>Opt2</option>';
echo '<option value="3"', ($_POST['up_opt'] == '3') ? 'selected':'' ,'>Opt3</option>';
echo '</select>';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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