Php 成功提交后清除选择选项 类别:

Php 成功提交后清除选择选项 类别:,php,Php,您的行中有语法错误: <div class="select_list"> <div class="labels">Category:</div> <?php if(!isset($_POST['postbtn)){ echo "<script>$(document).ready(function(){ $('.category').val(0);

您的行中有语法错误:

<div class="select_list">
    <div class="labels">Category:</div>
    <?php
        if(!isset($_POST['postbtn)){
            echo "<script>$(document).ready(function(){
                $('.category').val(0);
            })
            </script>";
        }
        echo "<select name='category' id='catg_list' class='list_catg'>
            <option value='0'";
                if(isset($_POST['category']) && $_POST['category']=='0'){
                    echo "selected";
                }
            echo">none</option>";
            $query = mysql_query("SELECT id, name from table1");
            while($query_fetch = mysql_fetch_assoc($query)){
                echo "<option value='".$query_fetch['id']."'";
                if(isset($_POST['category']) && $_POST['category']==$query_fetch['id'])
                {
                    echo "selected";
                }
                echo ">".$query_fetch['name']."</option>";
            }
            echo "</select>";
    ?>
</div>
将其更改为:

if(!isset($_POST['postbtn)){
我猜有些事情你没有提到: 在发布的代码上方验证脚本,如果脚本验证成功,则希望选择“无”选项

if(!isset($_POST['postbtn'])){
只有验证正确时,才会设置该值,否则将设置为false

$selected_value = $validation ? $_POST['category'] : false; 

按如下方式简化代码以完成所需任务

<?php
echo "<select name='category' id='catg_list' class='list_catg'>
        <option value='0'"; 
//CHANGE
            if($selected_value == 0){ //Or if($selected_value === FALSE ||$selected_value === 0)
                echo "selected";
            }
        echo">none</option>";
        $query = mysql_query("SELECT id, name from table1");
        while($query_fetch = mysql_fetch_assoc($query)){
            echo "<option value='".$query_fetch['id']."'";
//CHANGE
            if($selected_value !== FALSE && $selected_value == $query_fetch['id'])
            {
                echo "selected";
            }
            echo ">".$query_fetch['name']."</option>";
        }
        echo "</select>";
?>
$category=isset($\u POST['category'])$_POST['category']:0;
$array[“0”]=“无”;
$query=mysql_query(“从表1中选择id、名称”);
而($query\u fetch=mysql\u fetch\u assoc($query)){
$id=$query_fetch['id'];
$array[$id]=$query\u fetch['name'];
}
回声“;
foreach($id=>$name的数组){
$selected=$category==$id?“selected”:“;
回显“$name.”;
}
回声“;

看起来您正在检查默认值是否设置为0?为什么不在默认情况下将该值设置为0呢。这样,无论页面何时加载,它都将被设置为非。实际上,我在表单中有更多的字段,如textfields,这些字段需要在提交之前正确填写。现在,如果有人在其中一个文本字段中输入了错误的数据,则应停止提交,但在这种情况下,如果用户选择了某个元素,则该元素应保持选中状态,并且只有在提交无错误时才应重置为“无”。
    $category = isset($_POST['category']) ? $_POST['category'] : 0;

    $array["0"]="none";
    $query = mysql_query("SELECT id, name from table1");
    while($query_fetch = mysql_fetch_assoc($query)){
        $id = $query_fetch['id'];
        $array[$id] =  $query_fetch['name'];
    }

    echo "<select name='category' id='catg_list' class='list_catg'>";
    foreach($array as $id=>$name) {
        $selected = $category==$id ? "selected" : "";
        echo "<option value='".$id."' ".$selected." >".$name."</option>";
    }
    echo "</select>";