试图从php中的mysql表中排序数据表

时间:2013-12-03 19:23:15

标签: php html mysql sorting

我不确定为什么我的代码不会排序,我对此很新,任何帮助都会受到赞赏。

这是读取内容的文件,然后假设对其进行排序,但是当我在浏览器上执行它时,对数据进行排序的链接没有任何影响。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

    <head>

        <title>Movie Reviews Display</title>

    </head>

    <body>

<?php
    $host="XXXXXXX"; 
    $username="XXXXXX"; // Mysql username 
    $password="XXXXXXX"; // Mysql password 
    $db_name="XXXXXXXX"; // Database name 
    $tbl_name="movies"; // Table name

    $con=mysqli_connect("$host", "$username", "$password")or die("cannot connect");
    mysqli_select_db($con,"XXXXXX") or die ("no database");

    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }

        $result = mysqli_query($con,"SELECT * FROM movies");
        ?>
        <h1>Movie Reviews Database</h1>
        <hr />
        <p />
        <?php
        echo "<table border='1'>
            <tr>
            <th>Review Date</th>
            <th>Title</th>
            <th>Rating</th>
            <th>Genre</th>
            <th>Release Date</th>
            <th>Reviewer Name</th>
            <th>Review Rateing</th>
            <th>Review Text</th>
            </tr>";

            while($row = mysqli_fetch_array($result))
              {
              echo "<tr>";
              echo "<td>" . $row['reviewDate'] . "</td>";
              echo "<td>" . $row['title'] . "</td>";
              echo "<td>" . $row['rating'] . "</td>";
              echo "<td>" . $row['genre'] . "</td>";
              echo "<td>" . $row['releaseDate'] . "</td>";
              echo "<td>" . $row['ReviewerName'] . "</td>";
              echo "<td>" . $row['reviewRating'] . "</td>";
              echo "<td>" . $row['reviewText'] . "</td>";
              echo "</tr>";
              }
        echo "</table>"; 


    if(isset($_GET['sort'])){   
        switch ($_GET['sort'] ){
        case 0: 
                    $query = "SELECT * FROM movies ORDER BY reviewDate DESC"; 
                    mysqli_query($con,$query);
                    break;
        case 1:
                    $query = 'SELECT * FROM movies ORDER BY title DESC';
                    mysqli_query($con,$query);
                    break;
        case 2:
                    $query = 'SELECT * FROM movies ORDER BY rating DESC';
                    mysqli_query($con,$query);
                    break;
        case 3:
                    $query = 'SELECT * FROM movies ORDER BY genre DESC'; 
                    mysqli_query($con,$query);
                    break;
        case 4: 
                    $query = 'SELECT * FROM movies ORDER BY releaseDate DESC';
                    mysqli_query($con,$query); 
                    break;
        case 5:
                    $query = 'SELECT * FROM movies ORDER BY ReviewerName DESC';
                    mysqli_query($con,$query); 
                    break;
        case 6:
                    $query = 'SELECT * FROM movies ORDER BY reviewRating DESC';
                    mysqli_query($con,$query);
                    break;           
        }
    }


mysqli_close($con);
?>
<p />
   Sort by...

      <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=0";?>">Review Date</a>
      <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=1";?>">Title</a>
      <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=2";?>">Rating</a>
      <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=3";?>">Genre</a>
      <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=4";?>">Release Date</a>
      <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=5";?>">Reviewer</a>
      <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=6";?>">Reviewer Rating</a>


    </body>

</html>

2 个答案:

答案 0 :(得分:1)

我会让它变得更加复杂,但我保留了你的总体思路并进行了改进。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Movie Reviews Display</title>
    </head>
    <body>
<?php

    $host = "XXXXXXX"; 
    $username = "XXXXXX";
    $password = "XXXXXXX";
    $db_name = "XXXXXXXX";
    $tbl_name = "movies";


    $con = mysqli_connect($host, $username, $password);

    if(mysqli_connect_errno())
        $con = false;
    else
        $cdb = mysqli_select_db($con, $db_name);


    if(!$con) {
        echo "Failed to connect to database server!";

    else if(!$cdb) {
        echo "Failed to select database!";

    else {
        echo "        <h1>Movie Reviews Database</h1>
        <hr />
        <p />
        <table border='1'>
            <tr>
                <th>Review Date</th>
                <th>Title</th>
                <th>Rating</th>
                <th>Genre</th>
                <th>Release Date</th>
                <th>Reviewer Name</th>
                <th>Review Rateing</th>
                <th>Review Text</th>
            </tr>\r\n";

        $sort = "";
        if(isset($_GET['sort'])) {
            switch ($_GET['sort'] ) {
            case 0: 
                        $sort = " ORDER BY reviewDate DESC"; 
                        break;
            case 1:
                        $sort = ' ORDER BY title DESC';
                        break;
            case 2:
                        $sort = ' ORDER BY rating DESC';
                        break;
            case 3:
                        $sort = ' ORDER BY genre DESC'; 
                        break;
            case 4: 
                        $sort = ' ORDER BY releaseDate DESC';
                        break;
            case 5:
                        $sort = ' ORDER BY ReviewerName DESC';
                        break;
            case 6:
                        $sort = ' ORDER BY reviewRating DESC';
                        break;           
            }
        }
        $result = mysqli_query($con, "SELECT * FROM `movies`" . $sort);
        while($row = mysqli_fetch_array($result)) {
            echo "            <tr>\r\n";
            echo "                <td>" . $row['reviewDate'] . "</td>\r\n";
            echo "                <td>" . $row['title'] . "</td>\r\n";
            echo "                <td>" . $row['rating'] . "</td>\r\n";
            echo "                <td>" . $row['genre'] . "</td>\r\n";
            echo "                <td>" . $row['releaseDate'] . "</td>\r\n";
            echo "                <td>" . $row['ReviewerName'] . "</td>\r\n";
            echo "                <td>" . $row['reviewRating'] . "</td>\r\n";
            echo "                <td>" . $row['reviewText'] . "</td>\r\n";
            echo "            </tr>\r\n";
        }
        echo "        </table>\r\n"; 
    }
    mysqli_close($con);

?>
        <p />Sort by...
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=0";?>">Review Date</a>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=1";?>">Title</a>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=2";?>">Rating</a>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=3";?>">Genre</a>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=4";?>">Release Date</a>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=5";?>">Reviewer</a>
        <a href="<?php echo $_SERVER['PHP_SELF'] . "?sort=6";?>">Reviewer Rating</a>
    </body>
</html>

答案 1 :(得分:0)

阵列是你的朋友......

    $sortable = array(0 => 'reviewDate',
                      1 => 'title',
                      2 => 'rating',
                      3 => 'genre',
                      4 => 'releaseDate',
                      5 => 'ReviewerName',
                      6 => 'reviewRating');
    $sortBy = $sortable[1];
    if ( isset($_GET['sort']) && isset($sortable[$_GET['sort']]) ){   
        $sortBy = $sortable[$_GET['sort']];
    }
    $result = mysqli_query($con,"SELECT * FROM movies ORDER BY ".$sortBy);