Php 论坛不显示';全部';结果

Php 论坛不显示';全部';结果,php,mysql,Php,Mysql,因此,我在服务器上有一个表,用于保存用户输入的帖子。在这最后一页中,您可以查看它们,您可以选择查看每个人的结果,或者只选择某个特定的天气进行查看。“选择特定天气”部分正在工作,但如果选择“全部”选项,则不会显示任何内容。知道原因吗 View Posts <br> <form method="get" action="view_forum.php"> <label>Select Weather to Filter </label><b

因此,我在服务器上有一个表,用于保存用户输入的帖子。在这最后一页中,您可以查看它们,您可以选择查看每个人的结果,或者只选择某个特定的天气进行查看。“选择特定天气”部分正在工作,但如果选择“全部”选项,则不会显示任何内容。知道原因吗

View Posts 
<br>
<form method="get" action="view_forum.php">
    <label>Select Weather to Filter </label><br />
    <select name="weather">
        <option value="all">all</option>
        <option value="cloudy">Cloudy</option>
        <option value="sunny">Sunny</option>
        <option value="windy">Windy</option>
        <option value="snowy">Snowy</option>
        <option value="mixy">Wintery Mix</option>
        <option value="rainy">Rainy</option>
    </select>
    <input type="submit" value="view" />
</form>

<div id="view">
    <center><img src="images/forum.png" width="589" height="97"></center>
</div>  

<div id="white">
    <div id="blue">
        <div id="grey">
            <div id="container">        
<?php

    $dbc = mysql_connect('html','user','password','database');
    mysql_select_db('database',$dbc);

    $weather = sanitize( $_GET["weather"] ); // keep your input clean

    if ( $weather == "all" ) {
        $sql = "SELECT * FROM stories ORDER BY id DESC";
    } else {
        $sql = "SELECT * FROM stories WHERE weather = '$weather' ORDER BY id DESC";
    }

    while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
        echo "<div class=\"names\"> {$row['name']}<br /></div>";
        echo "<div class=\"weathers\">{$row['weather']}<br /></div>";
        echo "<div class=\"stories\">{$row['story']}<br /></div>";
        echo "<img src=\"images/line.png\" width='800' height='3'>";
        echo "<br />";  
    }
?>
            </div>
        </div>
    </div>
</div>
查看帖子

选择要过滤的天气
全部的 多云 晴朗的 多风的 下雪的 冬季混合 多雨的
如果选择“全部”,则需要完全删除
WHERE
子句


您应该特别注意sql注入,如果可能的话,请转到或 查询的

但您的主要问题是,您对
all
进行查询时,除非您调用了
all
,否则它将找不到它

解决方案是检查
all
选项,并根据该选项更改查询

另外,如果未设置
$\u GET['weather']
,您需要一个默认值,我怀疑您也有错误报告,并且它没有抛出一个通知:未定义错误

<?php 
if(isset($_GET['weather'])){
    $_GET['weather']=mysql_real_escape_string($_GET['weather']);
    //All
    if($_GET['weather'] == 'all'){
        $sql = "SELECT * from stories ORDER BY id DESC";
    }else{
        //Specific
        $sql = "SELECT * from stories WHERE weather='{$_GET['weather']}' ORDER BY id DESC";
    }
}else{
    //Default
    $sql = "SELECT * from stories ORDER BY id DESC";
}
?>

如果
$\u GET['weather']=='all'
,您需要完全删除
WHERE
子句。hmm我收到一个错误,它说清理是一个未定义的函数,我更新了上面的代码。我肯定你所拥有的是正确的!我可能只是输入了错误。@ChristineAustin
sanitize
不是默认函数。这只意味着您需要确保首先检查输入查询的数据。@ChristineAustin您能
echo$sql
在运行它之前,向我们显示它正在运行的查询?问题是您没有使用
mysql\u查询($sql)
@ChristineAustin Lawrence是正确的。您需要运行查询。在上面的答案中查看我的更新。这也给出了一个错误“警告:my_sql_escape_string()期望参数2是一个资源”
,在使用它之前,你需要确保你的连接确实显示了所有帖子,但我仍然收到了这个错误
警告:mysql_real_escape_string()期望参数2是一个资源。
我确信这就是为什么当我选择单个天气查看它时它不再工作的原因。好的,因为您只使用天气键,只需使用
$\u GET['weather']=mysql\u real\u escape\u字符串($\u GET['weather')这是另一种方法,是的。对不起,我太笨了……我是php新手!谢谢你的帮助!
<?php 
if(isset($_GET['weather'])){
    $_GET['weather']=mysql_real_escape_string($_GET['weather']);
    //All
    if($_GET['weather'] == 'all'){
        $sql = "SELECT * from stories ORDER BY id DESC";
    }else{
        //Specific
        $sql = "SELECT * from stories WHERE weather='{$_GET['weather']}' ORDER BY id DESC";
    }
}else{
    //Default
    $sql = "SELECT * from stories ORDER BY id DESC";
}
?>
<?php 
$dbc=mysql_connect('html','user','password','database') or die(mysql_error());
mysql_select_db('database',$dbc) or die(mysql_error());
?>

View Posts <br>
<form method="get" action="view_forum.php">
  <label>Select Weather to Filter </label><br />
  <select name="weather">
    <option value="all">all</option>
    <option value="cloudy">Cloudy</option>
    <option value="sunny">Sunny</option>
    <option value="windy">Windy</option>
    <option value="snowy">Snowy</option>
    <option value="mixy">Wintery Mix</option>
    <option value="rainy">Rainy</option>
  </select>
  <input type="submit" value="view" />
</form>

<div id="view">
 <center><img src="images/forum.png" width="589" height="97"></center>
</div>  
  <div id="white">
    <div id="blue">
      <div id="grey">
       <div id="container">
<?php
if(isset($_GET['weather'])){
$_GET['weather']=mysql_real_escape_string($_GET['weather']);
    //All
    if($_GET['weather'] == 'all'){
        $sql = "SELECT `name`,`weather`,`story`
                FROM stories 
                ORDER BY id DESC";
    }else{
        //Specific
        $sql = "SELECT `name`,`weather`,`story`
                FROM stories 
                WHERE weather='{$_GET['weather']}' 
                ORDER BY id DESC";
    }
}else{
    //Default
    $sql = "SELECT `name`,`weather`,`story`
            FROM stories 
            ORDER BY id DESC";
}

$result = mysql_query($sql);

if(mysql_num_rows($result)>0){
    while($row=mysql_fetch_assoc($result)){
        echo "<div class=\"names\"> {$row['name']}<br /></div>";
        echo "<div class=\"weathers\">{$row['weather']}<br /></div>";
        echo "<div class=\"stories\">{$row['story']}<br /></div>";
        echo "<img src=\"images/line.png\" width='800' height='3'>";
        echo "<br />";
    }
}else{
    echo 'No results';
}
?>
</div>
</div>
</div>
</div>