HTMLのチェックボックスからデータベースにデータ入力する仕組みを検討

このQ&Aのポイント
  • HTMLのチェックボックスから、データベースにデータ入力する仕組みを検討しています。
  • HTMLページでチェックされた項目は、キーワードカラムに入力されるようにしたいと考えています。
  • 現状は、Test1.phpにデータが渡っておらず、原因がわかっていません。
回答を見る
  • ベストアンサー

チェックボックスから、データベース入力

HTMLのチェックボックスから、データベースにデータ入力する仕組みを検討しております。 HTMLページでチェックされたものは、keywordカラムに入力されるようにしたいと考えております。 1) HTMLページ <? require('../include/init.inc'); $email = $_POST{'email'}; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <FORM name="myFORM"> <INPUT type="checkbox" name="name[]" onclick="chg()" value="aaa">:aaa <INPUT type="checkbox" name="name[]" onclick="chg()" value="bbb">:bbb <INPUT type="checkbox" name="name[]" onclick="chg()" value="ccc">:ccc <INPUT type="checkbox" name="name[]" onclick="chg()" value="ddd">:ddd <INPUT type="checkbox" name="name[]" onclick="chg()" value="eee">:eee <INPUT type="checkbox" name="name[]" onclick="chg()" value="fff">:fff </body> </FORM> <form action="Test1.php" method="post"> <input type=submit value='選択'>  → ここで配列のデータを変数に入れる処置が必要? 2) Test1.php <? require('../include/init.inc'); $email = $_POST{'email'}; $name = $_POST{'name'}; var_dump($HTTP_POST_VARS); $sql = "BEGIN; update mailing_list_sentaku set keyword = '$name' where mailing_list_name = '$email'; COMMIT;"; pg_query("$sql"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> </head> <body> ・データベース  - postgresql 8.1.9  - PHP 5.2.1 postgres=# \d mailing_list_sentaku  ・mailing_list_name : character varying(40)  ・keyword : character varying(200) 現状は、Test1.phpにもデータが渡っておらず、原因がつかめていない状況です。ご協力よろしくお願いいたします。

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

  • ベストアンサー
  • yossan69
  • ベストアンサー率50% (1/2)
回答No.3

以下でざっくりは動くと思いますが、SQLインジェクションなどの対応がまったくできていません。 ローカルでお試しになられるのはいいかと思いますが、公開されるのはどうかと思います。 前の方が言っておられるようにHTMLの勉強はもちろん、Webアプリ(この場合PHPとPostgreSQL)の勉強をされたほうがいいと思います。 何か一冊本を買うことをお勧めします。 ---- 1) HTMLページ <? require('../include/init.inc'); $email = $_POST['email']; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> </head> <body> <form action="Test1.php" method="post" name="myFORM"> <INPUT type="checkbox" name="name[]" onclick="chg()" value="aaa">:aaa <INPUT type="checkbox" name="name[]" onclick="chg()" value="bbb">:bbb <INPUT type="checkbox" name="name[]" onclick="chg()" value="ccc">:ccc <INPUT type="checkbox" name="name[]" onclick="chg()" value="ddd">:ddd <INPUT type="checkbox" name="name[]" onclick="chg()" value="eee">:eee <INPUT type="checkbox" name="name[]" onclick="chg()" value="fff">:fff <INPUT type="hidden" name="email" value="<?php echo htmlspecialchars($email); ?>"> <input type=submit value='選択'> </form> </body> </html> > → ここで配列のデータを変数に入れる処置が必要? ここというか、次のPHPで必要になります。 2) Test1.php <? require('../include/init.inc'); $email = $_POST['email']; $name = $_POST['name']; // このままですと $name は配列です // 登録先(keyword)のデータ型はキャラクタなので // 文字列ないし、シリアライズする必要があるでしょ。 // これは、使用ほうほうによって決めるべきです。 // 文字列にする場合(項目をカンマ切りで) // $name = implode(",", $_POST['name']); // シリアライズする場合 // $name = serialize($_POST['name']); // 今回はとりあえず文字列にする // 文字の長さなどチェックが必要 $name = implode(",", $_POST['name']); $sql = "BEGIN; update mailing_list_sentaku set keyword = '" . $name . "' where mailing_list_name = '" . $email . "'; COMMIT;"; pg_query("$sql"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <body> SQLを確認<br /> <?php echo htmlspecialchars($sql); ?> </body> </head>

hokuhoku7
質問者

お礼

ご回答ありがとうございます。 ご教授いただいた方法で試してみることにします。 SQLインジェクションに関しては、対応方法について勉強しておきます。 お手数お掛けいたしました。。。

その他の回答 (2)

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

<form action="Test1.php" method="post"> を<FORM name="myFORM">のところに入れないとそのデータは送信できないよ。 その上</body>はなんで、</form>の前にあるの? html構文をじっくり勉強し直して下さい。

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

なんでformが2つに分かれているのかな? 一緒に送りたいデータなら同じformに入れるべきです。

hokuhoku7
質問者

お礼

投稿ありがとうございます。 FORMが分かれているとは、どういう意味でしょうか。 <FORM name="myFORM"> で1つということではないのでしょうか。

関連するQ&A

  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • チェックボックスで複数選択する方法教えて下さい

    いつもありがとうございます。 00.PHPというファイルにチェックボックスを配置して複数選択し 同じ00.phpにPOSTで情報送り、表示させたいのですが、 下記の記述では「Array」としか表示されません。 検索結果を最終的にはMYSQLにデータ登録をしたいのですが うまくいきません。御指導お願いします。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>無題ドキュメント</title> </head> <body> <? echo $_POST["working_days"] ?> <form action="00.php" method="post">  <label>  <input type="checkbox" name="working_days[1]" value="1"> ド短期1日~OK <input type="checkbox" name="working_days[2]" value="2"> 週2、3日程度  <input type="checkbox" name="working_days[3]" value="3"> 月~金曜日 <input type="checkbox" name="working_days[4]" value="4"> 土日祝日のみ <input type="checkbox" name="working_days[5]" value="5"> 毎日オールフリー</label>      <input type="submit" name="Submit" value="登録"> </form> </body> </html>

    • ベストアンサー
    • 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
  • チェックボックス等の扱い。

    http://oguchan.s4.xrea.com/language/php/ のサイトにて、 <FORM> <INPUT TYPE="TEXT" NAME="hoge" VALUE="1"> <INPUT TYPE="SUBMIT"> </FORM> は、phpスクリプト内で$hogeで参照でき、しかしそれは危険であるから、 register_globals を無効にしてこれをできなくする。とあります。 PHP4~もそういうように設定されていると聞きました。 しかし、チェックボックスで同じname、で異なるvalueをもつ複数のデータを扱うときに、 <input type="checkbox" name="delno[]" value="no1"> <input type="checkbox" name="delno[]" value="no2"> としたときに、 echo $_POST['delno'][0]; echo $_POST['delno'][1]; と参照できてしまうのですが、これはいいのですか?

    • ベストアンサー
    • PHP
  • チェックボックスからデータベースへ複数書き込み

    こんにちは。 現在アンケートサイトを作成しているのですが、チェックボックスを利用した質問の複数選択した回答をデータベースに登録できません。 htmlやphp、PostgreSQLに詳しい方指摘お願いします。 ※sample.html <form method="post" action="sample.php"> <b>7.あなたはどのような資格を持っていますか?</b><br> <input type="checkbox" name="sikaku[]" value="1" checked>ITパスポート <input type="checkbox" name="sikaku[]" value="2">漢字検定3級以上 <input type="checkbox" name="sikaku[]" value="3">英語検定3級以上 <input type="checkbox" name="sikaku[]" value="4">自動車運転免許 <input type="checkbox" name="sikaku[]" value="5">簿記 <input type="checkbox" name="sikaku[]" value="6">宅建 <input type="checkbox" name="sikaku[]" value="7">TOEIC600点以上 <input type="checkbox" name="sikaku[]" value="8">その他<br><br> <input type="submit" name="OK" value="OK"> </form> ※sample.php <?php //htmlから"sikaku"を取得 $sikaku = $_REQUEST["sikaku"]; //dbに接続・dbに書き込みSQL文 $dbconn = pg_connect ("dbname=****** user=********"); $result = pg_query ($dbconn, urldecode("insert into sample03 values('$sikaku');")); //接続を閉じる pg_close($dbconn); ?> ※PostgreSQL(table : sample03) //テーブル作成 ********=> create table sample03( ********(> 資格 int); CREATE TABLE //権限 ********=> grant select on sample03 to ********; GRANT //テーブルの表示 ********=> select * from sample03; 資格 ------ (0 rows)

  • チェックボックスのうちひとつでもチェックがなければエラー

    チェックボックスが複数個(5~6個)あります。 hajime.html <form action="niban.php" method="post"> <input type="checkbox" value="A" name="CHK1" /> <input type="checkbox" value="B" name="CHK2" /> <input type="checkbox" value="C" name="CHK3" /> <input type="checkbox" value="D" name="CHK4" /> <input type="checkbox" value="E" name="CHK5" /> <input type="checkbox" value="F" name="CHK6" /> </form> ●このA~Fのうち、ひとつでもチェックされていなければ チェックしてください。とエラー表示させたいのですが… ●次のページではこのようにデータを受取していします。 niban.php// フォームの値取得は下記のように行っています。 if ($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST as $k => $v){ if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v); $v = addslashes($v); $$k = $v; } } else { exit(); } $ErrFlg = 0;(エラーの時は$ErrFlgを1にします) ●エラー構文のサンプル↓ if ($name == "" ) { echo "<p>名前を入力してください。"; $ErrFlg = 1; } どうぞお力をおかしください

    • 締切済み
    • PHP
  • グループ別けされたチェックボックスの選択および解除

    こんばんは。いつもお世話になっております。 随分前になりますが、こちらでご指導いただいた内容を元に、タイトルにある、グループ別けされたチェックボックス郡の選択および解除をしたいと考えているのですが、お恥ずかしながら、思うような結果を得る事が出来ません。 お忙しい中恐縮ですが、ご指導いただきたく投函させて頂きます。 ※グループ単位で選択or解除をしたい □カテゴリ(すべて選択or解除) □1 □2 □3 □4 □5 □タイプ □1 □2 □3 □4 □5 文字数制限に引っかかってしまったので、javascpipt部は非表示にいたします。 <input type="checkbox" onclick="CheckAlt(this)"> <div id="category"> <input type="checkbox" name="category[]" value="1"> <input type="checkbox" name="category[]" value="2"> <input type="checkbox" name="category[]" value="3"> <input type="checkbox" name="category[]" value="4"> <input type="checkbox" name="category[]" value="5"> </div> <input type="checkbox" onclick="CheckAlt(this)"> <div id="type"> <input type="checkbox" name="type[]" value="1"> <input type="checkbox" name="type[]" value="2"> <input type="checkbox" name="type[]" value="3"> <input type="checkbox" name="type[]" value="4"> <input type="checkbox" name="type[]" value="5"> </div>

  • チェックボックスによる検索(複数チェックの場合)

    プログラム超初心者です。色々なサイトを検索し参考にしたのですがどうしても結果が得られないため投稿させていただきました。(似たようなものは多かったのですがわかりませんでした。) チェックボックスにて複数チェックされる可能性があるものをMYSQLより検索をかけ結果を表示したいと思っております。 地域:□北海道、□東北、□関東、□北陸、□中部、 ジャンル:□イタリアン、□アジアン料理、□洋食、□すべて 以上にチェックをいれてもらったものに対し検索結果画面をだす予定です。 検索をかけるhtml画面は以下のように致しました。 <form method="POST" action="search.php"> <input name="area[]" type="checkbox" value="0"/>北海道<br> <input name="area[]" type="checkbox" value="1"/>東北<br> <input name="area[]" type="checkbox" value="2"/>関東<br> <input name="area[]" type="checkbox" value="3"/>北陸<br> <input name="area[]" type="checkbox" value="4"/>中部<br> <input name="genre[]" type="checkbox" value="a"/>イタリアン<br> <input name="genre[]" type="checkbox" value="b"/>アジア料理<br> <input name="genre[]" type="checkbox" value="c"/>洋食<br> <input name="genre[]" type="checkbox" value="g"/>すべて<br> <input type="submit" name="bottun1" value="入 力"> PHPで$変数名a = $_POST["area"];と$変数名b = $_POST["genre"]; とし配列 foreach関数を使うのでは・・・とまで考えたのですがその後どうすればよいかわかりません。こんなにわからない状態でお伺いするのは恥ずかしいのですがお知恵を頂きたく投稿させていただきました。 お忙しいかと思いますがどうか宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • チェックボックスで選択したものがINSERTできません。

    <input type="checkbox" name="color[]" value="1" checked>赤 <input type="checkbox" name="color[]" value="2" >青 <input type="checkbox" name="color[]" value="3" >黄 <input type="checkbox" name="color[]" value="4" >緑 をPOSTで送ってPHPで $color_arr=Array(1=>"赤",2=>"青",3=>"黄",4=>"緑"); $color=$_POST["color"]; $str_color=""; foreach ($color as $key => $value){ if($str_color!="") $str_color.=","; $str_color.=$color_arr[$value]; } $html = str_replace('_%color%_', $str_color, $html); として追加内容確認画面で <input type="hidden" name="color" value="_%color%_"> _%color%_ として、チェックしたものを 赤,黄のように表示させて「OK」ボタンを押して PHPでINSERTするんですが、 mysql_query('insert into table1(name,color) values("'.$_POST['name'].'","'.$_POST['color'].'")'); としても空白のままです。nameはちゃんと入ってます。 テーブルは name varchar(50) color char(1) です。

    • ベストアンサー
    • PHP
  • チェックボックスの全選択/解除について

    お尋ねします。 チェックボックスの全選択/解除について 1画面にチェックボックスのグループが複数(store、item)あります。 下記のソースだと【store】の全選択を押下すると【store】【item】両方とも 全選択状態になります。 【store】の全選択/全解除は【store】のみ 【item】の全選択/全解除は【item】のみにしたいのですが どのようにするとよろしいのでしょうか? よろしくお願いします。 <SCRIPT TYPE="text/javascript"> <!-- function allcheck(targetForm,flag){  for(n=0;n<=targetForm.length-1;n++){   if(targetForm.elements[n].type == "checkbox"){    targetForm.elements[n].checked = flag;   }  } } --> </SCRIPT> <table width="70%" align = "center" cellspacing="0"> <form action="confirm.php" method="post" target="_blank"> <tr> <td align="center"> <input type="checkbox" name="store[]" value="1" />A店<br/> <input type="checkbox" name="store[]" value="2" />B店<br/> <input type="checkbox" name="store[]" value="3" />C店<br/> <input type="checkbox" name="store[]" value="4" />D店<br/> <input type="checkbox" name="store[]" value="5" />E店<br/> <input type="button" value="全選択" onClick="allcheck(this.form,true)"/><br> <input type="button" value="全解除" onClick="allcheck(this.form,false)"/> </td> <td align="center"> <input type="checkbox" name="item[]" value="1" />項目1<br/> <input type="checkbox" name="item[]" value="2" />項目2<br/> <input type="checkbox" name="item[]" value="3" />項目3<br/> <input type="checkbox" name="item[]" value="4" />項目4<br/> <input type="checkbox" name="item[]" value="5" />項目5<br/> <input type="button" value="全選択" onClick="allcheck(this.form,true)"/><br> <input type="button" value="全解除" onClick="allcheck(this.form,false)"/> </td> </tr> <tr align="center"> <td colspan="4"> <input type="submit" name="con" value="確認"> </td> </tr> </form> </table>

    • 締切済み
    • PHP