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);
?>
分かりにくい説明ですが、どうぞどうぞ皆さまよろしくお願い致します!!
No.1ベストアンサー
- 回答日時:
値の受け渡しのもんだいじゃないでしょうか
// 検索ページから年齢の下限を取得
$low_age= $_POST["low_age"];
// 検索ページから年齢の上限を取得
$high_age= $_POST["high_age"];
// 並び替えの時、
$order_age= $_GET["order_age"];
ここで$_POSTと$_GETが混在しているので、どちらかの値かしかとらないと思います。
どちらかに統一させるか、どちらでも値をとるように変更すればよいでしょう。
No.2
- 回答日時:
べつのページから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ですね・・・
ありがとうございます!!
とても参考になりました。
うまく作動しました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のセレクトボックスを1つに...
-
プログラミング言語で、使える...
-
チェックボックスで渡ってきた...
-
<select>文、foreachと初期値設定
-
頭文字→大学→学部を選択する入...
-
複数 selectフォームから今回on...
-
phpでカレンダー作成
-
プルダウンとCSVの連動
-
複数のセレクトボックスで
-
phpでのセレクトボックスの値を...
-
プルダウンリスト(コンボボッ...
-
value値にあてはまるフィールド...
-
「"」(ダブルクォーテーション)...
-
PHPで診断しておすすめの本を紹...
-
PHP ボタンが押されたら処理を...
-
PHPでフォームから任意の画像削...
-
HTMLで前の画面に戻る時、入力...
-
PHPで画像の渡しが上手く行きま...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンとCSVの連動
-
「"」(ダブルクォーテーション)...
-
ラジオボタンの値を受け取ってP...
-
<select>文、foreachと初期値設定
-
phpでのセレクトボックスの値を...
-
複数 selectフォームから今回on...
-
php セレクトボックス 値取得
-
複数のセレクトボックスを1つに...
-
2つのプルダウンメニュから受け...
-
phpでのselect値の取得・表記に...
-
foreachで次の行の値を取得して...
-
ウェブ上で選択した複数行の内...
-
CodeIgniter/set_value()
-
ループ処理
-
連動させたいセレクトボックス...
-
PHP で画面の一部だけを変えたい。
-
phpでカレンダー作成
-
現在時刻を反映させた時刻のプ...
-
プルダウンで選択された値を保持
-
プルダウンリスト(コンボボッ...
おすすめ情報