【问题标题】:Where clause if null show all, if where = $variable show $variableWhere 子句 if null 显示所有,如果 where = $variable 显示 $variable
【发布时间】:2014-08-29 08:41:22
【问题描述】:

我有点卡在我正在做的一些代码上。

这是我已有的代码

HTML 代码:

<form method="post" action="index.php" >
<select name="sortby" class="sortby" >
        <option value=" ORDER BY id DESC">Date Added (Newest First)</option>
        <option value=" ORDER BY id ASC">Date Added (Oldest First)</option>
        <option value="ORDER BY clicks DESC">Website Clicks </option>
        <input type="submit" value="Submit"  />
      </select>
</form>
<form method="post" action="index.php">
<select name="country" class="sortby">
<option value="">Country...</option>
<option value="AF">Afghanistan</option>
<option value="AL">Albania</option>
<option value="DZ">Algeria</option>
<option value="AS">American Samoa</option>
<option value="AD">Andorra</option>
.... and so on
</select>
<input type="submit" value="Submit"  />

PHP 代码:

$sortby = $_POST['sortby'];
$sortby = $mysqli->real_escape_string($sortby);
$country = $_POST ['country'];
$country = $mysqli->real_escape_string($country);


$results = $mysqli->query("SELECT id, link, image, title, description, country, clicks FROM isc_links WHERE approved=1 $sortby");


while($row = $results->fetch_assoc()) {

    print '<div id="linkmainwrapper"><div id="linkwrapper"><div class="linkimageborder"><div class="linkimage"><a href="http://'.$row["link"].'" target="_blank">'.$row["image"].'</a></div></div>';
    print '<div class="linktitle"><a href="clickcounter.php?id='.$row["id"].'" target="_blank">'.$row["title"].'</a></div>';
    print '<div class="link">('.$row["link"].')</div>';
    print '<div class="countryflag"><img src="http://www.hatblocksdirect.co.uk/lib/flags/'.$row["country"].'.gif"></div>';

    print '<div class="linkdescription">'.$row["description"].'</div>';
    print '<div class="clickcount">Website Clicks ('.$row["clicks"].')</div></div></div>';

我想做的是对列进行排序。第一个排序框有效,我可以使用 $sortby 按网站点击次数、id 等排序。

我已经使用选择下拉列表传递了$country,但我不知道如何在我的选择查询中实现它。如果没有选择一个国家,我需要它来显示所有条目。一旦选择了一个国家,就只显示那个国家。

非常感谢任何帮助

【问题讨论】:

    标签: php select mysqli where


    【解决方案1】:

    根据是否提供参数,将WHERE子句的附加条件放入变量中。

    if (!empty($_POST['country'])) {
        $country = "AND country = '" . $mysqli->real_escape_string($country) . "'";
    } else {
        $country = "";
    }
    
    $results = $mysqli->query("SELECT id, link, image, title, description, country, clicks FROM isc_links WHERE approved=1 $country $sortby");
    

    【讨论】:

    • 谢谢,效果很好。正是我想要做的。
    【解决方案2】:

    使用if 之类的条件

    if(isset($_POST ['country']))
    {    // if country is set
       $country = $mysqli->real_escape_string($_POST ['country']);
       $sql="SELECT id, link, image, title, description, country, clicks FROM isc_links WHERE approved=1 and country='$country' $sortby";
    }
    else
    {  // if country is not se
       $sql="SELECT id, link, image, title, description, country, clicks FROM isc_links WHERE approved=1 $sortby";
    }
    $results = $mysqli->query($sql);    // execute the query
    

    【讨论】:

      猜你喜欢
      • 2022-07-07
      • 2018-09-06
      • 2011-03-02
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多