2017-09-01 6 views
-1

こんにちは私は自分のコードに異なるソート関数を追加しようとしています。そのように昇順と降順でソートを追加しましたが、コードを追加しようとしていますが、値が選択されていないときは、DESCENDING BY DEFAULTにする必要があります。ドロップダウンメニューに表示される値を選択すると、どの値が選択されます。ユーザーが降順を選択すると、ボックスに降順が表示されます。ここに私のコードです。アドバンスドに感謝します。ここでソート関数のデフォルトをDESCとして設定したいが、エラーはPHPで発生する

はMY PHPコードは、あなたがsortが送信されるかどうかを確認するための基本的な三項演算子を使用することができます

<?php 
 
$servername = "localhost"; 
 
$username = "root"; 
 
$password = ""; 
 
$dbname = "videoplay"; 
 

 
$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error()); 
 
/* check connection */ 
 
if (mysqli_connect_errno()) { 
 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
 
    exit(); 
 
} 
 
    
 
$limit = 20; 
 
if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; 
 
$start_from = ($page-1) * $limit; 
 
$name = $_GET['name']; 
 
$sort = $_GET['sort']; 
 
$sql = "SELECT * FROM video where type= 'Video/Trailer' IF ORDER BY vid ".$sort." IS NULL THEN SET DESC AS DEFAULT LIMIT $start_from, $limit"; 
 
$rs_result = mysqli_query($conn, $sql); 
 
?>

<form action="#"> 
 
<select class="select" onChange="top.location.href=this.options[this.selectedIndex].value;"> 
 
<option value="<?php echo $value ; ?>" selected="<?php echo $selected; ?>"><?php echo $name; ?></option> 
 
<option name="Ascending" value="videos.php?sort=ASC">Ascending </option> 
 
<option name="Descending" value="videos.php?sort=DESC">Descending</option> 
 
    
 
</select> 
 
</form> \t \t

+1

GET ['sort']が空であるかどうかをチェックするのはなぜですか?$ sortのデフォルト値をDESCに設定するのはなぜですか? – BenRoob

答えて

0
<?php 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "videoplay"; 

    $conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error()); 
    /* check connection */ 
    if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 

    $limit = 20; 
    if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; 
    $start_from = ($page-1) * $limit; 
    $name = $_GET['name']; 

    $sort = isset($_GET['sort']) ? $_GET['sort'] : "DESC"; 

    $sql = "SELECT * FROM video WHERE type = 'Video/Trailer' ORDER BY vid $sort LIMIT $start_from, $limit"; 
    $rs_result = mysqli_query($conn, $sql); 
?> 

です。

$sort = isset($_GET['sort']) ? $_GET['sort'] : "DESC"; 

三項演算子は、比較、真の比較、偽の比較の3つの部分から作成されます。

  1. isset($_GET['sort']) - 比較:sortは送信されますか?
  2. $_GET['sort'] - 真の比較:の場合は、です。これを$sort変数に割り当てます。
  3. "DESC" - 偽の比較:でない場合の場合は、デフォルトのDESCの値を割り当てます。

質問から不要なものも削除しました。

$sql = "SELECT * FROM video 
     WHERE type = 'Video/Trailer' 
     ORDER BY vid $sort 
     LIMIT $start_from, $limit"; 

それはあなたがSQLインジェクションを防ぐためにprepared statementsを使用する必要があることに言及しなければなりません。

+3

コードで変更された内容を説明してください。あなたが行った変更を理解するのは難しいです。 –

+0

@Spectarionはあなたのコードがうまくいきました。 –

+0

@PavanChanda私はもう一度私の答えを更新しました。私はそれがうまく動作し、私の最新のコードを使用することを確認しています。あなたが投票して正しい答えとして受け入れることができるなら、それはクールです:)。 – Spectarion

関連する問題