• 締切済み

mysqlとphpを使った入力画面でチェックボックスのデータの受け取り方

住所録を作成しています。 趣味をチェックボックスで選択するようにしましたが、1つしか選ばれません。例を挙げましたので教えてください。 if($tou<>""){ $sql = "insert into kainan values (0, '$tou', '$kai')"; $result = mysql_query($sql); $sql = "select * from jyusho where tou='$tou' order by tou asc limit 1"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $id = $row["id"]; } echo "<p>登録完了しました</p>\n"; exit; } echo " <p>データを入力してください<p/> <form action=\"touroku.php\" method=\"post\"> <p>○登録日:<input type=\"file\" name=\"tou\" size=40 >\n <p>○趣味:\n <input type=\"checkbox\" name=\"kai\" value=\"不明\">不明\n <input type=\"checkbox\" name=\"kai\" value=\"英語\">英語\n <input type=\"checkbox\" name=\"kai\" value=\"算数\">算数\n </p>\n <p><input type=\"submit\" value=\"登録\">   <input type=\"reset\" value=\"クリア\"></p>\n </form>\n ";

noname#46364
noname#46364
  • MySQL
  • 回答数3
  • ありがとう数2

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

>「kai」のフィールドに「英語 算数」と入り、 この運用方法はSQLとしては最悪です。 DBで管理するのに非常に非効率なデータの持ち方です。 検索性もグダグダですが、ほんとにそれでよろしいのですか? 改めるのでしたら「正規化」をキーワードにして検索サイトで サーチしてみてください。すこし視野が広がるとおもいます。 どうしてもいまのやり方に固執するなら以下のようにやればできます。 当座はこれでしのげますが、あとで苦労をするのはご自身ですので お勧めはしません。 $val=""; foreach($kai as $val){ $val.=($val==""?"":" ").$val; } $sql = "insert into kainan values (0, '$tou', '$val')"; $result = mysql_query($sql);

noname#46364
質問者

お礼

継ぎ足しだらけでおかしくなっていたのは事実でしたので、 調べてやり直したいと思います。 ありがとうございまいした。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

まず入力フォームのテキストボックス名をkai[]とします。 <input type="checkbox" name="kai[]" value="不明">不明 <input type="checkbox" name="kai[]" value="英語">英語 <input type="checkbox" name="kai[]" value="算数">算数 その上で、foreachで必要回数まわします foreach($kai as $val){ $sql = "insert into kainan values (0, '$tou', '$val')"; $result = mysql_query($sql); } ただしtouがなぜfileになっているかわかりませんが・・・ fileでおくるならformの記述は間違ってますし、 $touはそのままではsqlにわたせないかと

noname#46364
質問者

お礼

まだ、お礼ではないのですが、「kai」というフィールドに、選んだ分が全部反映がされませんでした。チェックした項目が1つごとに作成されていました。 希望:「英語と算数をチェックしたら」 「kai」のフィールドに「英語 算数」と入り、 「2007/10/1 英語 算数」 と「hyouji.php」に表示させたい。 実際は、 「2007/10/1 英語」 「2007/10/1 算数」と別々に「hyouji.php」に表示されている。 よろしくおねがいいたします。

noname#46364
質問者

補足

すいません、touの部分は、fileじゃなくてtextでした。 試してやってみます。

  • potkurin
  • ベストアンサー率24% (33/134)
回答No.1

こんにちは。 素人な回答者です。 <input type=\"checkbox\" name=\"kai\" value=\"不明\">不明\n で気になったのですが、 「name=\"kai\"」って3つ全部同じ名前でいいんでしたっけ?

関連するQ&A

  • チェックボックス + フリーワード検索 PHP&MYSQL

    現在検索画面の作成をしているのですが、分からないことがありましたので 質問をさせて頂きました。 検索画面ですが、簡単な2ページ構成になっております。(kensaku.phpとresult.php) 仕様としてはkensaku.phpにチェックボックス(複数選択可)と フリーワードがあり、一つの検索ボタンで検索し結果をresult.phpに表示させようと思っております。データベースはMYSQLです。 検索ボタンが一つしかないため、もしチェックボックスが選択されず、フリーワードだけ入力されたのであれば、それだけで検索。その逆のもし チェックボックスだけ選択されたのであればそれだけで検索。 また両方入力されたのであれば、両方のデータを検索できるように したいと思っております。 フリーワード検索までは出来るようになったのですが、 チェックボックス検索(両方検索・片方のみ検索)などが どうしても出来ません。 どなたかご存知の方ご教授して頂けないでしょうか。 宜しくお願い致します。 こちらがコードになります。 1,kensaku.php <form action="result.php" method="POST" > <table class="font12" cellpadding="5" cellspacing="10" width="430" align="center"> <tr> <td> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="1" />aaa</span> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="2" />bbb</span> <span class="checkbox"><input type="checkbox" name="sejyutu[]" value="3" />ccc</span><br /> </td> </tr> <tr> <td><input type="text" name="sejyutu_else" value="フリーワード検索" size="30" /></td> </tr> <tr> <td colspan="2" align="right"><input type="submit" value="検索する" /></td> 2, result.php <?php $sejyutu = $_POST["sejyutu"]; $sejyutu_else = $_POST["sejyutu_else"]; if($sejyutu and sejyutu_else<>''){ //DB接続・選択 if (!$int_connect = @mysql_connect('localhost','aaa','aaaa')) { die("can't connect mysql server."); } //データベースに接続 if (!@mysql_select_db("database", $int_connect)) { die("can't use selected database."); } $sql = "select * from table where sejyutu_else like'%$sejyutu_else%'"; $result=mysql_query($sql,$int_connect); $rows=mysql_num_rows($result); ?> <table width="430" cellpadding="5" cellspacing="0" class="font12"> <?php while($row = mysql_fetch_array($result)){ ?> <tr> <td colspan="2"><p class="salon_name"><?php echo $row["name"]; ?></p></td> </tr> <tr> <td valign="top"><p class="salon_item">最寄り駅:</p></td> <td class="salon_detail"><?php echo $row["station"]; ?></td> </tr> <tr> <td valign="top"><p class="salon_item">住所:</p></td> <td class="salon_detail"><?php echo $row["address"]; ?></td> </tr> <tr> <td valign="top"><p class="salon_item">施術名</p></td> <td class="salon_detail"><?php echo $row["sejyutu"];?></td> </tr> <?php } } ?> </table> </body> </html>

    • ベストアンサー
    • PHP
  • phpのチェックボックスによる絞込みについて

    PHPとSQLでチェックボックスを使って、複数条件によるデータを抽出するというものを作っています。 データベースの検索対象となるカラムが、以下の様にbakunen,seibetsu,clubとあります。 ―――――――――――――――――――― gakunen   seibetsu   club ―――――――――――――――――――― 1年   男 サッカー 1年   男  野球 2年   女  バスケット 2年   男  野球 3年   女  美術 3年   男  バスケット 3年   女  バスケット チェックボックス側は、 学年:1年□ 2年□ 3年□ 性別:男□ 女□ 部活:サッカー□ 野球□ バスケット□ 美術□ としています。 phpのソースは以下の通りにしています。(一部抜粋) <?php $arr1 = array(); foreach($_POST['gakunen'] as $gakunen){ $arr1[] = "gakunen = '$gakunen'"; } $arr2 = array(); foreach($_POST['seibetsu'] as $seibetsu){ $arr2[] = "seibetsu = '$seibetsu'"; } $arr3 = array(); foreach($_POST['club'] as $club){ $arr3[] = "club = '$club'"; } $a = implode("or" , $arr1); $b = implode("or" , $arr2); $c = implode("or" , $arr3); $query = "SELECT * from fa1 where ($a) and ($b) and ($c)"; $result = mysql_query($query, $link); if (!$result) { echo 'データエラー'; } else { echo '<p>該当した検索結果:<br />'; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo h($row['gakunen']) . ' : ' . h($row['seibetsu']) . ' : ' . h($row['club']) . '<br />'; } echo '</p>'; } } ?> <form method="post" action=""> <input type="checkbox" name="gakunen[]" value="1年" />1年&nbsp; <input type="checkbox" name="gakunen[]" value="2年" />2年&nbsp; <input type="checkbox" name="gakunen[]" value="3年" />3年&nbsp;<br /> <input type="checkbox" name="seibetsu[]" value="男" />男&nbsp; <input type="checkbox" name="seibetsu[]" value="女" />女&nbsp;<br /> <input type="checkbox" name="club[]" value="サッカー" />サッカー&nbsp; <input type="checkbox" name="club[]" value="野球" />野球&nbsp; <input type="checkbox" name="club[]" value="バスケット" />バスケット&nbsp; <input type="checkbox" name="club[]" value="美術" />美術&nbsp; <input type="submit" value="送信する" /> </form> 私が得たい結果は、例えば学年で1年のチェックのみあった場合は性別、部活問わず1年生全てのデータ。 1年と3年とサッカーにチェックがあった場合には性別を問わず1年と3年のサッカーに所属しているデータ。 全てのチェックが無かった場合は全データ表示という具合にしたいのです。 現状は3つのカラム全てに該当するチェックをして、そのデータを表示させることしかできません。gakunen,seibetsu,clubのどれか一つでもチェックを空けるとデータが出てこない状態です。 それはソースを読んでも理解できるのですが、ここからどう変えていいかわからない状態です。色々過去の質問を見たり本で勉強したりはしたのですが、私の理解が足らず問題解決には至っていません。 どのようにすれば良いのか、何卒ご教授をお願いいたします。

    • ベストアンサー
    • PHP
  • チェックボックスを用い、MySQLからデータを取得

    プログラミング初心者です。HTML, JavaScript, PHPを使用し、checkboxにチェックを入れ検索ボタンを押すと、MySQLからデータを取得し表示させる機能の実装を試みています。複数の項目を選択して検索したいため、checkboxで行いたいと考えています。 MySQLはitemsテーブルにurl, length, timeフィールドを用意し、text型でデータをセットしています。 誤っている箇所をご指摘頂ければ助かります。 よろしくお願いいたします。 *HTML <div id ="length" > <input name="length[]" type="checkbox" value="short"> <input name="length[]" type="checkbox" value="long"> </div> <div id ="time" > <input name="time[]" type="checkbox" value="morning"> <input name="time[]" type="checkbox" value="noon"> <input name="time[]" type="checkbox" value="evening"> <input name="time[]" type="checkbox" value="weekday"> <input name="time[]" type="checkbox" value="holiday"> </div> <input type="button" name="search" value="検索"/> <div id="outputArea">検索ボタンを押すと、ここにMySQLから取得したデータが表示される</div> *JavaScript $(function(){ $("#search").click(function(){ var aaa = $('div#length > input[name=***]:checked'); var bbb = $('div#time > input[name=***]:checked'); var inaaa=[]; aaa.each(function(){ inaaa.push(this.value); }) var inbbb=[]; bbb.each(function(){ inbbb.push(this.value); }] $.post("output_do.php",inaaa,show); $.post("output_do.php",inbbb,show); }); }); function show(out){ var outdata = out.split(" ") //表示させるデータ数はとりあえず3つほどを考えています $("#outputArea").text(outdata[0]); $("#outputArea").text(outdata[1]); $("#outputArea").text(outdata[2]); } *PHP mysql_connect('localhost','root','root') or die(mysql_error()); mysql_select_db('db'); mysql_query('SET NAMES UTF8'); $inaaa= $_POST["inaaa"]; $inbbb= $_POST["inbbb"]; if( isset($inaaa) ){ } else{ print '$inaaaは定義されていません'; } if( isset($inbbb) ){ } else{ print '$inbbbは定義されていません'; } $res = mysql_query("SELECT url FROM items WHERE length = '" . $inaaa."' or time = '" . $inbbb."' LIMIT 0,10", mysql_real_escape_string($inaaa), mysql_real_escape_string($inbbb), ); //この部分が特に不安です if ($res !== FALSE) { $out = ""; while ($row = mysql_fetch_array($res)) { $out .= $row['url']."<i>"; } echo $out; }else{ echo "データがありません"; } 以上です。長々と申し訳ありませんm(__)m

    • 締切済み
    • PHP
  • チェックボックス 複数選択 MYSQL

    PHP習い始めたのですがどうしても分からない問題がありましたので 質問をさせて頂きました。 現在チェックボックスで複数選択された情報をMYSQLに反映させようとしているのですがどうしても複数選択された項目の内、一つしかMYSQLに反映されません。 こちらがスクリプトの一部になります。 <span class="checkbox"><input name="check[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="check[]" type="checkbox" value="bbb" />bbb</span> <span class="checkbox"><input name="check[]" type="checkbox" value="ccc" />ccc</span><br /> //MYSQL $sql = "insert into table values('$check[]')"; 配列を使うとまでは調べて分かったのですが、そこからがどうしても 分かりません。どなたご存知になるかたがおりましたら 是非お伺い出来ませんでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • チェックボックスのデータを受け取ってMYSQL条件としてセットする

    HTML <input type="checkbox" value="データ1" name="aa[]">データ1      <input type="checkbox" value="データ2" name="aa[]">データ2 PHP <?php =====DB接続省略======== foreach($aa as $val){ //SQL文 $sql = "SELECT NO,SERVISNAME from JOBDATA WHERE SERVISNAME='$val' } //SQLを発行して結果セットを取得します $rst = mysql_query($sql); //取得された結果セットのレコード数を取得・表示します // $body = mysql_num_rows($rst) . " 件のデータがあります。<BR><BR>"; ======DBから取得したデータ表示省略====== ======結果セットを破棄し、MySQLとの接続を解除省略====== ?>エラー:Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\... 何でこんなエラーがでるでしょう?解決方法教えてください。お願いします。

    • 締切済み
    • PHP
  • 入力フォームが上手く動きません。。(mysql,php使っています)

    入力フォームが上手く動きません。。(mysql,php使っています) レビュー系のサイトを作っていて、入力フォームを作ってみたのですが、上手く動きません。どなたかご助言いただけますと幸いです。 【関連するテーブル】 tag  構造  tagid , tag  1 , OPが素晴らしい  2 , EDが素晴らしい  3 , 世界観がいい  ・  ・  ・ tag_title  構造  tagid , titleid , tagcom(コメント欄) , vote(今回は使いません) , tagcom_date(日付) 【組んだソース】 ============================== <?php if(isset($_GET['titleid'])){ if(preg_match('/^[0-9]+$/', $_GET['titleid'])){ $titleid = $_GET['titleid']; }else{ $titleid = 0; } }else{ //ダメな場合の処理 $titleid = 0; } (中略) $tag_array = array(); $tagcom_array = array(); if(isset($_POST['tag_regist'])) { $tag_array = $_POST['tag']; $tagcom_array = $_POST['tagcom']; extract($_POST); mysql_connect('***'); mysql_select_db('***'); $kyou = date("y-m-d"); $tagcnt = 0; for ($tagcnt=0;$tagcnt<count($tag_array);$tagcnt++) { $sql_tag = ""; $sql_tag = "INSERT INTO tag_title (tagid, titleid, tagcom, vote, tagcom_date) VALUES (".$tag_array[$tagcnt].", ".$titleid.", '".$tagcom_array[$tagcnt]."', '".$vote."', '".$kyou."')"; mysql_query($sql_tag); print $tagcom_array[$tagcnt]; } } print "<form action=\"tag_input.php?titleid=" . $titleid . "\" method=\"post\" >"; $sql2 = "select * from tag"; $result2 = mysql_query($sql2); $rows2 = mysql_num_rows($result2); while($row2 = mysql_fetch_array($result2)){ echo "<p><input type=\"checkbox\" name=\"tag[]\" value=\"" . $row2["tagid"] . "\" >"; echo $row2["tag"]; echo "   <input type=\"text\" name=\"tagcom[]\" size=\"60\">"; echo "</p>"; } print "<p><input type=\"submit\" value=\"書き込む\" >"; print "<input type=\"reset\" value=\"リセット\"></p>"; print "<input type=\"hidden\" name=\"tag_regist\" value=\"true\" />"; print "</form>"; ============================== 【実際に作ってみたやつ(一例)】 ttp://www.game-minzoku.jp/tag_input.php?titleid=4784 【何ができないのか】 tag_titleidにデータを送りたいのですが、コメントのtagcomだけ上手くはいりません。。(たまにはることもあるので謎です。フォームなので100%の精度にしたいです) ソースは友人と協力して作ったのですが、どうしてもこのあたりで行き詰ってしまいました。 ソースの組み方にこだわりは全くないので、根本からの変更も可能です。 拙いご説明で大変恐縮ですが、お分かりになりましたらよろしくお願いいたします。 また、ご説明が足りない個所などあればおっしゃってください!

    • ベストアンサー
    • PHP
  • MySQLとPHP(HTML)の連携について

    送信側では、PHP(HTML)下記のように書きました。 ----------------------------- <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力">   ボタン2:<input type="submit" name="input2" value="入力"> </form> ----------------------------- 受信側(input.php)は下記のように書きました。 ----------------------------- <?php $url = "***.sakura.ne.jp"; $user = "abc"; $pass = "12345"; $db = "sakura_db"; if (isset($_POST["$input"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN"; }elseif (isset($_POST["$input2"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN2"; } //Connect MySQL Server $my_Con = mysql_connect($url,$user,$pass); mysql_query("SET NAMES utf8",$my_Con); if ($my_Con == false){ die("MySQL Server接続に失敗しました。"); } //Connect MySQL DataBase if (!mysql_select_db($db,$my_Con)){ die("MySQL DataBase選択に失敗しました。"); } //MySQL Deta Read $my_Row = mysql_query($sql,$my_Con); if (!$my_Row){ die(mysql_error()); } $a = 1; while ($row = mysql_fetch_array($my_Row) or $a <= 50) { echo ' <p>'; echo ' A'.$a.':<input name="date" type="text" size="4" value="'.$row["a"].'">'; echo ' B'.$a.':<input name="date" type="text" size="4" value="'.$row["b"].'">'; echo ' C'.$a.':<input type="checkbox" name="example"'.check($row["c"]).'>'; echo ' D'.$a.':<input type="checkbox" name="example"'.check($row["d"]).'>'; echo ' </p>'; $a++; } //Close MySQL Server $my_Con = mysql_close($my_Con); if (!$my_Con) { exit("MySQL Server閉じられませんでした。"); } ?> ----------------------------- この状態で送信側のボタンをクリックすると、input.php側では”Query was empty”とエラーがでます。 送信側の2つあるボタンによって表示されるテーブルを変えたいのですが、何が原因なのでしょうか? そもそもSQLの内容をif文での条件分岐は出来ないのでしょうか? 最近PHPを勉強し出した初心者です。 出来れば分かりやすく教えていただけないでしょうか。 よろしくお願い致します!

    • ベストアンサー
    • PHP
  • チェックボックスの戻り

    チェックボックスのvalue値に数字を入れてPOSTしています。 DB登録の前にその値を足し算してDBに登録しています。 <input type="checkbox" name="cb[0]" value="1"> <input type="checkbox" name="cb[1]" value="2"> <input type="checkbox" name="cb[2]" value="4"> <input type="checkbox" name="cb[3]" value="8"> <input type="checkbox" name="cb[4]" value="16"> ・・・のようにしています。DBの値を読み取ってcheckedを付ける際はどのようにしたら効率よく処理できるでしょうか?switchを使うとすごくチェックボックスの数が増えると厄介です。困っています。教えてください。

    • ベストアンサー
    • PHP
  • PHP&MySQLデータ削除のスクリプトについて

    はじめまして。 PHP、MySQL始めたばかりの初心者です。 この度、自力で解決出来なく、質問させて頂く事にしました。 現在、MySQL入門以前という参考書を見ながらデータベースを作っていました。削除スクリプトで、どうしても躓いておりまして何が原因が分からずじまいです。下記が呼び出しスクリプトです --------------------------ここから--------------------------- <?php extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); $sql = "select * from xxxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "検索データが見つかりませんでした。"; exit; } else { while($row = mysql_fetch_array($result)){ echo "<h2> " , $row["title"] , "</h2>"; echo "<p><font size=\"-2\">#", $row["id"] ," ●",$row["tourokubi"] ,"</font></p>\n"; echo "<p><div class=\"hon\">", nl2br($row["honbun"]), "</div></p>"; echo "<div class=\"key\">keywords: ", nl2br($row["keyword"]), "</div>"; $ukid=$row["id"]; echo "<center> <a href=\"j_sakujo1.php?i=$ukid\"><img src=\"sakujobutton.gif\" alt=\"削除ボタン\" border=0></a>  <a href=\"correct.php?i=$ukid\"><img src=\"shuseibutton.gif\" alt=\"修正ボタン\" border=0></a>  </center>"; } } ?> --------------------------ここまで--------------------------- そして削除スクリプトです --------------------------ここから--------------------------- <?php extract($_POST); extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); //MySQLレコード削除 if($kakunin=="確認"){ $sql = "delete from xxxxx where id = '{$id}'"; mysql_query($sql); echo "レコードの削除が完了しました"; exit; } //削除確認のためのフォーム $sql = "select * from xxxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else{ while($row = mysql_fetch_array($result)){ echo "<p>このレコードを削除します。</p>"; echo "<form action = \"j_sakujo1.php\" method = \"post\">"; echo "<p>登録日:"; echo $row["tourokubi"]; echo "</p>"; echo "<p>タイトル:"; echo $row["title"]; echo "</p>"; echo "<p>本文:"; echo $row["honbun"]; echo "</p>"; echo "<p>キーワード:"; echo $row["keyword"]; echo "</p>"; echo "<input type = \"hidden\" name = \"ren\" value =\""; echo $row["renban"]; echo "\">"; echo "<p><input type=\"submit\" name=\"kakunin\" value=\"確認\">"; echo "<input type=\"reset\" value=\"リセット\"></p>"; echo "</form>"; } } ?> --------------------------ここまで--------------------------- これで削除ボタンを押すと「該当データがありません。」だけ表示され 登録してあるデータがまったく表示されません。 どこで間違ったのか、どうかご指南お願い致します。

  • phpでチェックボックスでの値の表示について

    HTMLで作成したテキスト、セレクト、チェックボックスなどに、選択されたもの全てをPOST送信で受け取って PHPにてパラメータをチェックしてから 確認画面(HTML)に表示してPHPにてDB登録するというプログラムを作ってます。 HTML側で <input type="checkbox" name="genre[0]" value="1" >国語 <input type="checkbox" name="genre[1]" value="2" >算数 <input type="checkbox" name="genre[2]" value="3" >理科  <input type="checkbox" name="genre[3]" value="4" >社会 として例えば、 <?php $genre = $_POST["genre"]; foreach ($genre as $key => $value){ print($value); } ?> で表示するとチェックした数字が表示されます。 (国語をチェックした場合 1) これを 国語 と表示させるにはどうすればいいんでしょうか? DBに登録する際は数字でいいんですが。

    • ベストアンサー
    • PHP