• ベストアンサー

リストボックスで選択してWHERE句に入れるには?

こんにちは、PHPはじめて間もないので簡単そうなことで躓いています。 自フォームに設置したリストボックスで <select name="w_id"> <option value="id">ゼッケン順</option> <option value="rank">順位昇順</option> </select></td> w_idの内容を選択して //データを取得する $w_id = $_GET['w_id']; $w_id = htmlspecialchars($w_id,ENT_QUOTES,'UTF-8'); $sql = "SELECT id, hinmei FROM syouhin ORDER BY ".$w_id; として自フォームの表示を変更しようとしていますが w_idに値が入ってこなくて悩んでいます。 どのようにするものなのかご教授ください。

  • 3ryu
  • お礼率50% (3/6)
  • PHP
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • koke29
  • ベストアンサー率58% (114/196)
回答No.3

あー、デフォルトから変更しないと動かないですよね javascriptに詳しい方なら良い対応知ってるかもですよ 送信した後のページにも同じフォームがあって、前ページで 選択した方にselectedを付けたいだけなら方法はありますが 同じ値でまた送信したい時に動かないので、微妙ですよね javascriptの板で、同じ動作をonChange以外で出来ないかどうか 聞いてみるのもいいかもしれませんよー 選択した値にselecedを付ける方法↓ $w_id = $_REQUEST[w_id]; $select[$w_id] = "selected"; form部分 <option value="id" $select[id]>ゼッケン順</option> という感じにすると選んだほうにselectedがつきます ※かなり単純化しているので、状況に応じて条件分岐とかも 必要かもしれません 参考になれば幸いです

3ryu
質問者

お礼

解りやすく説明していただきありがとうございました。 もっと勉強が必要なようですね。

その他の回答 (2)

  • koke29
  • ベストアンサー率58% (114/196)
回答No.2

リストを変更した時に送信したいなら <select name="w_id">に をつければいけますよ <select name="w_id" onChange=submit();> 値を受け取る時はmethod=post ならPOSTでOKです

3ryu
質問者

補足

ありがとうございます! ご指摘いただいたとおり <select name="w_id" onChange=submit();> で送信できるようになりました。 ですが、 <option value="id">ゼッケン順</option> <option value="rank">順位昇順</option> では、リストボックス上では選択できても <option value="id">ゼッケン順</option>の方を選んだ場合 送信されず <option value="rank">順位昇順</option>の方を選んだ場合 送信される という結果のため <option value="rank" selected>--------</option> <option value="id">ゼッケン順</option> <option value="rank">順位昇順</option> というようにしてみましたが 動作はするものの リストボックスの表示が常に--------に戻ってしまい この点が改善できればと思っているのですが 何か方法はありますでしょうか? 重ね重ねで申し訳ありませんが よろしくお願いいたします。

noname#94983
noname#94983
回答No.1

うーん。これだけだとなんともいえないが、例えばごく初歩的なところで、GETでなくPOSTで送信していたとか?($_GETでなく$_POSTにすると動くとか?)

3ryu
質問者

お礼

的確なご指摘ありがとうございました。 WHEREではなくORDER BYでした。お恥ずかしい限りです。

3ryu
質問者

補足

はい、POSTで送信ボタンをつけると更新できるのですが... //データを取得する $w_id = $_POST['w_id']; $w_id = htmlspecialchars($w_id,ENT_QUOTES,'UTF-8'); $sql = "SELECT id, hinmei FROM syouhin ORDER BY ".$w_id; <form action="all_rank.php" method="post"> <select name="w_id"> <option value="id">ゼッケン順</option> <option value="rank">順位昇順</option> </select> <input type="hidden" name="" value="'.$w_id.'"> <input type="submit" name="" value="送信"> </form> 送信するアクションをしないで表示を更新することはできないのでしょうか?

関連するQ&A

  • php ハイパーリンクについて

    php ハイパーリンクについて質問ですが、 <form action="<?=$_SERVER["SCRIPT_NAME"] ?>" method="get"> </select> <input type="hidden" name="word" value="<?php print(htmlspecialchars($word, ENT_QUOTES)); ?>"> <input type="hidden" name="ger" value="<?php print(htmlspecialchars($ger, ENT_QUOTES)); ?>"> <select name="sort"> <option value="stand">新着</option> <option value="lowPrice">安い</option> <input type="submit" value="検索"> </select> </form> 上記のform actionと同じ機能をハイパーリンクで表示させるにはどのようにしたらよいのでしょうか?

    • ベストアンサー
    • PHP
  • セレクトボックス の 選択規制

    今、フォームで入力画面を作っています。 その中にセレクトボックスが4つアリ、現在「未選択」の場合エラーチェックをするようにしています。 そして、ここにもうひとつのチェックを追加したいのですが皆目見当が付きません・・・ 条件 kaikai、bunkai1、bunkai2、heikai  全てが不参加の場合 "参加する会を最低一つは選択してください。"と言うコメントをだすというものです。 皆様よろしくお願いいたします。 ********  現在の JavaScript  ********* <SCRIPT language="JavaScript"> <!-- //フォームチェック function fcheck() { if(document.form1.kaikai.value == "未選択") { window.alert("選択してください"); return false; } if(document.form1.bunkai1.value == "未選択") { window.alert("選択してください"); return false; } if(document.form1.bunkai2.value == "未選択") { window.alert("選択してください"); return false; } if(document.form1.heikai.value == "未選択") { window.alert("選択してください"); return false; } } //--> </SCRIPT> ********  HTML内のフォーム  ********* <table> <tr><th>1 ( * )</th> <td> <SELECT NAME="kaikai"> <OPTION selected VALUE="未選択">選択してください</OPTION> <OPTION VALUE="参加">参加</OPTION> <OPTION VALUE="不参加">不参加</OPTION> </SELECT></td></tr> <tr><th>2 ( * )</th> <td> <SELECT NAME="bunkai1"> <OPTION selected VALUE="未選択">選択してください</OPTION> <OPTION VALUE="参加">参加</OPTION> <OPTION VALUE="不参加">不参加</OPTION> </SELECT></td></tr> <tr><th>3 ( * )</th> <td> <SELECT NAME="bunkai2"> <OPTION selected VALUE="未選択">選択してください</OPTION> <OPTION VALUE="参加">参加</OPTION> <OPTION VALUE="不参加">不参加</OPTION> </SELECT></td></tr> <tr><th>4 ( * )</th> <td> <SELECT NAME="heikai"> <OPTION selected VALUE="未選択">選択してください</OPTION> <OPTION VALUE="参加">参加</OPTION> <OPTION VALUE="不参加">不参加</OPTION> </SELECT></td></tr> </table>

  • select値でのフォームのaction値の変更

    以下のようなフォームでselectの値によって PHPでactionのURLを変更させるようなことは出来るでしょうか。 <form name="form" method="GET" action="ここをselect値により変更"> <input type="text" name="word" id="word" value="" /> <select name="select" id="select"><option selected="selected" value="01">値01</option> <select name="select" id="select"><option selected="selected" value="02">値02</option> <select name="select" id="select"><option selected="selected" value="03">値03</option> </select> </form> 以上、どうぞ宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 引数でDOMのエレメントを指定したいのですが。

    javascriptが苦手な者で質問内容にさえ自身が無い質問です。 スケジュールを管理するフォームを作りたく、以下のようなものを書いてトライしています。 ----------------------------------- javascript部 ----------------------------------- function clear_select(day){   elem = "select_hour_" + day;   document.form_name.elem.selectedIndex = "--"; } ----------------------------------- htmlのform部 ----------------------------------- <input id="Bot_Sch_20111001" name="Bot_Sch_20111001" type="button" onClick="clear_select('20111001')" > <select id="select_hour_20111001" name="select_hour_20111001"> <option value="--">--</option> <option value="01">1</option> <option value="02">2</option> ↓ <option value="24">24</option> </select> <input id="Bot_Sch_20111002" name="Bot_Sch_20111002" type="button" onClick="clear_select('20111002')" > <select id="select_hour_20111002" name="select_hour_20111002"> <option value="--">--</option> <option value="01">1</option> <option value="02">2</option> ↓ <option value="24">24</option> </select> 以下30日程セレクターが続きます。 ----------------------------------- 上記関数clear_selectの引数でフォームのエレメントを規定し、そのセレクターの値を書き換える事はできるのでしょうか? 可能ならどのような書き方をすべきなのかご教授いただけるとありがたいです。

  • セレクトボックスの選択項目を変える

    セレクトボックスの選択項目を変えるには どうすればいいですか? <FORM action=./ method=post> <SELECT name=server> <OPTION value=2 selected>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> </SELECT> </FORM> こういうフォーム(FORMやOPTIONにnameがない)で [4]を選択したいです このフォームを書き換えないで(スクリプトでの書き換えなら○) どうにか変えることはできないでしょうか? IEのみの対応でいいので、お願いします

  • php 送信されたフォームについて

    送信されたフォームの受け取る側のソースを書いたのですが、 <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> を付け加えるとエラーが表示されます。エラーの対象になっているのは print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません 回答お願いします。 以下ソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> </body> </html>

    • 締切済み
    • PHP
  • [Ethna]selectボックスに空値を入れたい

    PHPフレームワークのEthnaにて、フォームヘルパーを使用してselectボックスを作成しています。 このselectボックスに空の値を先頭に入れたいと考えていますが、方法が見つからなかったため、教えていただきたいです。 --↓のようにしたい-- <select> <option></option> <option value="1">AAA</option> <option value="2">BBB</option> <option value="3">CCC</option> </select> --------------------- アクションフォームの$formメンバ内の、typeやform_typeなどのオプションの箇所に何か追加するだけで実現できたら非常に楽なのですが。。。(cakephpはそんな感じで空行を入れられる) よろしくお願いします。

    • 締切済み
    • PHP
  • リストボックスを連動させて・・・その2

    直前の質問で下記の回答をいただいたものです。 質問では2つのリストボックスを連動させたサンプルの回答をいただきましたが、ひょっとして、リストボックスの個数が何個でも対応させることはできないでしょうか。つまり、リストボックスのnameなどをscript部分に記さずに・・。 ここまでサンプルをもらっても改造できないので質問。 (^^; ■JavaScript <SCRIPT language=JavaScript> <!-- strBase = "test.cgi?hinmei=denwa "; strS1 = "&s1="; strS2 = "&s2="; function set(){  strS1b = strS1  strS2b = strS2   if (document.form.s1.options[document.form.s1.selectedIndex].value)   strS1b += document.form.s1.options[document.form.s1.selectedIndex].value;  if (document.form.s2.options[document.form.s2.selectedIndex].value)   strS2b += document.form.s2.options[document.form.s2.selectedIndex].value;  strURL = strBase + strS1b + strS2b;  document.form.text.value = strURL; } //--> </SCRIPT> ■フォーム <FORM NAME="form"> <select name="s1" onChange="set()"> <OPTION VALUE="" SELECTED>↓【選択して下さい】</OPTION> <OPTION VALUE="big">big</OPTION> <OPTION VALUE="small">small</OPTION> </SELECT> <select name="s2" onChange="set()"> <OPTION VALUE="" SELECTED>↓【選択して下さい】</OPTION> <OPTION VALUE="red">red</OPTION> <OPTION VALUE="white">white</OPTION> </SELECT> <INPUT TYPE="text" SIZE=50 NAME="text"> </FORM>

  • 簡単なPHPの計算構文(初学者)

    以下はフォームから数字入力、演算子を選択して計算をする構文になります。 ------------------------------------------ <form action="" method="post"> <input type="text" name="saki"> <select name="select"> <option value="+">+ <option value="-">- <option value="*">X <option value="/">÷ <input type="text" name="ato"> <input type="submit" value="計算"> </form> <?php $saki = htmlspecialchars(@$_POST["saki"], ENT_QUOTES); $ato = htmlspecialchars(@$_POST["ato"], ENT_QUOTES); $keisan = @$_POST["select"]; if($keisan == "+"){ //←この部分から入れ替える $ans = $saki + $ato; echo "$saki + $ato = $ans"; }elseif($keisan == "-"){ $ans = $saki - $ato; echo "$saki - $ato = $ans"; }elseif($keisan == "*"){ $ans = $saki * $ato; echo "$saki x $ato = $ans"; }elseif($keisan == "/"){ $ans = $saki / $ato; echo "$saki ÷ $ato = $ans"; }else{ } ?> ---------------------------------------------------- この部分のif条件分岐を以下のシンプルな構文に変えたら 同じ結果が得られると思ったのですが上手くいきません。 ---------------------------------------------------- $kotae = "$saki $keisan $ato"; // ←※$keisanにはselectから選択された演算子が入っても計算されない? echo "$saki.$keisan.$ato ="; echo "$kotae"; ---------------------------------------------------- フォームで「+」を選択すれば「$keisan」に演算子「+」がそのまま入るので 自動的に「$saki+$ato」というような計算式になり「$kotae」に 計算結果が出ると思ったのですが 「$kotae = "$saki $keisan $ato"」は構文的に間違っているのでしょうか? ifを使わないシンプルな方法はないのでしょうか? よろしくお願いいたいます。

    • ベストアンサー
    • PHP
  • SESSION変数について

    プログラム初心者です htmlspecialcharsを省略するか迷っています SESSION変数を表示するときはhtmlspecialcharsを使ったほうがいいでしょうか? $id = htmlspecialchars($_SESSION['id'], ENT_QUOTES); echo $id; よろしくおねがいします

    • ベストアンサー
    • PHP

専門家に質問してみよう