• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:POSTしたデータがリストボックスに反映されません。)

POSTしたデータがリストボックスに反映されない問題の解決方法は?

このQ&Aのポイント
  • ホームページ制作初心者が、リストボックスにPOSTしたデータが反映されない問題に直面しています。
  • 同一ファイル内で、リストボックスから値を選択し、別のリストボックスの内容を絞り込みたいと思っています。
  • POSTは正常に行われていますが、リストボックスが空欄のままで、解決方法が分からない状況です。

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

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.2

一回コレでやってみてください $hinban = $_POST['hinban']; $bs2 = $db2->prepare($sql); $bs2->bindparam(":hinban",$hinban); $bs2->execute(); ?> <h4>品目指定</h4> <select name="hinmoku" size="5"> <?php while($hinmoku = $bs2->fetch(PDO::FETCH_BOTH)){ echo "<option value={$hinmoku[0]}>{$hinmoku[2]}</option>"; } ?> </select> hinbanの方のselectもmultipleは不要と思います。 また、 echo "<option value={$hinban[0]} selected>{$hinban[1]}</option>"; これですとPOST後はすべて選択状態になると思います。 POSTされたhinbanとvalueが同じものだけselectedをつけるようにしないとまずいと思います。 他、気がついていない点もあるかもしれませんがキリがないので処理の順に一個一個片付けていってください。私は処理がこんがらがってきたら一回全部コメントアウトして処理する順番にコメントアウトをはずしてどこまで処理が正確に動いているか一個一個確かめてます。時間がかかるように思えますがあてずっぽうにやるよりは遥かに早いし確実です。

noname#150305
質問者

お礼

いまも分からないままですが・・・・・ ajaxで解決しました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.7

適当だから、抜けがあったら適当に修正して。 JavaScript なんて使いたい人が使えばいい。使いたければ後からでもどうにでもなる。 あ~それから、、、眠いから寝る。

noname#150305
質問者

お礼

書いて頂いたコードがわかりませんでしたので、JavaScriptでやっと解決して、覚えられました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.6

[code language="JavaScript" title="get_articles.js"] /*@cc_on@*/ var get_articles = (function(req) { return req ? (function () { var Handlers = { 'readystatechange' : function (e) { if (4 != req.readyState) return; clearTimeout(timerId); if (200 != req.status) return; // あと自分で書いて。 // TODO : req.responseXML ... }, 'timeout' : function () { req.abort(); clearTimeout (timerId); }, 'unload' : function (e) { Unobserver.call (self, 'unload'); req.onreadystatechange = function() { ; }; doc = req = null; } }; var Listener = function (e) { return Handlers.call [e.type] (this, e); }; var Observer = function (e, type) { return e./*@if(1)attachEvent('on'+/*@else@*/addEventListener(type, Listener, false); }; var Unobserver = function (e, type) { return e./*@if(1)dettachEvent('on'+/*@else@*/removeEventListener(type, Listener, false); } reutrn (function () { req.onreadystatechange = Handlers ['readystatechange']; return function () { try { var form = this.form; var value = this.value; var uri = form.action+'?'+encodeURIComponent(this.name)+'='+encodeURIComponent(value); timerId = setTimeout (Handlers ['timeout'], timeout); req.abort(); req.open('GET', uri, true); req.send(''); } catch (e) { } }; }) (); }) () : function () { ; }; }) ( (function (){ /*@if (5 < @_jscript_version) try { return new ActiveXObject('Msxml2.XMLHTTP.6.0'); } catch (e2) { try { return new XMLHttpRequest; } catch (e3) { return new ActiveXObject('Msxml2.XMLHTTP.3.0'); } } @else@*/ return new XMLHttpRequest; /*@end@*/ }) (); ); [/code]

全文を見る
すると、全ての回答が全文表示されます。
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.5

[code language="PHP" title="get_articles.php"] <?php try { //sanitize($_GET); $db = new PDO('mysql:host=localhost;dbname=DBNAME', 'USER', 'PASS'); $db->exec("SET NAME 'utf8'"); $bs = $db->prepare('SELECT * FROM `dfw_m40m` WHERE `分類C3`=?'); $hinban = $bs->execute(array($_GET['hinban'])); unset($rs, $db); if (preg_match('/(?:^|,\s*)(text|application)\/xml(?:\s*,|$)/', $_SERVER['HTTP_ACCEPT']), $m) { $doc = DOMImplementation::createDocument('***', 'articles'); $root = $doc->documentElement; if (is_array($hinban)) { foreach ($hinban as $value) { $item = $doc->createElemnet('item', $value[1]); $item->setAttribute('id', $value[0]); $root->appendChild($root); } } $xml = $doc->saveXML(); header('Content-Type: {$m[0]}; charset=UTF-8'); header('Content-Length: '.strlen($xml)); echo $xml; exit; } } catch (PDOException $e) { echo $e->getMessage(); } ?> <? header('Content-Type: text/html; charset=UTF-8'); ?> <!DOCTYPE ... ... <form action="****" method="****"> <h4>品番指定</h4> <p> <? if (is_array($hinmoku)) : ?> <select name="hinmoku" size="5"> <? foreach ($hinmoku as $value) : ?> <option value="<?=htmlentities($value[0])?>"<?=key(current($hinmoku)) ? '' : 'selected="selected"'?>><?=htmlentities($value[1])?></option> <? endforeach; ?> </select> <? endif; ?> </p> </from> [/code]

全文を見る
すると、全ての回答が全文表示されます。
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.4

<?php try { $db = new PDO('mysql:host=localhost;dbname=DBNAME', 'ROOT', 'PASS'); $db->exec("SET NAME 'utf8'"); $rs = $db->query('SELECT * FROM `m20mm`'); $hinban = $rs->fetchAll(PDO::FETCH_NUM); unset($rs, $db); } catch (PDOException $e) { } header('Content-Type: text/html; charset=UTF-8'); ?> <!DOCTYPE ... ... <form action="get_articles.php" method="get"> <script type="text/javascript" src="get_articles.js"></script> <h4>品番指定</h4> <p> <? if (is_array($hinban)) : ?> <select name="hinban" size="5" onchange="get_articles.call (this);"> <? foreach ($hinban as $value) : ?> <option value="<?=htmlentities($value[0])?>"<?= key(current($hinban)) ? '' : 'selected="selected"'?>><?=htmlentities($value[1])?></option> <? endforeach; ?> </select> <? endif; ?> </p> </from> <? endif; ?>

全文を見る
すると、全ての回答が全文表示されます。
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.3

> 丁度、Okwaveのカテゴリ選択の様な、階層で絞り込んでいくようなものを作りたいです。 階層ごとにリンクを張っておけばいい。 それだけでもまず不便は感じない。 > onchange="submit(this.form)"で、POSTするときにブラウザで更新が掛かるのですが、 それでSQLが機能していないように感じます。 このやり方は不可能なのでは。。。。。。という気がします。。泣 うすうす気づいてるかもしれないけど、やり方が根本的に間違っている。 とりあえず、PHP だけで組んではいかがだろうか。 # どうでもいいことだけど、POST と GET が保存先の違いくらいにしか認識されていないのが悲しい。

全文を見る
すると、全ての回答が全文表示されます。
  • duron
  • ベストアンサー率77% (73/94)
回答No.1

$bs2にはカラムの順に0から始まる添え字で配列が設定されているでしょうか? $ba2を出力して調べてみてください。 PDOは使ったことがないので確証はないですが $bs2->setFetchMode(PDO::FETCH_OBJ);を削除すれば $rsと同様に0,1,2・・・で値が設定されるかもしれません。 PDO::executeではfetchでしか値が取れない(PDO::queryと違う) のであればfetch処理して<option>を出力するようにしてみてください。 予想大外れだったらごめんなさい。

noname#150305
質問者

お礼

配列を取得しようとしましたが、$bs2の配列とれませんでした。 WHERE句を外し、$db2->prepare($sql)を$db2->query($sql)に変更すれば取得できます。 (あたりまえですが。。。) onchange="submit(this.form)"で、POSTするときにブラウザで更新が掛かるのですが、 それでSQLが機能していないように感じます。 このやり方は不可能なのでは。。。。。。という気がします。。泣 何か良い方法ありますでしょうか? 全く違うようなプログラムでもかまいません。(ただしデータベースは使います) 助けてください・・・お願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

    教えてください。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
  • リストボッックスからリストボックスへの値を追加したい

    ASPのプログラムの中に Bというリストボックスの値を「追加」ボタンを押すとAのリストボックスに 追加できるようなスクリプトを作りたいのですが、 Request.Formで同ページにPOSTでsubmitして送っていたのですが それだと何度も追加ができなくなってしまうので他のやり方にしたいのです。 いろいろ調べてVBScriptやJavaScriptでできるのではないかというのまでは わかったのですが、どうもやり方がいまいちわかりません。 できればJavaScriptのほうでやりたいと思うのですがどなたか良い方法を ご教授いただけないでしょうか。 よろしくおねがいします。 <select size="5" multiple name="A"> </select><input type="submit" value="追加"><select size="5" multiple name="B"> <option>AAAAA</option> <option>BBBBB</option> <option>CCCCC</option> </select>

  • web上のリストボックス作成

    あるHTMLで、リストボックスをDREAMWEAVERでさくせいしました。 リストを選択すると、選択された名前のHTMLに飛ぶように指定したのですが、 ネスケでは動いてくれるのですが、IEでは飛んでくれません. 原因を教えてください。以下のようなHTMLです。 このためのCGIはくんでいません。 <form name="form2"> <select name="month"onChange="MM_jumpMenu('parent',this,0)"size="0"multiple> <option value="1.html"> 1 </option> <option value="2.html"> 2 </option> <option value="3.html"> 3 </option> <option value="4.html"> 4 </option> <option value="5.html"> 5 </option> </select> </form>

    • ベストアンサー
    • HTML
  • [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
  • リストボックスから直接引き金を引く

    お世話になります。 早速ですが、 今、あるaplを書いていまして、 処理内容はリストボックスからキーを選択させ、 そのキーでDBを検索、表示するというモノです。 現在のロジック、つくりは、 リストボックスの下に(「表示」という)ボタンを設置してあり、 リストボックスからキーを選択した後、 そのボタンを押すことでcgiに戻りDBを検索する、 となっています。 <FORM action="./DB.cgi" method="POST"> <div> <select name="key" size="3"> <option value="aaa">aaa <option value="bbb">bbb <option value="ccc">ccc <option value="ddd">ddd <option value="eee">eee <option value="fff">fff </select> </div> <input type=submit value="表示"> <input type="hidden" name="mode" value="display"> </FORM> ここで質問ですが、 リストボックスからキーを選択したらそのままDB検索へ移行するような コードを教えて欲しいのです。 (いちいち表示ボタンを押さなくて良いやり方です) 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • リストボックスの入力チェックについて

    リストボックスの入力チェックについて 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リストボックス 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
  • リストボックス

    携帯サイトで47都道府県のリストボックスを製作してるんですけど、AUがうまく表示できません。 ドコモはちゃんと別画面に飛んで表示されるんですが、AUの場合は一面表示ができずに、一行のボックスを下に押す感じでしか表示できないんです。 使ったタグはコレです <form method="POST" action="example.cgi"><SELECT size="1" name="住所"> <OPTION value="1">北海道</OPTION> </SELECT> こんな感じで47都道府県入れています。 なぜならないのかわかる方いませんか?

  • リストボックスを連動させて・・・その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>

  • リストボックスの内容追加と削除

    質問QNo.172288を参考にプログラムを作成しました。 そこで下記のような処理をしたいのですがどのように処理をしていいのか解りません。 Bというリストボックスの値を「追加」ボタンを押すとAのリストボックスに追加するときにBのリストボックスより選択した値は削除(非表示)あるいはAのリストボックスに既に存在する同じ値はAリストボックスには追加しない。(重複チェックみたいな感じです) それと、Aというリストボックスの値を「戻す」ボタンを押すと選択されている値をAのリストボックスより削除し、Bのリストボックスに表示させる JavaScriotでは難しいいですか。ご教授いただけないでしょうか 宜しくお願いします <form name=frm method=post action=/beta/index.php> <td align=right> <select name=A size=8 multiple> <option value=""></option> </select> </td> <td align=center> <input type=button value="← 追加" onClick="addItem();"> <p> <input type=button value="戻す →" onClick="delItem();"> <td align=left> <select name=B size=8 multiple> <option>AAAAA</option> <option>BBBBB</option> <option>CCCCC</option> </select> </td> function addItem() { A = document.frm.A; B = document.frm.B; for (var i=0; i<B.options.length; i++) { if (B.options[i].selected) { A[A.options.length] = new Option(B.options[i].text,B.options[i].value); } } } function delItem() { B = document.frm.A; A = document.frm.B; for (var i=0; i<B.options.length; i++) { if (B.options[i].selected) { A[A.options.length] = new Option(B.options[i].text,B.options[i].value); } } }

このQ&Aのポイント
  • NECパソコンとHDDをUSB接続してデータを共有する方法を教えてください。
  • 接続したNECパソコンとHDDが認識されるが利用できない状態です。電源を切っても改善しないため、対処方法をお知らせください。
  • KJ-55A9Gというネットワークデバイスには接続できるが、ダブルクリックしても利用できない状態です。
回答を見る

専門家に質問してみよう