2017-04-11 9 views
1

私はJOINを使用して結合されたテーブルを持っています。エンドユーザーがどのようにテーブルをフィルタリングしたいかを変更するための送信ボタンを含むフォームを作成したいと思います。 ソートバーは私のWebページにありますが、実際には何もしません。だから私の質問は、ソートボタンを動作させるためには何をする必要があるのか​​ということです。PHPを使用してドロップダウンテーブルからSQLクエリをソート

<?php 


$sort = @$_POST['order']; 
if (($sort)) { // If you Sort it with value of your select options 
$query = "SELECT n.firstname, n.middlename, n.lastname, m.title, f.format, t.price, e.series, t.inventory 
       FROM book_main AS m 
       JOIN book_author AS n ON n.author_id=m.author_id 
       JOIN book_title AS t ON t.title_id=m.title_id 
       JOIN book_format AS f ON f.format_id=m.format_id 
       LEFT JOIN book_series AS e ON e.series_id=m.series_id 
       ORDER BY '".$sort."' ASC"; 



} 
else { // else if you do not pass any value from select option will return this 
    $query = "SELECT n.firstname, n.middlename, n.lastname, m.title, f.format, t.price, e.series, t.inventory 
       FROM book_main AS m 
       JOIN book_author AS n ON n.author_id=m.author_id 
       JOIN book_title AS t ON t.title_id=m.title_id 
       JOIN book_format AS f ON f.format_id=m.format_id 
       LEFT JOIN book_series AS e ON e.series_id=m.series_id 
        ORDER BY n.lastname ASC"; 


$results = mysql_query($query); 
echo $results['order']; 

//can I have a couple points for trying so hard haha... 
} 

?> 

<form name="sort" action="" method="post"> 
<select name="order"> 
    <option value="choose">Make A Selection</option> 
    <option value='lastname'>Authors Last name</option> 
    <option value='price'>Price</option> 
    <option value='inventory'>Inventory</option> 
</select> 
<input type="submit" value="Sort" /> 
</form> 
+1

のいずれかを使用してください。 –

+0

合意。送信ボタンを機能させるようにお願いしていますか? – NickSentowski

+0

はい送信ボタンが働くように頼んでいます。現在は何もしていません –

答えて

0

$ソートを使用すると、以下のようにチェックを必要とする選択オプションに記載されている値を持っていることを確認します。また何もエコーされない理由は、orderは$ results配列の一部ではありません。

結果にアクセスするための唯一の方法

は質問するこれら http://php.net/manual/en/function.mysql-result.php

if(in_array($sort, ['lastname', 'price', 'inventory'])) { 
    $query = "SELECT n.firstname, n.middlename, n.lastname, m.title, f.format, t.price, e.series, t.inventory 
       FROM book_main AS m 
       JOIN book_author AS n ON n.author_id=m.author_id 
       JOIN book_title AS t ON t.title_id=m.title_id 
       JOIN book_format AS f ON f.format_id=m.format_id 
       LEFT JOIN book_series AS e ON e.series_id=m.series_id 
       ORDER BY $sort ASC"; 
} else { 
    $query = "SELECT n.firstname, n.middlename, n.lastname, m.title, f.format, t.price, e.series, t.inventory 
       FROM book_main AS m 
       JOIN book_author AS n ON n.author_id=m.author_id 
       JOIN book_title AS t ON t.title_id=m.title_id 
       JOIN book_format AS f ON f.format_id=m.format_id 
       LEFT JOIN book_series AS e ON e.series_id=m.series_id 
        ORDER BY n.lastname ASC"; 
} 
$results = mysql_query($query); 
while ($row = mysql_fetch_assoc($result)) { 
    echo $row['firstname']; 
    echo $row['middlename']; 
    echo $row['lastname']; 
    echo $row['title']; 
    echo $row['format']; 
} 
+0

ここで行ったことを使用してみましたが、まだテーブルをソートしていません –

+0

データベースで直接クエリを実行しようとしましたか? – swaveg

+0

はいデータベースで注文を直接使用することができます。デフォルトでlastname by orderbyに設定されています。 –

関連する問題