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