使用<select>对mysql数据库进行排序但没有任何反应

时间:2015-11-26 11:54:12

标签: php mysql sorting

这是我的MySQL代码: $ sql =“SELECT * FROM ProductManagement ORDER BY ID ASC;”; $ result = $ connection-&gt; query($ sql); if($ result-&gt; num_rows&gt; 0){     echo“&lt; p&gt;&lt; table&gt;     &LT; TR&GT;     &LT的第i; ID&LT; /第&GT;     &lt; th&gt;电影名称&lt; / th&gt;     &LT的第i;制作&LT; /第&GT;     &lt; th&gt;发布年份&lt; / th&gt;     &LT的第i;股票及LT; /第&GT;     &LT的第i;价格&LT; /第&GT;     &LT的第i;作用&LT; /第&GT;     &LT; / TR&gt;“中;     while($ row = $ result-&gt; fetch_assoc()){   回声“     &LT; TR&GT;         &LT; TD&gt; “中[ID ”]。“ &LT $行。”; / TD&GT;         &LT; TD&gt; “中[FilmName ”]。“ &LT $行。”; / TD&GT;         &LT; TD&gt; “中$行。[ ”生产者“]。” &LT; / TD&GT;         &LT; TD&GT;&LT “$行[ 'YearPublished']。”; / TD&GT;         &LT; TD&GT;&LT “$行[ '库存']。”; / TD&GT;         &LT; TD&GT;&LT “$行[ '价格']。”; / TD&GT;         &lt; td&gt;&lt; a href = \“edit.php?ID =”。$ row [“ID”]。“\”&gt;编辑&lt; / a&gt;         &lt; td&gt;&lt; a href = \“delete.php?ID =”。$ row [“ID”]。“\”&gt;删除&lt; / a&gt;     &LT; / TR&gt;“中;     }     echo“&lt; / table&gt;”; } 其他{     echo“0结果”; }  $ sort = @ $ _ POST ['order']; if($ _GET ['sortby'] =='1') {      “SELECT * FROM ProductManagement ORDER BY FilmName ASC”; } elseif($ _GET ['sortby'] =='2') {     “SELECT * FROM ProductManagement ORDER BY FilmName DESC”; } 表格代码在这里: &lt; form name =“sort”action =“”method =“post”&gt;     &lt; select name =“sortby”&gt;     &lt; option value =“1”&gt;电影名称 - 升序&lt; /选项&gt;     &lt; option value =“2”&gt;电影名称 - 降序&lt; /选项&gt;     &lt; input type =“submit”value =“Sort”/&gt; &LT; /选择&GT; &LT;形式&GT; 我试图通过电影名称按升序或降序对表格进行排序。但是,当我单击任一按钮的提交时,数据库不会执行任何操作并且没有任何操作。我该怎么办?谢谢

5 个答案:

答案 0 :(得分:1)

根据@AshishChoudhury的建议,您需要使用$_POST['sortby'] 而不是使用$_GET['sortby'],因为您的表单使用POST而不是GET。

使用这个

if (isset($_POST['sortby']) && $_POST['sortby'] == '1')
{
    $sql = "SELECT * FROM ProductManagement ORDER BY FilmName ASC";
}
elseif (isset($_POST['sortby']) && $_POST['sortby'] == '2')
{
    $sql = "SELECT * FROM ProductManagement ORDER BY FilmName DESC";
}
else 
{
    $sql = "SELECT * FROM ProductManagement ORDER BY ID ASC;";
}
$result = $connection->query($sql);

if ($result->num_rows > 0) {
    echo "<p><table>
    <tr>
    <th>ID</th>
    <th>Film Name</th>
    <th>Producer</th>
    <th>Year Published</th>
    <th>Stock</th>
    <th>Price</th>
    <th>Function</th>
    </tr>";
    while($row = $result->fetch_assoc()) {
  echo "
    <tr>
        <td>".$row["ID"]."</td>
        <td>".$row["FilmName"]."</td>
        <td>".$row["Producer"]."</td>
        <td>".$row['YearPublished']."</td>
        <td>".$row['Stock']."</td>
        <td>".$row['Price']."</td>
        <td><a href=\"edit.php?ID=".$row["ID"]."\">Edit</a>
        <td><a href=\"delete.php?ID=".$row["ID"]."\">Delete</a>
    </tr>";
    }
    echo "</table>";
} 
else {
    echo "0 results";
}

答案 1 :(得分:0)

我认为您应该将线重新排列为下面的内容

$sort = @$_POST['order'];

if (isset($_POST['sortby']) && $_POST['sortby'] == '1')
{
    $sql = "SELECT * FROM ProductManagement ORDER BY FilmName ASC";
}
elseif (isset($_POST['sortby']) && $_POST['sortby'] == '2')
{
    $sql = "SELECT * FROM ProductManagement ORDER BY FilmName DESC";
}
else 
{
    $sql = "SELECT * FROM ProductManagement ORDER BY ID ASC;";
}
$result = $connection->query($sql);

if ($result->num_rows > 0) {
    echo "<p><table>
    <tr>
    <th>ID</th>
    <th>Film Name</th>
    <th>Producer</th>
    <th>Year Published</th>
    <th>Stock</th>
    <th>Price</th>
    <th>Function</th>
    </tr>";
    while($row = $result->fetch_assoc()) {
  echo "
    <tr>
        <td>".$row["ID"]."</td>
        <td>".$row["FilmName"]."</td>
        <td>".$row["Producer"]."</td>
        <td>".$row['YearPublished']."</td>
        <td>".$row['Stock']."</td>
        <td>".$row['Price']."</td>
        <td><a href=\"edit.php?ID=".$row["ID"]."\">Edit</a>
        <td><a href=\"delete.php?ID=".$row["ID"]."\">Delete</a>
    </tr>";
    }
    echo "</table>";
} 
else {
    echo "0 results";
}

答案 2 :(得分:0)

我认为这是您的查询

$sql = "SELECT * FROM ProductManagement ORDER BY ID ASC;";

你要重新排序

所以在它之前你应该选择GET或POST,但是例如我将使用post

$order = $_POST['order'];// this can be DESC or ASC

然后将$ order放入查询

$sql = "SELECT * FROM ProductManagement ORDER BY FilmName $order;";

所以在您的查询结果发布后,结果会发生变化

答案 3 :(得分:0)

$ sort = $ _POST [&#39; order&#39;];

$ sortBy =(isset($ _ GET [&#39; sortby&#39;])&amp;&amp; $ _GET [&#39; sortby&#39;]!= 0)?$ _ GET [&#39; sortby&#39;]:0;

开关($ sortBy){

case "1":

    $sql = "SELECT * FROM ProductManagement ORDER BY FilmName ASC";

    break;

case "2":

    $sql = "SELECT * FROM ProductManagement ORDER BY FilmName DESC";

    break;

default:

    $sql = "SELECT * FROM ProductManagement ORDER BY FilmName ASC";

}

$ result = $ connection-&gt; query($ sql);

if($ result-&gt; num_rows&gt; 0){

echo "<p><table>
<tr>
<th>ID</th>
<th>Film Name</th>
<th>Producer</th>
<th>Year Published</th>
<th>Stock</th>
<th>Price</th>
<th>Function</th>
</tr>";

while($row = $result->fetch_assoc()) {
回声&#34;              &#34; $行[&#34; ID&#34;]&#34;

    <td>".$row["FilmName"]."</td>

    <td>".$row["Producer"]."</td>

    <td>".$row['YearPublished']."</td>

    <td>".$row['Stock']."</td>

    <td>".$row['Price']."</td>

    <td><a href=\"edit.php?ID=".$row["ID"]."\">Edit</a>

    <td><a href=\"delete.php?ID=".$row["ID"]."\">Delete</a>

</tr>";

}

echo "</table>";

}

否则  {

echo "0 results";

}

答案 4 :(得分:-1)

现在看到我更新了我的代码检查它。现在它的工作。

$sort = @$_POST['order'];

    if (isset($_POST['sortby']) && $_POST['sortby'] == '2')
    {
        $sql = "SELECT * FROM ProductManagement ORDER BY FilmName DESC";
    }
    else
    {
        $sql = "SELECT * FROM ProductManagement ORDER BY FilmName ASC";
    }



      $result = $connection->query($sql);

    if ($result->num_rows > 0) {
        echo "<p><table>
        <tr>
        <th>ID</th>
        <th>Film Name</th>
        <th>Producer</th>
        <th>Year Published</th>
        <th>Stock</th>
        <th>Price</th>
        <th>Function</th>
        </tr>";
        while($row = $result->fetch_assoc()) {
      echo "
        <tr>
            <td>".$row["ID"]."</td>
            <td>".$row["FilmName"]."</td>
            <td>".$row["Producer"]."</td>
            <td>".$row['YearPublished']."</td>
            <td>".$row['Stock']."</td>
            <td>".$row['Price']."</td>
            <td><a href=\"edit.php?ID=".$row["ID"]."\">Edit</a>
            <td><a href=\"delete.php?ID=".$row["ID"]."\">Delete</a>
        </tr>";
        }
        echo "</table>";
    } 
    else {
        echo "0 results";
    }
  

$ _ POST使用,因为在你的表单中方法=“post”