リストボックス複数選択時にデータ受け渡しエラーが発生する

このQ&Aのポイント
  • PHP初心者の方がリストボックス複数選択時にデータ受け渡しエラーが発生しています。選択した項目が正しく受け渡されず、表示されない問題があります。
  • form.htmlのリストボックスの設定やget_data.phpのデータ受け取り方法は正しいようですが、foreachループ内での表示処理が誤っている可能性があります。
  • リストボックスで複数の項目を選択した場合、選択した項目が正しく表示されない問題があります。選択した項目を全て表示するためにはforeachループの修正が必要です。
回答を見る
  • ベストアンサー

リストボックス 複数選択のデータ受け渡し

教えてください。PHP初心者です。 リストボックスを下記のように設置し、そこから別ファイルにデータの受け渡しをしたいのですが、どうしても上手く行きません。 データを受け継いだのち、複数の項目(さんまetc)を分別させるようにしたいです。 ========form.html============ <FORM method="POST" action="./get_data.php"> <SELECT size="15" name="list" multiple> <OPTION value="1">さんま</OPTION> <OPTION value="2">あじ</OPTION> <OPTION value="3">いか</OPTION> <OPTION value="4">かつお</OPTION> </SELECT> <INPUT type="submit" value=" 送信する "> </FORM> =========================================== ===========get_data.php==================== $LIST = array($_POST['list']); この後が分かりません。一応 foreach($LIST as $renew_list){ print "$renew_list\n"; print "<BR>\n"; } =========================================== 上記でやると、複数選択で選んだもの(例えば、さんまとあじ)の場合、 あじだけが表示されて、さんまは消えてしまいます。 どなたか助けてください。

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.1

<SELECT size="15" name="list" multiple> ↓ <SELECT size="15" name="list[]" multiple> としましょう。 配列で値が渡ってきます。

関連するQ&A

  • リストボックスの入力チェックについて

    リストボックスの入力チェックについて PHP初心者です。といいますか、プログラムそのものが初心者なので、 説明が分かりにくい部分があったら申し訳ございません。 以下のソースのように、フォームに「選択してください」「青森」「秋田」「岩手」 の4つの項目があるリストボックスを作成しました。 もし、県名が選択されず「選択してください」のままフォームを送信した場合、 下記のphpソース部分にあるようなエラーメッセージを表示させたいのですが、 真っ白いページが表示され何も表示されません。 原因をご存知の方、どうかご教示ください。 よろしくお願いいたします。 //---htmlフォーム部分 <form action="form02.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> <select name="pref" id="pref"> <option value="misenntaku" selected="selected">選択してください</option> <option value="aomori">青森</option> <option value="akita">秋田</option> <option value="iwate">岩手</option> </select> <p><input type="submit" value="内容を確認する" /><p> </form> //-----phpソース部分 <?php if ($_POST['pref'] == 'misenntaku' ) { print '県名を選択してください' . '<br><br>'; print '<a href="form02.html">戻って入力する</a>'; } ?>

    • ベストアンサー
    • PHP
  • phpでのセレクトボックスからの受け渡しについて

    phpにおいての、セレクトボックスにより選択させたデータの受け渡しについて、どなかか教えてください。 授業評価アンケートのデータ収集システムを卒研で開発しています。 その中の一部で、 年度・学年・クラス を各々セレクトボックスにて選択させるページがあります。 仮にpage1.htmlとし、以下にその一部を示します。 <FORM method="post" action="page2.php" enctype="application/x-www-form-urlencoded"> <P> 年度: <SELECT name="nendo"> <OPTION value="1">2006</OPTION> <OPTION value="2">2007</OPTION> <OPTION value="3">2008</OPTION> <OPTION value="4">2009</OPTION> <OPTION value="5">2010</OPTION> <OPTION value="6" selected>2011</OPTION> <OPTION value="7">2012</OPTION> </SELECT> 学年: <SELECT name="gakunen"> <OPTION value="1">1年</OPTION> <OPTION value="2">2年</OPTION> <OPTION value="3">3年</OPTION> <OPTION value="4">4年</OPTION> </SELECT> クラス: <SELECT name="class"> <OPTION value="1">1組</OPTION> <OPTION value="2">2組</OPTION> <OPTION value="3">3組</OPTION> <OPTION value="4">4組</OPTION> <!-- --> </SELECT> </P> <P><INPUT type="submit" value="科目選択へ"> <INPUT type="reset" value="取り消す"></P> 次のページ(page2.php)では 科目・分類 を各々セレクトボックスにて選択させるページを用意します。 その際に、科目・分類の各々のセレクトボックスの上に、 前ページ(page1.php)にて選択された値(valueではなく文字列(2008,1年))を表示します。 年度:~~ 学年:~~ クラス:~~ これについては以下の方法で成功しました。 年度:<? echo $_POST["nendo"]+2005?> 年 学年:<? if ($_POST["gakunen"] == "1"){ echo "1年"; } else if ($_POST["gakunen"] == "2"){ echo "2年"; } else if ($_POST["gakunen"] == "3"){ echo "3年"; } else if ($_POST["gakunen"] == "4"){ echo "4年"; } ?> クラスについても同様の手法。 ここからが本題です。 page1.html→page2.php に受け渡した年度・学年・クラスのデータを page2.php→page3.php にも同じように、年度:~~・・・と表示させたいのですが、わかりません。 hiddenというのを使うのでしょうか。 調べても、このパターンのように1ページまたいでのデータの受け渡し方法がよくわかりません。 他の方法もあるのでしょうか。 どなたか具体的に教えてください!

    • 締切済み
    • PHP
  • リストメニューに反映させる内容

    list.dat 内 $list1,$list2,$list3,$list4,$list5,$name1,$name2,$name3,$name4,$name5, print "<select name=list>\n"; print "<option value="0">未選択</option>\n"; print "<option value="1">$name1</option>\n"; print "<option value="2">$name2</option>\n"; print "<option value="3">$name3</option>\n"; print "<option value="2">$name4</option>\n"; print "<option value="3">$name5</option>\n"; print "</select>\n"; list.dat内のデータをselectメニューに反映させたいのですが、自分の頭ではかなり難しい事のようで、行き詰ってしまいました。 質問の仕方が下手で、どのように書いていいのかわからないのですが、やりたいことは、 $list1の名前が$name1 $list2の名前が$name2 というように、$listと$nameに付けられた数値番号が同一のものがセットになります。 この両方の変数にデーターが入っている場合のみ、セレクトメニューに反映させます。 例えばlist.dat内が $list1,,$list3,,$list5,$name1,$name2,$name3,$name4,, のような場合は、 print "<select name=list>\n"; print "<option value="0">未選択</option>\n"; print "<option value="1">$name1</option>\n"; print "<option value="3">$name3</option>\n"; print "</select>\n"; このようになります。 上のような作りは無理でしょうか? お力をおかし頂けると幸いです。

    • ベストアンサー
    • Perl
  • [PHPとHTML]リストボックスについて質問です。

    [PHPとHTML]リストボックスについて質問です。 ///////a.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>リストボックス</title> </head> <body> <form id="form1" name="form1" method="post" action="b.php"> <label> <select size="1" name="num" id="num"> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </label> </form> </body> </html> ///////b.php if ($_POST['num'] == "2" or $_POST['num'] == "3" or $_POST['num'] == "4") { ※↑ここの部分がエラーとなっています。 $num = $_POST['num']; echo "$num"; echo '<a href="a.php">戻る</a>'; } ラジオボタンを使っての判定条件の仕方はわかったのですが、 リストボックスについてはどうすればいいのかわかりません。 どうしたらいいか教えてもらえませんか?

    • ベストアンサー
    • PHP
  • 複数のセレクトボックスを1つにまとめて受け渡すには

    現在"年"と"月"のセレクトボックスがあり下記のように受け渡されています <form action="./search.php" method="GET">  <select name="year">   <option value="2010">2010年</option>   <option value="2011">2011年</option>  </select>  <select name="month">   <option value="1">1月</option>   <option value="2">2月</option>   <option value="3">3月</option>      ・   <option value="12">12月</option>  </select>  <input type="submit" value="検索"> </form> 受け取り側 http://www.###.jp/search.php?year=2011&month=11 となっています。 これを dateに一まとめにして受け取りたいですが http://www.###.jp/search.php?date=201111(2011-11でも可) 選択するプログラム側の修正方法を教えて欲しいのですが。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPリストボックス DB値取得関連

    PHPにてサイトを作っています 途中プルダウンのリストのデータを取得する際に リスト1を選択するとJavaScriptで同じURLへジャンプし、リスト1の値をPOSTし再表示で リスト1にひもづくデータをDBから読んでリスト2のないようにしています。 さらに同じようにリスト2を選択するとリスト1、リスト2にひもづくデータを金額として表示します。 これを行うことで<form>がJavaScriptに占有されてしまい リスト以外のテキストの実際にポストしたい入力データが<Form>で次ページへ飛ばせなくなりました。 リスト選択のリロード毎に全入力データをPOSTし変数に入れhiddenで別の<form>タグにいれて ましたが、 リスト未選択でリロードしない場合は値が取れず送信した際には値が飛ばせません。 構造イメージは以下です <form action="aaa.php" name="frm" method="post">  DBを読む1 <select name="zzz" onChange="document.forms['frm'].submit()" >     </select> </form> <form action="next.php" method="post">  <input type="hidden" name="aaa" value="<?php echo $aaa; ?>">  <input type="hidden" name="bbb" value="<?php echo $bbb; ?>">  ・・・・・・・ <input type="submit" value="送信"> </form> わかりにくくてすみませんが良い案があれば教えてください。

    • ベストアンサー
    • PHP
  • POSTしたデータがリストボックスに反映されません。

    POSTしたデータがリストボックスに反映されません。 ホームページ制作初心者です。 同一ファイル内で、リストボックスから値を選択し、その値に従って別のリストボックスの内容を絞り込みたいと思っています。 POSTは正常に行われていますが、データを受けた後、リストボックスが空欄のままです。 根本的にやろうとしている方法が間違っているのだと思います。 丁度、Okwaveのカテゴリ選択の様な、階層で絞り込んでいくようなものを作りたいです。 良い方法ありましたらご教授願います。 よろしくお願いいたします。 <FORM action="" method="post"> <?php $db = new PDO("mysql:host=localhost;dbname=DBNAME", "ROOT", "PASS"); $db->query("SET NAMES 'utf8'"); //品番 $rs = $db->query("SELECT * FROM m20mm"); ?> <h4>品番指定</h4> <select name="hinban" size="5" multiple="multiple" onchange="submit(this.form)" size="18"> <?php foreach($rs as $name1=>$hinban){ echo "<option value={$hinban[0]} selected>{$hinban[1]}</option>"; } ?> </select> </FORM> //ここから正常に動作していないと思われる。 <FORM> <?php $db2 = new PDO("mysql:host=localhost;dbname=DBNAME", "ROOT", "PASS"); $db2->query("SET NAMES 'utf8'"); //品目 $sql =<<<HINMOKU SELECT * FROM dfw_m40m WHERE dfw_m40m.分類C3 = :hinban HINMOKU; $hinban = $_POST['hinban']; $bs2 = $db2->prepare($sql); $bs2->bindparam(":hinban",$hinban); $bs2->execute(); $bs2->setFetchMode(PDO::FETCH_OBJ); ?> <h4>品目指定</h4> <select name="hinmoku" size="5" multiple="multiple" size="18"> <?php foreach($bs2 as $name1=>$hinmoku){ echo "<option value={$hinmoku[0]}>{$hinmoku[2]}</option>"; } ?> </select> <br> <br> </FORM>

    • ベストアンサー
    • PHP
  • 複数選択した情報をそのまま次のステップに移行させる方法

    PHP5.2.4を使用しています。 ちょっとPHPと直接関係があるかは分かりませんがお願いします。 選択メニューで複数選択できるようにnameをkey[]として設定して、 例えばこの場合はaとbを選択します。 送信ボタンを押して次の[form2.php]に移ったとします。 そこでprint_r($_POST['key']);とすると、 Array([0] => 'a' [1] => 'b') と表示されるのですが、この$_POST['key']をhiddenで <input type="hidden" name="key[]" value="{$_POST['key']}"> ともたせたいのですが、このやり方だと次の[form3.php]に 移ったときにはprint_r($_POST['key']);とすると Array としか表示されません(当たり前かもしれませんが・・・) これをなんとかして <input type="hidden" name="key[]" value="{$_POST['key']}"> このような持たせ方で移行させる方法はないでしょうか? つまり、 <input type="hidden" name="key1" value="{$_POST['key'][0]}"> <input type="hidden" name="key2" value="{$_POST['key'][1]}"> とはしたくないのです。 [form1.php] <select name="key[]" size="3" multiple> <option value="a">あ</option> <option value="b">い</option> <option value="c">う</option> </select> [form2.php] <input type="hidden" name="key[]" value="{$_POST['key']}">

    • ベストアンサー
    • PHP
  • PHP MySQL を使ってリストボックスを作りたい

    PHPで、MySQLよりSelectしたデータをリストボックスにしたくて、 コーディングしていますが、本を読みながら見よう見まねでつくってますが、 うまくいきません。 現象としては、IEで呼び出すと、一番上にrequireしたfanctionが そのまま記述されて出てきます。 そのほかは、その下にうまく表示されています。 lib.phpをinput1.phpで呼び出して使っています。 lib.php >------------------------------ function make_SyaName (){ $sql = "select * from Syain"; print $sql; $result = mysql_query( $sql ) ; while ( $syain = mysql_fetch_array ( $result ) ) { print "<option value=" . ${syain['SyaNo']} . ">" . ${syain['SyaName']} . "</option>"\n; } } >------------------------------ input1.php >------------------------------ 省略・・・ <select name="TanNo"><option value=>担当者<? make_SyaName () ?> ・・・省略 >------------------------------ 初歩的な質問で恐縮ですが、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでのフォームの受け渡しについて

    PHPの勉強中の者です。 PHPでフォームの受け取りの時に入力データのIDを受け取り、出力させるやり方について模索しています。 具体的には以下の通りです。 例えば、セレクトフォームのIDをそれぞれAAAとBBBにします。 ーーーーーーーーーー [フォーム内] <form action="file.php" method="post" name=""> <select name="data1" size="1"> <option value="0">選択する</option> <option value="100" id="AAA" >aaa</option> <option value="200" id="BBB" >bbb</option> </select></form> ーーーーーーーーーー [出力結果] AAA は aaa です。 BBB は bbb です。 ーーーーーーーーーー 選択された aaa の受け取りは、 $data1[] = $_POST['data1']; これで出来ると思いますが、idを受け取り出力する方法が分からないのです。 どなたかわかる方ご教授お願い出来ますでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう