MySQLのレコードを検索、検索結果を保持したまま並び替えしたいのですが・・・
PHP4
MySQL4
経験値1ヶ月くらいのビギナーです。
PHP+MySQLで会員DBを構築し、やっと検索をかけて思惑の通り一覧が表示されるようになり感激していたのもつかの間・・・
この1週間『並び替え』という新たな壁にぶつかり身もだえしております。
ベテランの皆さま!どうか!どうか、お知恵を!救いの手をお貸しくださいませ!!
【 現状です 】
■会員テーブル:member
■id:int
■name:vachar
■age:int
■addr:varchar
レコード数200くらい
【 したいこと 】
例えば年齢を20~30で検索します。
50くらいのレコードが絞られて表示されます。
このときはidの順番に一旦並んでいます。
それから年齢の若い順、高齢の順に並び替えたいのですが・・・どうしたいいでしょうか?
【 やってみたこと 】
プルダウンを設置して、javascriptで選択した時点でURLを移動させて(違うファイルではなくそのファイルに)その際、GETで数値を持っていってもらって
おんなじファイル(一覧表示のPHPファイル)にリンクさせて、そのGET値を受け取って、反映して・・・と文章にすると良くわからんことを思いついてして
見ました。
全てのレコードが表示されているときはうまく行きました・・・が、検索した結果の状態で並び替えると、検索した結果の50件の中での並び替えが
できず、並び替えを実行すると全てのレコードが表示されてしまいます。
検索して、「絞り込まれた状態(ここでは50件のこと)」でそのレコードたちだけを並び替えさせたいのです。
【 こんなコードなんです 】
一覧表示のPHPファイル:ichiran.php
<?
$db = mysql_connect("localhost","××××","××××");
mysql_select_db("member");
$query = "SET NAMES utf8";
// 検索ページから年齢の下限を取得
$low_age= $_POST["low_age"];
// 検索ページから年齢の上限を取得
$high_age= $_POST["high_age"];
// 並び替えの時、
$order_age= $_GET["order_age"];
// 取得した検索結果からSQL文に変換(下限)
if($low_age != ""){
$where_low_age = "age >= '$low_age'";
}
else {
$where_low_age = "";
}
// 取得した検索結果からSQL文に変換(上限)
if($high_age != ""){
$where_high_age = "age <= '$high_age'";
}
else {
$where_high_age = "";
// 取得した並び替えGETをSQL文に変換
switch ($order_age){
case 1:
$sql_order = " order by age ";
break;
case 2:
$sql_order = " order by age desc ;
break;
default:
$sql_order = " order by id ";
}
// SQL文に変換
$query = "select * from member where ".$where_low_age." and ".$where_high_age.$sql_order;
$result = mysql_query($query);
</html>
<body>
<head>
<!-- 並び替え -->
<script type="text/javascript">
function change(myURI){
if(myURI !="default"){
window.document.location.href=myURI;
}
}
</script>
<!-- 並び替え -->
</head>
<!-- 一覧表示 -->
while( $row = mysql_fetch_array($result) ) {
echo $row["age"]."<br>";
}
<!-- 並び替え実行部分 -->
<form name="sampleForm1" id="sampleForm1">
<select name="selectMenu1" id="selectMenu1"
onchange="change(this.form.selectMenu1.value);">
<option value="default" selected="selected">年齢並び替え</option>
<option value="ichiran.php?order_age=1">若い順</option>
<option value="ichiran.php?order_age=2">高齢の順</option>
</select>
</form>
</body>
</html>
<?
mysql_close($db);
?>
分かりにくい説明ですが、どうぞどうぞ皆さまよろしくお願い致します!!
お礼
ありがとうございます。