• 締切済み

チェックボックスと入力フォームが一致しない

freepacketの回答

回答No.2

user[chk]はチェックした物だけPOSTされます。 対してuser[clo_date]はすべてのデータがPOSTされます。 故にuser[chk][0]とuser[clo_date][0]は相対していません。 入力フォームのecho部を、データSET部分と同じく、 user[chk][$i] user[clo_date][$i] とするとよろしいかと。

関連するQ&A

  • チェックボックス複数選択 mysql受け渡し

    PHPを習いはじめたのですが分からない所がありましたので質問をさせて頂きました。 チェックボックスを作り複数選択されたデータをMYSQLに受け渡したいのですがどうしてもうまくいきません。受け渡しが出来たかと思えばARRAYのみ表示されてしまい、重要な内容が一切表示されません。 こちらがスクリプトになります。 <tr> <td>(チェックボックス)<br />順番不問</td> <td> <span class="checkbox"><input name="check1[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="check1[]" type="checkbox" value="bbb" />bbb</span> </tr> </td> //mysql $sql = "insert into table values('$check1')"; 多分この$sql分のなにかが間違ってると思うですがいくらやっても 出来ません、、 mysql の設定はカラムはcheck1となっており、text, 値はnullとなっております。 どのなたか複数チェックボックスで表示された項目をMYSQLのデータベースに移行できる方法をご存知の方お伺い出来ませんでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • チェックボックス + フリーワード検索 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でMySQLデータを呼び出し、whileループの中で別テーブルのデータをループするには

    MySQLからuserというテーブルのデータを呼び出し、表示すると同時にフォームとしてデータの変更もできるプログラムを作成しています。 その項目の中に別のusergrというテーブルのデータをリストボックスで表示させたいのですが、うまくいきません。 現状では下記のスクリプトでuserの1番のデータだけが表示されている状態です。(リストボックスも問題なく表示はされていますが…) まわりに聞ける人もいず、本などを見よう見まねで作成したため、根本的に誤ってるところがあるかと思いますが、どうかアドバイス頂けませんでしょうか。 $sql = "SELECT * FROM user"; $mysql->query($sql); while($row = $mysql->fetch()){ $no = $row["no"]; $name = $row["name"]; $division = $row["division"]; $email = $row["email"]; $tel = $row["tel"]; $group = $row["group"]; echo <<<EOT <td align="center">$no</td> <td align="center"><input type="text" name="name[$no]" value="$name" size="10"></td> <td align="center"><input type="text" name="division[$no]" value="$division" size="20"></td> <td align="center"><input type="text" name="email[$no]" value="$email" size="30"></td> <td align="center"><input type="text" name="tel[$no]" value="$tel" size="10"></td> <td align="center"> <select name="group[$no]"> EOT; $sql = "SELECT * FROM usergr LEFT JOIN user ON usergr.grno=user.group"; $mysql->query($sql); while($row = $mysql->fetch()){ $group = $row["group"]; $grno = $row["grno"]; $grname = $row["grname"]; if($row["grno"]==$group){ echo "<option value=\"{$row['grno']}\" selected=\"selected\">{$row['grname']}</option>"; } else { echo "<option value=\"{$row['grno']}\">{$row['grname']}</option>"; } } echo <<<EOT </select> </td> <td align="center"><input type="submit" name="submit_upd[$no]" value="変更"> <input type="submit" name="submit_del[$no]" value="削除"></td> </tr> EOT; }

    • ベストアンサー
    • PHP
  • チェックボックスから検索、PHP コード付き

    現在チェックボックスとフリーワード検索をしようしたサイトを作ろうとしているのですが、どうしても仕様通りにいきませんでしたのでここで 質問をさせて頂きました。 検索画面ですが、簡単な2ページ構成になっております。(kensaku.phpとresult.php) コードのどこが間違っているのかが分かりません。 どなたかお分かりになる方がいましたらお伺い出来ませんでしょうか。 宜しくお願い致します。 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> <?php //DB接続・選択 if (!$int_connect = @mysql_connect('localhost','bbb','aaa')) { die("can't connect mysql server."); } //データベースに接続 if (!@mysql_select_db("database", $int_connect)) { die("can't use selected database."); } // SQLクエリ $sql = "select * from table"; $where = array(); // sejyutuカラムの条件を調べる if (isset($_POST['sejyutu']) && is_array($_POST['sejyutu'])) { foreach ($_POST['sejyutu'] as $sejyutu) { $where[] = "sejyutu like '%" . mysql_real_escape_string($sejyutu) . "%'"; } } // sejyutu_elseカラムの条件を調べる if (isset($_POST['sejyutu_else']) && strlen($_POST['sejyutu_else'])) { $where[] = "sejyutu_else like '%" . mysql_real_escape_string($_POST['sejyutu_else']) . "%'"; } // 検索キーワードの有無により処理分岐 if (!$where) { echo "検索キーワードを入力して下さい"; } else { // SQL文を生成する $sql .= " where " . implode(' OR ', $where); $res = mysql_query($sql,$int_connect); if (!mysql_num_rows($res)) { echo "<p>該当データがありません</p>"; } else { // TABLEタグを書く while ($row = mysql_fetch_array($res)) { // 各結果をTR,TDタグで整形して表示する ?> <table width="430" cellpadding="5" cellspacing="0" class="font12"> <tr> <td colspan="2"><p class="salon_name"><?php echo mb_convert_encoding(trim($row["salon_name"]),"sjis","euc-jp") ?></p></td> <td><a href="salon_page.php?code=<?php echo $row['id'];?>">詳しくはこちら</a></td> </tr> <tr> <td valign="top"><p class="salon_item">最寄り駅:</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["station"]),"sjis","euc-jp") ?></td> </tr> <tr> <td valign="top"><p class="salon_item">住所:</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["address"]),"sjis","euc-jp") ?></td> </tr> <tr> <td valign="top"><p class="salon_item">施術名</p></td> <td class="salon_detail"><?php echo mb_convert_encoding(trim($row["sejyutu"]),"sjis","euc-jp") ?></td> </tr> <?php } } } ?>

    • ベストアンサー
    • PHP
  • チェックボックスの値を表示したい

    チェックボックスの値が1のときチェックボックスにチェックが入っているようにしたいです。 データはこんな感じです。 1,1020,2006/9/14,E,1 最後の1がチェックボックスの値です。 上記のデータは@txtに格納しています。 foreach (@txt) { ($rec_id, $tonum, $c_date, $c_status, $chkbox) = split(/,/, $_); $name = &num_to_name($tonum); $html .= "<tr><td>$rec_id</td><td>$tonum</td><td>$name</td><td>$c_date</td><td>$c_status</td><td><input type=checkbox name=chkbox value=\"$chkbox\"></td></tr>"; } htmlとして出力してもチェックボックスにチェックが入っていません。 valueにはやはりcheckedみたいに入れないと入らないのでしょうか? ちなみにこの1はチェックボックスにチェックを入れ、書き込みしたら1が保存されました。なので、valueが1ならばチェックされると思ったのですが・・・。

    • ベストアンサー
    • Perl
  • WordPressの独自テーブルへの入力フォーム

    WordPressのデータベースに独自のテーブル(wp_abc)を作りました。 カラムは「code(indexです)」「name」と「address」の3つです。 このテーブルにデータを入力するフォームを作りたいです。 これまでWordPressではないSQLへのデータ入力は次のようにしていました。 ●入力画面(insert.php) <?php function connect() { return new PDO("mysql:dbname=xxxxx;host=yyyyy","zzzzz","password", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $error = $name = ''; $pdo = connect(); if (@$_POST['submit']) { $code = $_POST['code']; $name = $_POST['name']; $address = $_POST['address']; if (!$name) $error .= '名前が入力されていません。<br>'; if (!$error) { $pdo->query("INSERT INTO abc(name,address) VALUES('$name','$address')"); header('Location: index.php'); exit(); } } ?> <?php if ($error) echo "<span class=\"error\">$error</span>" ?> <form action="insert.php" method="post"> <table> <tr> <th>名前</th> <td><INPUT type="text" name="name" value="<?php echo $name ?>"></td> <th>住所</th> <td><INPUT type="text" name="address" value="<?php echo $address ?>"></td> </tr> </table> <p><input class="submit" type="submit" name="submit" value="登録"></p> </form> ●管理画面(index.php) <?php function connect() { return new PDO("mysql:dbname=xxxxx;host=yyyyy","zzzzz","password", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM wp_abc"); $abc = $st->fetchAll(); ?> <?php foreach ($abc as $row) { ?> <table> <tr>  <th>名前</th> <td><?php echo ($row['name']) ?></td> </tr> <tr>  <th>住所</th> <td><?php echo ($row['address']) ?></td> </tr> </table> <?php } ?> ※※※※※ 単純にmysql:dbname=xxxxx;host=yyyyy","zzzzz","password",の部分をWordPressのデータベースのものに置き換えましたが、うまくいきません。 どこが悪いのかご指摘いただければありがたいです。 また、他に正しい方法がありましたら教えていただけないでしょうか。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックス 複数選択

    現在PHPを勉強しているのですがどうしてもわからなくなってしまったので 質問をさせて頂きます。 現在自分が作ろうとしているのは 登録フォーム→確認ページ→登録完了ページ(MYSQLに接続)の流れになっております。 その中でチェックボックスでつまずいております。 こちらにそのコードを一部を記載させて頂きます。 どこで困っているかと申しますと、登録フォームから確認ページまでは 複数選択されたチェックボックスを表示されることができたのですが、 確認ページから登録ページに変わる際に文字化けなどをし、 mysqlに接続して登録した際も文字化けになってしまいます。 他にも変数の受け渡しもうまく出来ていないと思います。 自分の中の結論としては確認ページのhiddenあたりが間違ってるのでは ないかと思ってるのですが何度試してみてもうまくいきません。 大変困っており、誰かご存知の方、もしくはこういう風に変更した方がいいとかありましたらご教授をお願い出来ませんでしょうか? 1,登録フォーム <tr> <td>施術(チェックボックス)<br />順番不問</td> <td> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="aaa" />aaa</span> <span class="checkbox"><input name="sejyutu[]" type="checkbox" value="bbb" />bbb</span> </td> </tr> 2,登録確認ページ $sejyutu = $_POST["sejyutu"]; <?php if (trim($sejyutu) == "" || !isset($sejyutu)){ echo "施術が選択されておりません。"; $flag_sejyutu=0; } elseif (empty($sejyutu)){ echo "施術が選択されておりません"; $flag_sejyutu=0; } else { if(isset($sejyutu) and count($sejyutu)>0){ $sejyutu_value = ""; for($i=0;$i<count($sejyutu);$i++){ if($i == 0){ $sejyutu_value .= $sejyutu[$i]; } else { $sejyutu_value .= " " . $sejyutu[$i]; } } } print mb_convert_encoding(trim($sejyutu_value),"sjis","euc-jp") ; $flag_sejyutu=1; } ?> <?php if($flag_sejyutu==1) { ?> <form action="reg_complete.php" method ="post"> <input type="hidden" name="sejyutu_value[]" value="<?php echo $sejyutu_value; ?>"> } 3,登録完了ページ $sejyutu = $_POST['sejyutu_value']; それからmysqlに接続。

    • ベストアンサー
    • 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
  • phpでフォーム登録したものがチェックされない

    初めて投稿します。 入力フォームから受け取ったuserIDをMYSQLを呼び出し重複がないかチェックした上で、重複があればエラー出力、なければ登録へ、といった形を考えています。 mysqladminから直接入力・保存したものはエラー検出するのですが、入力フォームから保存したものはエラー検出しません。 この原因・理由と解決方法が分かる方、どうか教えていただけないでしょうか? テーブルは以下の形で保存されています。 テーブル名 touroku idはint、dateはdatetime、他はvarchar(50)で作成 idにA_I、primary key設定、userIDのkeyにmulが設定されている 文字コードはutf-8で設定 id | userID | password | email | name |date | 1 | aaaa | aaaa | aaaa | aaaaa | |・・・※1 A 2 |ああああ |ああああ  |ああああ |ああああ | |・・・ B 3 | bbbb | bbbb | bbbb | bbbb | |・・・ B 4 | cccc | cccc | cccc | cccc | |・・・ A ※1 A・・・mysqladminからの直接入力・保存  B・・・入力フォームからの入力・保存 問題のプログラム(フォーム確認部分・userIDの部分のみ抜粋) 文字コードはutf-8で設定 <?php //DB設定 $DB_HOST = 'localhost'; $DB_USER = '○○'; $DB_PASS = '○○'; $DB_NAME = '○○'; $link = mysqli_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME); if (mysqli_connect_errno()) { die('データベースエラー'); } extract($_POST); $error_flag=0; //ログインID入力チェック if(empty($userID)){ echo '<p><span>必須</span>ログイン用の名前を入力して下さい。</p><br />'; $error_flag=1; }elseif($sql = "SELECT userID FROM touroku WHERE userID = '".$userID."' "){ $result = mysqli_query($link, $sql); $rows = mysqli_num_rows($result); ※2 if($rows == 0){ }else{ echo '<p><span>必須</span>ログインID欄に入力した'.$userID.'は既に使用されています。</p><br />'; $error_flag = 1; } }               ・               ・               ・ ?> ※2 この段階でvar_dump($rows);で型と変数を確認してみると、 userIDがaaaaのときのみ int(1)、他はint(0) どうか、お願い申し上げます。

    • 締切済み
    • PHP
  • ラジオボタンとテキストボックスで、ボタン選択時のテキストボックスの入力チェックするにはどうしたらよいでしょうか?

    ラジオボタンとテキストボックスの組合わせで使用し、ラジオボタン選択時のテキストボックスの入力チェックをするにはどうしたらよいのでしょうか? 以下はそのhtmlソースになります。 <table border="0" cellspacing="2" cellpadding="0"> <tr> <td><input type="radio" name="addsearch" value="検索エンジン" id="p1"></td> <td colspan="2"><label for="p1"><span class="stress2">検索エンジン</span></label></td> </tr> <tr> <td></td> <td>検索エンジン名</td> <td><INPUT TYPE=text NAME="addsearch1" VALUE="" SIZE=40></td> </tr> <tr> <td><input type="radio" name="addsearch" value="ご紹介で" id="p2"></td> <td colspan="2"><label for="p2"><span class="stress2">ご紹介で</span></label></td> </tr> <tr> <td></td> <td>ご紹介者のお名前をおしえてください。</td> <td><INPUT TYPE=text NAME="addsearch2" VALUE="" SIZE=40></td> </tr> <tr> <td><input type="radio" name="addsearch" value="広告を見て" id="p3"></td> <td colspan="2"><label for="p3"><span class="stress2">広告を見て</span></label></td> </tr> <tr> <td></td> <td>どこの広告ですか?</td> <td><INPUT TYPE=text NAME="addsearch3" VALUE="" SIZE=40></td> </tr> <tr> <td><input type="radio" name="addsearch" value="その他" id="p4"></td> <td colspan="2"><label for="p4"><span class="stress2">その他</span></label></td> </tr> <tr> <td></td> <td>具体的にお願いします。</td> <td><INPUT TYPE=text NAME="addsearch4" VALUE="" SIZE=40></td> </tr> </table> よろしくおねがいいたします。

    • ベストアンサー
    • HTML