- ベストアンサー
MySQLのレコードを検索、検索結果を保持したまま並び替えしたいのですが・・・
- PHP+MySQLで会員DBを構築し、やっと検索をかけて思惑の通り一覧が表示されるようになり感激していたのもつかの間・・・
- この1週間『並び替え』という新たな壁にぶつかり身もだえしております。
- 全てのレコードが表示されているときはうまく行きました・・・が、検索した結果の状態で並び替えると、検索した結果の50件の中での並び替えができず、並び替えを実行すると全てのレコードが表示されてしまいます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
値の受け渡しのもんだいじゃないでしょうか // 検索ページから年齢の下限を取得 $low_age= $_POST["low_age"]; // 検索ページから年齢の上限を取得 $high_age= $_POST["high_age"]; // 並び替えの時、 $order_age= $_GET["order_age"]; ここで$_POSTと$_GETが混在しているので、どちらかの値かしかとらないと思います。 どちらかに統一させるか、どちらでも値をとるように変更すればよいでしょう。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
べつのページからpostデータを渡してますね? これを自分自信のページに再読み込みするときに値がわたってません。 やるならこんな感じでhidden渡しするといいでしょう。 javascriptについてももう少し理解を深めた方がよいでしょう。 <? $low_age= $_REQUEST["low_age"]; $high_age= $_REQUEST["high_age"]; $order_age= $_REQUEST["order_age"]; $selected["order_age"][$order_age]=" selected"; //$low_ageと$high_ageにはインジェクション処理が必要 if($low_age != "") $where_low_age = "AND age >= '$low_age'"; if($high_age != "") $where_high_age = "AND age <= '$high_age'"; switch ($order_age){ case 1: $sql_order = " order by age "; break; case 2: $sql_order = " order by age desc" ; break; } $query = "select * from member where 1".$where_low_age.$where_high_age.$sql_order; print<<<eof テスト:{$query}<br> <form method="post" action="{$_SERVER['PHP_SELF']}"> <input type="hidden" name="low_age" value="{$low_age}"> <input type="hidden" name="high_age" value="{$high_age}"> <select name="order_age" onchange="this.form.submit();"> <option value="default" selected="selected">年齢並び替え</option> <option value="1"{$selected["order_age"][1]}>若い順</option> <option value="2"{$selected["order_age"][2]}>高齢の順</option> </select> </form> eof; ?>
お礼
なるほど・・・PHPでできるのですね・・・ あ、onchangeの部分はjavascriptですね・・・ ありがとうございます!! とても参考になりました。 うまく作動しました!!
お礼
ありがとうございます! 皆さまのお陰でうまく行きました!!