如何从PHP中有预选选项的select中获取值


How to get value from select in which there is preselected option in PHP

我使用此代码向用户显示下拉列表。提交表单时,我使用$_POST['newproduct']来获取值。变量$isNewProduct只能是0 or 1

index.php

<?php
    require "db.php";
    $link = mysqli_connect($_srvr, $_user, $_pass, $_db);
    $query = "SELECT `new_product` FROM `products` WHERE `id`=1";
    $result = mysqli_query($link, $query);
    $row = mysqli_fetch_array($result); 
    $isNewProduct = $row[0];
    mysqli_close($link);
?>
<form action="update.php" method="post">
    <select name="newproduct">
        <option value="0" <?php echo $isNewProduct ? "" : "selected" ; ?> >No</option>
        <option value="1" <?php echo $isNewProduct ? "selected" : "" ; ?> >Yes</option>
    </select>
    <input type="submit" value="Update" name="update_info_btn" />
</form>

update.php

if( isset($_POST['update_info_btn']) ) {
    $new_product = $_POST['newproduct'];
    // query to update the row with $new_product in DB.
}

现在,如果$isNewProduct = 1,那么选项"YES"是预先选择的,当选项更改为"NO"并提交表单时,$_POST['newproduct']总是给出1

同样,我还有一个下拉列表,其中我有大约20个选项,其中一个是在更改选项后提交表单时预先选择的,它总是给出预先选择的值。

用以下代码替换您的代码。。。

<?php
$newproduct='';
if(isset($_POST['newproduct'])
{
    $newproduct=$_POST['newproduct'];
}
?>
<select name="newproduct">
        <option value="0" <?php if($newproduct ==0){echo 'selected="selected"';} ?> >No</option>
         <option value="1" <?php if($newproduct ==1){echo 'selected="selected"';} ?> >Yes</option>
</select>