简体   繁体   English

首先回应选定的值

[英]Echo selected value first

I need to echo the selected value first in a form when user wants to make an update. 当用户想要进行更新时,我需要首先在表单中回显所选值。 I tried several variants: 我尝试了几种变体:

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

None of these variants echoes the checked value first. 这些变体都不会首先回应检查值。 Can someone help me, tell me what is wrong or give me another variant? 有人可以帮助我,告诉我什么是错的或给我另一个变种?

Variant 3 is ok (but I'd rather use a loop instead of hard-coded options). 变体3是可以的(但我宁愿使用循环而不是硬编码选项)。 Your mistake is that you compare 'option1', 'option2' and so one when your real values are '1', '2', '3'. 你的错误是你比较'option1','option2',那么你的实际值是'1','2','3'。 Also as @ElefantPhace said, don't forget about spaces before selected , or you'll get invalid html instead. 另外正如@ElefantPhace所说,在选择之前不要忘记空格,否则你将得到无效的html。 So it would be this: 所以它会是这样的:

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

With loop: 带循环:

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

Here is all three of your variants, tested and working as expected. 以下是您的三种变体,经过测试并按预期工作。 They are all basically the same, you were just using the wrong variable names, and different ones from example to example 它们基本上都是一样的,你只是使用了错误的变量名,而不是从示例到示例


1) 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) uses same array as above 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) 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