Echo'选择'在使用PHP的html5下拉表单中

时间:2016-12-14 18:09:12

标签: php html5 forms echo dropdown

我有一个表单,用于将用户信息提取到$ row变量中,因此如果数据库中存在该行,则填充表单,但是如果用户在其他地方出错,则通过$ _POST全局变量保存任何新输入表格。一切都很好。

    <label for="qualification2">Grade:</label>
        <input type="text" name="qualification2" id="grade2" class="form-control" 
        value="<?php if(isset($_POST['qualification2'])) { 
        echo $_POST['qualification2']; 
        } else { echo ($row ['qualification2']); } ?>">

我想使用选择下拉框执行类似操作,但代码似乎与下拉框的工作方式相同,我不知道我做错了什么,或者这是否可行。

我也试过来自$ row变量的回声,但这不起作用

    <?php if($row['qualMonth2'] == 'February') { echo ' selected'; } ?>

这是我的代码:

    <select input type="text" name="qualMonth2" id="qualMonth2" value="Select Month">
         <option value="January" <?php if(isset($_POST['qualMonth2']) == 'January') { echo ' selected'; } ?>>January</option>
          <option value="February" <?php if(isset($_POST['qualMonth2']) == 'February') { echo ' selected'; } ?>>February</option>
          <option value="March" <?php if(isset($_POST['qualMonth2']) == 'March') { echo ' selected'; } ?>>March</option>
          <option value="April" <?php if(isset($_POST['qualMonth2']) == 'April') { echo ' selected'; } ?>>April</option>
          <option value="May" <?php if(isset($_POST['qualMonth2']) == 'May') { echo ' selected'; } ?>>May</option>
          <option value="June" <?php if(isset($_POST['qualMonth2']) == 'June') { echo ' selected'; } ?>>June</option>
          <option value="July" <?php if(isset($_POST['qualMonth2']) == 'July') { echo ' selected'; } ?>>July</option>
          <option value="August" <?php if(isset($_POST['qualMonth2']) == 'August') { echo ' selected'; } ?>>August</option>
          <option value="September" <?php if(isset($_POST['qualMonth2']) == 'September') { echo ' selected'; } ?>>September</option>
          <option value="October" <?php if(isset($_POST['qualMonth2']) == 'October') { echo ' selected'; } ?>>October</option>
          <option value="November" <?php if(isset($_POST['qualMonth2']) == 'November') { echo ' selected'; } ?>>November</option>
          <option value="December" <?php if(isset($_POST['qualMonth2']) == 'December') { echo ' selected'; } ?>>December</option>
      </select>

3 个答案:

答案 0 :(得分:1)

isset根据是否设置变量验证为true还是false。您无法使用isset检查值。

使用小实用程序功能检查条件:

function checkSelected($value) {
    if(isset($_POST['qualMonth2']) && $_POST['qualMonth2'] == $value) {
        return true;
    } else {
        return false;
    }
}

你的选择元素应该是:

<select input type="text" name="qualMonth2" id="qualMonth2" value="Select Month">
    <option value="January" <?php echo checkSelected('January') ? 'selected':'' ?>>January</option>
    <option value="February" <?php echo checkSelected('February') ? 'selected':'' ?>>February</option>
    <option value="March" <?php echo checkSelected('March') ? 'selected':'' ?>>March</option>
    <option value="April" <?php echo checkSelected('April') ? 'selected':'' ?>>April</option>
    <option value="May" <?php echo checkSelected('May') ? 'selected':'' ?>>May</option>
    <option value="June" <?php echo checkSelected('June') ? 'selected':'' ?>>June</option>
    <option value="July" <?php echo checkSelected('July') ? 'selected':'' ?>>July</option>
    <option value="August" <?php echo checkSelected('August') ? 'selected':'' ?>>August</option>
    <option value="September" <?php echo checkSelected('September') ? 'selected':'' ?>>September</option>
    <option value="October" <?php echo checkSelected('October') ? 'selected':'' ?>>October</option>
    <option value="November" <?php echo checkSelected('November') ? 'selected':'' ?>>November</option>
    <option value="December" <?php echo checkSelected('December') ? 'selected':'' ?>>December</option>
</select>

答案 1 :(得分:0)

让我们看看你写的是什么..

<option value="February" <?php if(isset($_POST['qualMonth2']) == 'February') { echo ' selected'; } ?>>February</option>

您所说的是..如果为qualMonth2设置了值(true / false),请将其与字符串进行比较..

所以你要比较真实的||对字符串的错误。

isset($_POST['qualMonth2'])返回true // false。

所以没有人会被选中。

重构它..

<?php 
 $month = "";

 if(isset($_POST['qualification2'])){
   $month = $_POST['qualification2'];
 }
?>

然后使用$month作为比较值。

<option value="July" <?php if($month == 'July') { echo ' selected'; } ?>>July</option>

答案 2 :(得分:0)

我更喜欢在Javascript中执行这些检查(我更喜欢JQuery),我认为它会清理代码,但您也可以通过使用生成月份的循环来大大简化这一过程。

循环播放1-12以获得输出

<select input type="text" name="qualMonth2" id="qualMonth2" value="Select Month">
<?php
for($i=1; $i<=12; $i++) {
    $dateObj   = DateTime::createFromFormat('!m', $i);
    $monthName = $dateObj->format('F');
    echo "<value>" . $monthName . "</option>";
}
?>
</select>

这种方法采用DRY(不重复)方法。如果您需要修改某些内容,则只需要修改1行代码而不是12行。

选择值的Jquery (如果未设置$ _POST [&#39; qualMonth2&#39;],则默认为1月):

<script>
     $('#qualMonth2').val("<?php echo (isset($_POST['qualMonth2'])) ? $_POST['qualMonth2'] : 'January' ?>");
</script>

从这个答案中拿出你的意思,我只是向你展示了两种可能性,你可以通过在循环中添加一个检查来避免Javascript。