• 締切済み

PHP+MySQLで複数のラジオボタンから値を取得

初めまして。もしお力を貸していただけるならと思い質問させていただきます。 今、MySQLに登録したデータを修正できるようにするファイルを作成しておりまして、 IDを指定すれば、ラジオボタンに登録されているデータがcheckedされるようにしたいと 考えています。 【MySQL】 [hoge] id hogeA 0or1 hogeB 0or1 hogeC 0or1 【update.php】 <?php require ("../dbconnect.php"); $_REQUEST["id"] = 選択したIDの受け渡し; $id = $_REQUEST["id"]; $sql = sprintf ("SELECT * FROM hoge WHERE id=%d", mysql_real_escape_string ($id) ); $recordSet = mysql_query ($sql) or die (mysql_error()); $data = mysql_fetch_assoc ($recordSet); $checkedOK = null; $checkedNG = null; switch($data["hogeA"]){ case 0: $checkedOK = 'checked'; break; case 1: $checkedNG = 'checked'; } ?> <html> <head> <form method="post" id="updateForm" action="update.php" enctype="multipart/form-data"> <table> <tr> <th>hogeA</th> <td><label> <input type="radio" name="hogeA" id="hogeA01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeA" id="hogeA02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> <tr> <th>hogeB</th> <td><label> <input type="radio" name="hogeB" id="hogeB01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeB" id="hogeB02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> <tr> <th>hogeC</th> <td><label> <input type="radio" name="hogeC" id="hogeC01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeC" id="hogeC02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> </head> </html> とした場合、当然ですがhogeA,hogeB,hogeCには同じ値が入ってしまいます。 hogeB,hogeCも同じ様にSWITCH文を書けば実装できると思うのですが、 foreach等を使って複数のラジオボタンを取得するいい方法があれば、 教えていただきたいです。 説明が不十分で申し訳ありません。もし快くお答えいただける方がいれば大変嬉しく思います。

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

みんなの回答

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

こんな風にnameとvalueをつかった配列を用意すればいいでしょう <?PHP error_reporting(E_ALL); $checked=array( "hogeA"=>array(0=>" checked",1=>"") ,"hogeB"=>array(0=>"",1=>" checked") ,"hogeC"=>array(0=>" checked",1=>"") ); ?> <input type="radio" name="hogeA" id="hogeA01" class="style02" value="0" <?php echo$checked["hogeA"][0]; ?>><label for="hogeA01">OK</label> <input type="radio" name="hogeA" id="hogeA02" class="style02" value="1" <?php echo$checked["hogeA"][1]; ?>><label for="hogeA02">NG</label><br> <input type="radio" name="hogeB" id="hogeB01" class="style02" value="0" <?php echo$checked["hogeB"][0]; ?>><label for="hogeB01">OK</label> <input type="radio" name="hogeB" id="hogeB02" class="style02" value="1" <?php echo$checked["hogeB"][1]; ?>><label for="hogeB02">NG</label><br> <input type="radio" name="hogeC" id="hogeC01" class="style02" value="0" <?php echo$checked["hogeC"][0]; ?>><label for="hogeC01">OK</label> <input type="radio" name="hogeC" id="hogeC02" class="style02" value="1" <?php echo$checked["hogeC"][1]; ?>><label for="hogeC02">NG</label><br>

glllssunn
質問者

補足

早急なお返事ありがとうございます。 今試させていただきましたが上手く実装できませんでした。 hogeA,hogeB,hogeCは別々の<tr></tr>なので、 $checked=array( "hogeA"=>array(0=>" checked",1=>"") ,"hogeB"=>array(0=>"",1=>" checked") ,"hogeC"=>array(0=>" checked",1=>"") ); の部分が上手く動作できてないようです。 追加でご指示いただけましたら、よろしくお願いいたします。

関連するQ&A

  • PHPでMySQLにデーターを追加するところで壁に当たってしまいました

    PHPでMySQLにデーターを追加するところで壁に当たってしまいました。 PHP5.3&MYSQL5.1 1.フォームへ入力 2.確認画面 3.MySQLへデーター追加 1.form <html> <head><title></title></head> <body> <form method="post" action="conf.php"> <table> <tr><th>番号</th><td><input type="text" name="id" /></td></tr> <tr><th>タイトル</th><td><input type="text" name="title" /></td></tr> <tr><th>テキスト</th><td><textarea name="cont" cols="40" rows="5" /></textarea></tr> <tr><th>日付け</th><td><input type="text" name="update" size="10" /></td></tr> </table> <input type="submit" value="送信" /><input type="reset" value="リセット" /> </form> </body> </html> 2.確認画面 <html> <head><title></title></head> <body> <table> <tr><th>番号</th><td><?php echo htmlspecialchars($_POST["id"]) ?></td></tr> <tr><th>タイトル</th><td><?php echo htmlspecialchars($_POST["title"]) ?></td></tr> <tr><th>テキスト</th><td><?php echo htmlspecialchars($_POST["cont"]) ?></td></tr> <tr><th>日付け</th><td><?php echo htmlspecialchars($_POST["update"]) ?></td></tr> </table> <form method="post" action="upld.php"> <input type="hidden" name="did" value="<?php echo htmlspecialchars($_POST["id"]) ?>" /> <input type="hidden" name="title" value="<?php echo htmlspecialchars($_POST["title"]) ?>" /> <input type="hidden" name="cont" value="<?php echo htmlspecialchars($_POST["cont"]) ?>" /> <input type="hidden" name="update" value="<?php echo htmlspecialchars($_POST["update"]) ?>" /> <input type="submit" value="登録" /> </form> </body> </html> 3.MySQLへデーター追加 <?php $Con = mysql_connect("localhost","root",""); if ($Con == false) {dir ("MySQLの接続に失敗。");} if (!mysql_select_db("phpdata",$Con)) {dir ("データーベース接続に失敗。");} $sql = "insert into daimoku(id,title,cont,update) values('".$_POST["id"]."','".$_POST["title"]."','".$_POST["cont"]."','".$_POST["update"]."')";//SQL文の作成 $res = mysql_query($sql) or die(mysql_error());//クエリの実行 mysql_close($Con);//切断 ?> <html> <head> <title></title> </head> <body> <p>ご登録ありがとうございました。</p> <a href="01.php">戻る</a> </body> 以上のコードでデーターの追加が出来ません。 どなたか教えていただけないでしょうか?

    • ベストアンサー
    • PHP
  • クリックしたラジオボタンの行番号を取得したい

    Jqueryを用いてクリックしたラジオボタンの行番号を取得したいのですが、 うまくいきません。 次のようなHTMLで <table border="1" style="font-size:12px;"> <tr> <td>2014年06月01日</td> <td> <label><input type="radio" name="rd1" class="rd" value="0" />A</label> <label><input type="radio" name="rd1" class="rd" value="1" checked="checked" />B</label> <label><input type="radio" name="rd1" class="rd" value="7" />C</label> </td> </tr> <tr> <td>2014年06月02日</td> <td> <label><input type="radio" name="rd2" class="rd" value="0" />A</label> <label><input type="radio" name="rd2" class="rd" value="1" checked="checked" />B</label> <label><input type="radio" name="rd2" class="rd" value="7" />C</label> </td> </tr> <tr> <td>2014年06月03日</td> <td> <label><input type="radio" name="rd3" class="rd" value="0" />A</label> <label><input type="radio" name="rd3" class="rd" value="1" checked="checked" />B</label> <label><input type="radio" name="rd3" class="rd" value="7" />C</label> </td> </tr> <tr> <td>2014年06月04日<td> <td> <label><input type="radio" name="rd4" class="rd" value="0" />A</label> <label><input type="radio" name="rd4" class="rd" value="1" checked="checked" />B</label> <label><input type="radio" name="rd4" class="rd" value="7" />C</label> </td> </tr> </table> 下記で選択したラジオボタンの値を取得できるのですが、 行の番号が取れません。 //ラジオボタンを変更 $('.rd').change(function(){ val = $(this).val(); alert("hoge " + val); }); どのようにしたら良いでしょうか? 宜しくお願いいたします。

  • PHPでMySQLを使った検索のプログラム

    「たったコレだけでPHPプログラミングが理解できる本」を参考にPHPでプログラムを書いていまして、 ビジネスホテルの検索機能をチェックボックス機能を余分につけて検索できないか試したのですが、 チェックボックスにチェックを入れると全く検索できず他のテキストボックスに入力するだけなら検索できます。 なんとかチェックボックスを有効にできないかいろいろなサイトを調べたり本を読んだりしましたが解決策が見つかりません。 いろいろな機能に対応できるようなプログラムを組みたいと思ったのでかなりの初心者で大変恐縮ですが、どなたかご教授お願いできないかと思っております。 あと参考になるサイトがございましたら、教えていただきたいと思っております。 何卒よろしくお願い致します。 前半省略 <form name="search_form" action="" method="post" > <input type="hidden" name="cmd" value="search" /> <table> <tr> <th>物件種別</th> <td> <input type="checkbox" name="kodawari_key[]" value="温泉" <?php if( $_REQUEST["kodawari_key"] == "温泉" ){ print( 'checked' ); } ?>/> 温泉 <input type="checkbox" name="kodawari_key[]" value="ランチ" <?php if( $_REQUEST["kodawari_key"] == "ランチ" ){ print( 'checked' ); } ?>/> ランチ<br /> <input type="checkbox" name="kodawari_key[]" value="ディナー" <?php if( $_REQUEST["kodawari_key"] == "ディナー" ){ print( 'checked' ); } ?>/> ディナー</td> </tr> <tr> <th>価格帯</th> <td> <input type="text" name="price_min" value="<?php print( htmlspecialchars( $_REQUEST["price_min"] ,ENT_QUOTES ) ) ?>" size="8"> ~ <input type="text" name="price_max" value="<?php print( htmlspecialchars( $_REQUEST["price_max"] ,ENT_QUOTES ) ) ?>" size="8"><br /> </td> </tr> <tr> <th>住所</th> <td><input type="text" name="address" value="<?php print( htmlspecialchars( $_REQUEST["address"] ,ENT_QUOTES ) ) ?>" size="20"></td> </tr> </table> <input type="submit" value="検索" class="Btn-gray button"> </form> <p>&nbsp;</p> <?php if( $_REQUEST["cmd"] == "search" ){ $pdo = new PDO("mysql:host=localhost; dbname=hotel_reservation; charset=utf8", "koredake", "koredake123", array( PDO::ATTR_EMULATE_PREPARES => false ) ); $sql = "select * from hotels where 1 = 1 "; $condition = array(); if( !empty( $_POST["kodawari_key"] )){ $sql = $sql . " and kodawari_key = :kodawari_key"; $condition["kodawari_key"] = $_REQUEST["kodawari_key"]; } if( !empty( $_REQUEST["price_min"] ) ){ $sql = $sql . " and price >= :price_min "; $condition[":price_min"] = $_REQUEST["price_min"]; } if( !empty( $_REQUEST["price_max"] ) ){ $sql = $sql . " and price <= :price_max "; $condition[":price_max"] = $_REQUEST["price_max"]; } if( !empty( $_REQUEST["address"] ) ){ $sql = $sql . " and ( pref like :pref or city like :city or address like :address ) "; $condition[":pref"] = "%{$_REQUEST["address"]}%"; $condition[":city"] = "%{$_REQUEST["address"]}%"; $condition[":address"] = "%{$_REQUEST["address"]}%"; } $statement = $pdo->prepare( $sql ); $statement->execute( $condition ); $results = $statement->fetchAll(); ?> <table border="1"> <caption>検索結果</caption> <tr> <th></th> <th>ホテル名</th> <th>宿泊料金</th> <th>住所</th> </tr> <?php foreach( $results as $result ){ ?> <tr> <td><img src="hotel/<?php print( htmlspecialchars( $result["id"], ENT_QUOTES )); ?>.png" /></td> <td><?php print( htmlspecialchars( $result["hotel_name"], ENT_QUOTES )); ?></td> <td>\<?php print( htmlspecialchars( number_format( $result["price"] ),ENT_QUOTES ) ); ?></td> <td> <?php print( htmlspecialchars( $result["pref"], ENT_QUOTES ) ); ?> <?php print( htmlspecialchars( $result["city"], ENT_QUOTES ) ); ?> <?php print( htmlspecialchars( $result["address"], ENT_QUOTES ) ); ?> </td> </tr> <?php } } ?> </table> </div> </body> </html>

    • ベストアンサー
    • MySQL
  • VBA IE ラジオボタンにチェックをつけたい

    エクセルvbaでIE操作をしているのですが、 -------------------------------------------------------- <tr> <th><span class="asterisk">*</span>&nbsp; <label for="sex">性別:</label></th> <td> <input type="radio" name="gender" value="m" id="male" tabindex="1000"> <label for="male">男性</label> <input type="radio" name="gender" value="f" id="female"> <label for="female">女性</label> </td> </tr> -------------------------------------------------------- のソースで、男性にチェックを入れたいのですが、 どのようなVBAコードを書けばいいのでしょうか? objIE.document.all.gender.Value = "m" だとエラーになってしまいます。 ご教授よろしくお願いします。

  • メールフォームのラジオボタンフィールドの件

    ホームページメールフォーム作成でご質問しました。 ラジオボタンとチェックボックスのフィールドで、その他項目を設けてテキストフィールドを作っているます。 このテキストフィールドにもラジオボタンまたは、チェックボックスのチェックを行えるようにできないでしょうか。 ○あああ ○いいい ○ううう ○えええ ○その他 □(ここにテキスト入力フィールド) ※javascriptを作る必要があるでしょうか。 下記のソースが、現状です。 <tr><td class="item_name">設問</td> <td class="item_form"> <table border="0" cellpadding="0" cellspacing="0"> <tr><td><input name="設問ABC" type="radio" value="Webサイト1" class="radio" id="toi2" /></td> <td valign="bottom"><label for="toi2">Webサイト1</label></td></tr> <tr><td><input name="設問ABC" type="radio" value="Webサイト22" class="radio" id="toi2" /></td> <td valign="bottom"><label for="toi2">Webサイト22</label></td></tr> <tr><td><input name="設問ABC" type="radio" value="Webサイト333" class="radio" id="toi2" /></td> <td valign="bottom"><label for="toi2">Webサイト333</label></td></tr> <tr><td><input name="設問ABC" type="radio" value="Webサイト555" class="radio" id="toi2" /></td> <td valign="bottom"><label for="toi2">Webサイト555</label></td></tr> </table> <div>その他:<input type="text" name="設問ABC" style="width:280px" /></div> </td></tr>

  • 特殊文字のエスケープについて

    今PHPを勉強しています。全くの初心者なので、本を頼りにやっているのですが、エスケープの所がうまく行きません。分かる方がいたら教えて下さい。お願い致します。 <?php //データを受け取る $text1 = @$_POST["text1"]; //特殊文字をエスケープする $text2 = htmlspecialchars($text1); //エスケープ後の値を表示する echo "<p>エスケープ後:".$text2; //「ENT_QUOTES」を指定したとき echo "<p>ENT_QUOTES:".htmlspecialchars($text1, ENT_QUOTES); //「ENT_NOQUOTES」を指定したとき echo "<p>ENT_NOQUOTES:".htmlspecialchars($text1, ENT_NOQUOTES); ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table> <tr> <td><input type="text" name="text1" value="<?php echo $text2?>"></td> <td><input type="submit" value="送信" name="sub1"></td> </tr> </table> </form> を実行して、<b>"太字"</b>を送信すると「"」の前に「\」が入ってしまいます。本では、<b>"太字"</b>のまま表示されるようなんです。。 文字コードはEUCで保存しています。

    • 締切済み
    • PHP
  • PHPとMySQL 検索フォームを作りたい。

    PHPとMySQLを使って商品一覧を作りました。 ◆商品一覧表 http://pips.chu.jp/0/07/index.php <?php function connect() { return new PDO("mysql:dbname=★.★","★","★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM shohin"); $shohin = $st->fetchAll(); ?>    <TABLE border="1"> <tr> <th>商品番号</th> <th>商品名</th> <th>分類</th> <th>販売単価</th> <th>仕入単価</th> <th>登録日</th> </tr> <?php foreach ($shohin as $g) { ?> <tr> <td><?php echo $g['id'] ?></td> <td><?php echo $g['name'] ?></td> <td><?php echo $g['bunrui'] ?></td> <td class="td-price"><?php echo number_format ($g['htanka']) ?></td> <td class="td-price"><?php echo number_format ($g['stanka'])?></td> <td><?php echo $g['day'] ?></td> </tr> <?php } ?> </TABLE> ◆特定の商品一覧表 http://pips.chu.jp/0/07/irui.php ↓ $st = $pdo->query("SELECT * FROM shohin");の部分を $st = $pdo->query("SELECT * FROM shohin WHERE bunrui='衣類' ");に変更すると 分類が衣類だけの表になります。 ◆入力フォーム http://pips.chu.jp/0/07/form.php ↓ <form action = "kensaku.php" method="post">    分類:<input type="text" name="bunrui">    <input type="submit" name="submit" value="検索"> </form> こんな感じの入力フォームを作り、分類名を入力すると、その分類名の一覧表に反映されるようにしたいです。 ◆検索された一覧表 http://pips.chu.jp/0/07/kensaku.php ↓ <?php function connect() { return new PDO("mysql:dbname=★.★","★","★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM shohin WHERE bunrui='?' "); $shohin = $st->fetchAll(); ?>    <TABLE border="1"> <tr> <th>商品番号</th> <th>商品名</th> <th>分類</th> <th>販売単価</th> <th>仕入単価</th> <th>登録日</th> </tr> <?php foreach ($shohin as $g) { ?> <tr> <td><?php echo $g['id'] ?></td> <td><?php echo $g['name'] ?></td> <td><?php echo $g['bunrui'] ?></td> <td class="td-price"><?php echo number_format ($g['htanka']) ?></td> <td class="td-price"><?php echo number_format ($g['stanka'])?></td> <td><?php echo $g['day'] ?></td> </tr> <?php } ?> </TABLE> 「入力フォーム」と「検索された一覧表」のソースの書き方がわかりません。 どのようにけば実現するでしょうか。 まだ初心者なので、本やサイトを調べながら見よう見まねでやっています。 具体的に、どの部分を書き換えればよいか教えていただければ有難いです。 よろしくお願いします。

  • 【PHPチェック】ラジオボタンが未入力である場合の

    【PHPチェック】ラジオボタンが未入力である場合のエラーメッセージ表示 ラジオボタンのエラーメッセージの表示について調べています。 そこで、以下のURLにやり方が載っていたので、 https://teratail.com/questions/171999 このURLのベストアンサーの所のコード(付属画像の部分) をカスタマイズして 、あと、自分の書いたHTML5のRadioボタンの所にコードを足してみたのですが、エラーメッセ―が表示されないどころか、同意するしないのラジオボタンが2つ同時に選択できるように、なってしまうというありさまで困っています。 何がしたいかというと、 ラジオボタンの同意ボタンのエラーメッセージを表示させたいのですが、 例えば、下のコード(自分のコード)は「同意する」というボタンに初めからチェックが入っているのですが、もし、相手が「同意しない」を選択したときに「送信ボタン」を押したときに、”同意できない場合は本サービスをご利用いただけません”というエラーメッセージを表示したいのです。 どうしたらよいでしょうか?困っています。 以下は自分が書いたコードになります。1部はカットしています。 <?php session_start(); if(isset($_SESSION['name'])){ $name = $_SESSION['name']; } $_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(48)); $token = htmlspecialchars($_SESSION['token'], ENT_QUOTES); $flg=($_SERVER["REQUEST_METHOD"]=="POST"); $hogehoge=filter_input(INPUT_POST,"hogehoge"); $err_msg['hogehoge'] =($flg and is_null($hogehoge))?'利用規約に同意して頂けない場合は本サービスのご利用はお控えください。':''; var_dump([$flg,$hogehoge,]); ?> <!DOCTYPE html> <html> <head> <meta charset ="utf-8"> <link rel="stylesheet" href="kiyaku.css"> <title></title> </head> <body> <form action ="hpform3.php" method ="post"> <input type ="hidden" name ="token" value ="<?php echo $token ?>"> <table> <tr> <th>名前:</th><td><?php echo $name; ?></td> </tr> </table> <section> <label class="radio_text"> <input type="radio" name="douisuru" value="hoge" checked>同意する </label> <label class="radio_text"> <input type="radio" name="hogehoge" value="hoge">同意しない <span><?=$err_msg['hogehoge'];?></span> </label> </section> <table> <tr> <td colspan="2"><input type ="submit" name="submit"value ="送信する"></td> </tr> </table> </form> <p><a href="form1.php?action=edit">入力画面へ戻る</a></p> </body> </html>

    • ベストアンサー
    • PHP
  • php + mysql でフォーム作成時のエラー

    データベースから取り出したデータをラジオボタンで選択し、それをデータベース(別のテーブル)に追加させる機能を作りたいです。 非常に初歩的なことだとは思うのですがご教授ください。 MySQL 4.0.27 PHP 5.2.11 <FORM ACTION="cone3.php" METHOD="post"> <?php $srv = ""; // サーバー名 $id = ""; // ユーザーID $passwd = "; // パスワード $dbn = ""; // データベース名 $sql = "SELECT code, lname, lecturer, kind, gradetype FROM Lecture"; // SQL文 // データベースに接続する $db = mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs = mysql_query($sql,$db); //--- テーブルのレイアウト --- 開始 -----------------------> print("<TABLE><TR>"); print("<TR><th> </th><th>講義名</th><th>教員</th><th>科目区分</th><th>配当学年</th></tr>"); while($row = mysql_fetch_array($rs)) { print '<tr><td><input type="radio" name="regist" value="$row['code']"></td>'; print '<td>' . $row['lname'] . '</td>'; print '<td>' . $row['lecturer'] . '</td>'; print '<td>' . $row['kind'] . '</td>'; print '<td>' . $row['gradetype'] . '</td>'; print '</tr>'; print ("</TR>"); } print("</TABLE>"); print_r($_POST); echo "<br />\n"; mysql_free_result($rs); mysql_close($db); //--- 終了 ---> ?> <input type="submit" name="submit" value="送信"> </form> 以上のようなソースでラジオボタンで配列の$row[code]の値を送りたいんですがうまくいきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでMYSQLを使ったログイン

    PHPでMYSQLを使いってログインフォームを作ったのですが 画像の上の方ようなテーブルを作りPHP側のログインフォームでログインしてもらい 画像のusernameの[S]でログインしたらIDとFirst NameとLast NameをPHPで 画像の下の方のように表示するようにしたいのですが echo "<tr><th>ID</th><th>USERNAME</th><th>First Name</th><th>Last Name</th></tr>"; $st = ("select * from kd3musers where username='$username'"); (この間) echo "<tr><td>$id</td><td>$username</td><td>$first_name</td><td>$last_name</td></tr>"; (この間)の中身がわかりません。 別の書き方や、わかる方がいましたらよろしくお願いします

    • ベストアンサー
    • PHP