用于清除php查询的下拉选项

用于清除php查询的下拉选项,php,mysql,Php,Mysql,我有下面的下拉框,它使用PHP查询来获取数据。它创建了一个包含3个条目的下拉列表:汽车、卡车、火车。在我选择一个选项后,它将执行一个GET,PHP将使用所选的类别进行更新。我添加了一个按类别显示文本的静态选项。如果我选择一个类别,然后返回“按类别查看”,我希望所有结果(汽车、卡车和火车)都能再次显示 <form name="form1" action="" method="GET"> <select name="category" onchange="this.form.sub

我有下面的下拉框,它使用PHP查询来获取数据。它创建了一个包含3个条目的下拉列表:汽车、卡车、火车。在我选择一个选项后,它将执行一个
GET
,PHP将使用所选的类别进行更新。我添加了一个按类别显示文本的静态选项。如果我选择一个类别,然后返回“按类别查看”,我希望所有结果(汽车、卡车和火车)都能再次显示

<form name="form1" action="" method="GET">
<select name="category" onchange="this.form.submit();">
<option value="">View By Category...</option>
<?php while ($rows = mysql_fetch_array($query_category)) { ?>

<?php if(isset($_GET['category'])) { ?>

<option value="<?php echo $rows['category']; ?>" <?php echo $rows['category'] == $category ? 'selected' : '' ?> ><?php echo $rows['category'] ?></option>

<?php } else {?>

<option value="<?php echo $rows['category']; ?>"><?php echo $rows['category'] ?></option>

<?php } ?>

<?php } ?>  
</select>
</form>

按类别查看。。。

按类别查看。。。

我发现了一个未声明的$category变量,我假设它是$\u GET['category'] 您可能希望在这里对用户输入进行更好的卫生处理

当用户选择
VIEW BY CATEGORY
从而导致url变为
http://localhost/edit.php?category=
您应该设置一个测试,根据
$\u GET['category
是否为空来选择记录

即:


按类别查看。。。

我发现了一个未声明的$category变量,我假设它是$\u GET['category'] 您可能希望在这里对用户输入进行更好的卫生处理

当用户选择
VIEW BY CATEGORY
从而导致url变为
http://localhost/edit.php?category=
您应该设置一个测试,根据
$\u GET['category
是否为空来选择记录

即:


按类别查看。。。
试试这个:

//This checks if variable defined
if(isset($_GET['category'])&&$_GET['category']!='') 
问题是GET变量已设置,因此条件的计算结果为true。您需要考虑要设置的变量,但该变量等于零(实际值)

按照建议执行将意味着不再运行第一个查询,而是恢复运行第二个查询,并接收整个项目列表。

尝试以下操作:

//This checks if variable defined
if(isset($_GET['category'])&&$_GET['category']!='') 
问题是GET变量已设置,因此条件的计算结果为true。您需要考虑要设置的变量,但该变量等于零(实际值)


按照建议执行将意味着,您将不再运行第一个查询,而是返回到运行第二个查询,并接收整个项目列表。

我需要从类别中创建列表的代码来帮助您。我想我可以看到它,请查看下面的答案,并查看它是否有帮助:)此外-这是一个灾难的秘诀。不要相信用户输入,al清理超级全局的方法。请看这篇文章我需要从类别中创建列表的代码来帮助你。我想我可以看到它,看看下面的答案,看看它是否有帮助:)此外-这是一个灾难的秘诀。永远不要相信用户输入,始终清理超级全局。请看这篇文章我认为这并不能回答问题。我将其解释为“如果选择了“按类别查看”选项,我如何将汽车、卡车和火车列出来?”我认为这并不能回答这个问题。我将其解释为“如果选择了“按类别查看”选项,我如何将汽车、卡车和火车列出来?”谢谢。这确实对我有所帮助。我给出了观点,但没有回答,因为RamRaider给出了解决方案首先。我没有包括查询代码的错误。:)没问题-但请先阅读SQL注入,然后再阅读mysqli或PDO。这确实帮了我的忙。我给了你点意见,但没有回答,因为RamRaider首先给出了解决方案。我没有包括查询代码的错误。:)没问题-但是请请阅读SQL注入,然后阅读mysqli或pdo
<?php
    if( $_SERVER['REQUEST_METHOD']=='GET' ){
        if( isset( $_GET['category'] ) )    {
            if( !empty( $_GET['category'] ) ){
                /* sql: query using known category from url */
            } else {
                /* sql: query to get all records as no category defined */
            }
        }
    }
?>

<form name='form1' action='' method='GET'>
    <select name='category' onchange='this.form.submit();'>
        <option value=''>View By Category...</option>

        <?php   
            while ( $rows = mysql_fetch_array( $query_category ) ) { 
                if( isset( $_GET['category'] ) ) {
                    /* There appeared to be an undeclared variable $category here */
                    $category=trim( $_GET['category'] );
                    $selected=$rows['category'] === $category ? 'selected' : '';
                    echo "<option value='{$rows['category']}' {$selected}>{$rows['category']}</option>";
                } else {
                    echo "<option value='{$rows['category']}'>{$rows['category']}</option>";
                }
            }
        ?>  
    </select>
</form>
<?php
    //Establish Connection with Server
    $connection = mysql_connect("localhost", "em", "em");
    $db = mysql_select_db( "em", $connection );

    /* If category is defined in url, filter and assign as a variable - otherwise it is false */ 
    $category = isset( $_GET['category'] ) && !empty( $_GET['category'] ) ? strip_tags( filter_input( INPUT_GET, 'category', FILTER_SANITIZE_STRING ) ) : false;


    $query_featured = mysql_query("SELECT * FROM `tblClients` c WHERE c.`package` = 'featured'", $connection);  
    $query_category = mysql_query("SELECT * FROM `tblCategory`", $connection); 


    if( $_SERVER['REQUEST_METHOD']=='GET' ){
        if( $category ){
            /* sql: query using known category from url */
            $sql="SELECT * FROM `tblClients` c  WHERE c.`package`='standard' AND c.`category` = '$category'";
        } else {
            /* sql: query to get all records as no category defined */
            $sql="SELECT * FROM `tblClients` c  WHERE c.`package`='standard'";
        }
        $query=mysql_query( $sql );
    }
?>
//This checks if variable defined
if(isset($_GET['category'])&&$_GET['category']!='')