PHP MySQLでチェックボックスによる検索

このQ&Aのポイント
  • PHPにてDB(MySQL)に登録されたデータをチェックボックスで検索するスクリプトを組んでおります。
  • 東京都+男、神奈川県+男のデータを取り出したいのですが、二つチェックを入れた場合、データが見つからないとなってしまします。
  • 住所(東京都、神奈川県、埼玉県)と性別(男、女)のチェックボックスを用意し、検索条件に応じてデータを取得する
回答を見る
  • ベストアンサー

php mysql でチェックボックスによる検索

お世話になります。 PHPにてDB(MySQL)に登録されたデータをチェックボックスで検索するスクリプトを組んでおります。 検索項目として(複数チェック可) 住所: □東京都 □神奈川県 □埼玉県 性別: □男   □女 とあります。 例えば東京都、神奈川県、男にチェックを入れた場合、 東京都+男、神奈川県+男のデータを取り出したいのですが、二つチェックを入れた場合、データが見つからないとなってしまします。 同じような質問は全て目を通して試してみたのですが、なかなかうまくいかない為、お力をかしていただければと思います。 スクリプトは以下となっております。 ------------------------------------------------------------- input.php <html> <head> <title>PHP SEARCH</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body bgcolor="#FFFFFF" text="#000000"> <form action="search.php" method="POST" > <form> <b>住所</b><br> <input type="checkbox" name="pref[]" value="東京都">東京都<br> <input type="checkbox" name="pref[]" value="神奈川県">神奈川県<br> <input type="checkbox" name="pref[]" value="埼玉県">埼玉県<br> <b>性別</b><br> <input type="checkbox" name="sex[]" value="男">男<br> <input type="checkbox" name="sex[]" value="女">女<br> <br> <input type="submit" value="検索開始"> </form> </body> </html> ------------------------------------------------------- search.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> <?php $pear_path = 'c:/xampp/php/PEAR'; set_include_path(get_include_path() . PATH_SEPARATOR . $pear_path); require_once('MDB2.php'); // DSNの設定 $dsn = array( 'phptype' => 'mysql', 'username' => 'root', 'password' => '', 'hostspec' => 'localhost', 'database' => 'test01', ); // オプションの設定 $options = array( 'portability' => MDB2_PORTABILITY_ALL, ); // 接続 $mdb2 =& MDB2::connect($dsn, $options); if (PEAR::isError($mdb2)) { exit('データベースへの接続に失敗しました'); } // 初期化 $sql = 'set names utf8'; $res =& $mdb2->query($sql); $mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC); // 都道府県 if(isset($_POST['pref'])){ $a = implode(' OR ',$_POST['pref']); } // 性別 if(isset($_POST['sex'])){ $b = implode(' OR ',$_POST['sex']); } // 検索 $sql = "select * from sample where pref in ('$a') AND sex in ('$b')"; $result = $mdb2->query($sql); if (PEAR::isError(result)) { exit('接続に失敗しました'); } $num_rows = $result->numRows(); if($num_rows == 0){ exit('検索結果はありませんでした'); }else{ print $result->numRows()."件のデータがあります"; } print("<table border=\"1\">\n"); print("<tr>"); print("<th>id</th><th>性別</th><th>都道府県</th>"); print("</tr>"); while($row = $result->fetchRow()){ print("<tr>\n"); print("<td>" . $row['id'] . "</td>"); print("<td>" . $row['pref']. "</td>"); print("<td>" . $row['sex']. "</td>"); print("</tr>\n"); } // 接続を切る $mdb2->disconnect(); ?> </body> </html> 何卒よろしくお願い致します。

  • PHP
  • 回答数4
  • ありがとう数3

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

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

No3です。済みません、なんか、凄い勘違いしてました。implode をexplodと思いこんでいた。 問題は、個々の比較用文字列をクォートで括ってないとか、SQL injection 対策されてない事ですね。 また、送信データがあるならSQLを発行、送信データがないならSQLを発行しないという切り分けも必要ですね。 if( isset($_POST['pref'] and is_array($_POST['pref']) and isset($_POST['sex']) and is_array($_POST['sex']) ){ $a = '`pref` in ("' .implode('","' , array_map('mysql_real_escape_string', $_POST['pref']) ). '")'; $b = '`sex` in ("' .implode('","' , array_map('mysql_real_escape_string', $_POST['sex']) ). '")'; $sql = "select 中略 where $a and $b"; // $sql 発行 }else{ // errorメッセージ }

gligli2
質問者

お礼

ありがとうございます。 >個々の比較用文字列をクォートで括ってないとか、SQL injection 対策されてない まだまだ必要なことが沢山あるみたいですね… 記述していただきましたように書き直してみたところ Parse error: syntax error, unexpected T_LOGICAL_AND, expecting ',' or ')' と出てしまいました… どこがいけないのかさっぱりです。 引き続きよろしくお願いします。

gligli2
質問者

補足

implode("','",$_POST['pref']); と設定することで解決しました!! わざわざありがとうございました!

その他の回答 (3)

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

<input type="checkbox" name="pref[]" このようにname属性に[]付きで入れた場合、$_POST['pref'] は配列になります。 var_dump($_POST) でどんなデータが渡されてるのか確認されることをお薦めします。 http://jp.php.net/manual/ja/faq.html.php#faq.html.arrays

参考URL:
http://jp.php.net/manual/ja/faq.html.php#faq.html.arrays
  • koke29
  • ベストアンサー率58% (114/196)
回答No.2

implode('OR',~); ↓ implode(',',~); では どうですか?

gligli2
質問者

お礼

回答ありがとうございます。 変更してみても、地域を複数選択した場合 「検索結果はありませんでした」と表示されてしまいます… input.phpからはきちんと複数のデータがきていますので、検索時にうまく受け渡しができていないということなのでしょうか?

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

県別にinputタグのnameを変えてやるしかないじゃないでしょうか。 $_POSTで調べるときに全てのnameを調べれば済むはずです。

gligli2
質問者

お礼

早速の回答ありがとうございます。 >県別にinputタグのnameを変えてやる といただきましたが、チェックボックスの数が増えれば増えるほど大変になってくる気がします…。 他に何かいい方法がありましたら引き続きお願いします。

関連するQ&A

  • 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
  • チェックボックス + フリーワード検索 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
  • チェックボックスの使用

    PostgreSQL+PHP初心者です。 DBから登録者一覧を抽出し、CheckBoxでチェックしたものだけ 修正をします。 DBから抽出し、テーブルを作成するところまでは出来ました。 その後CheckBoxのチェック済みだけを修正する場合はどうすればいいですか? ↓現在のソースです。 <html> <head> </head> <body> <FORM NAME="form1" action="insert.php" method="post"> <? $hostname="svibm01"; $con = pg_connect("host=$hostname dbname=testdb user=testuser password=testuser"); if(!$con) { print "データベースに接続できませんでした.\n"; exit; } $sql = "select * from name"; $rtn = pg_exec($con, $sql); if(!$rtn) { print "テーブルの検索に失敗しました.\n"; pg_close($con); exit; } $m = pg_numrows($rtn); $n = pg_numfields($rtn); print "<table border>\n"; print "<tr>\n"; print "<th> </th>"; $i = 0; while($i < $n) { print "<th>".pg_fieldname($rtn, $i)."</th>\n"; $i++; } print "</tr>\n"; $j = 0; while($j < $m) { $i = 0; print "<tr>\n"; print "<td align=center><input type=checkbox name=check".pg_result($rtn, $j, $i)." value=".pg_result($rtn, $j, $i)."></td>"; while($i < $n) { print "<td align=center>".pg_result($rtn, $j, $i)."</td>\n"; $i++; } print "</tr>\n"; $j++; } pg_close($con); print "</table>"; ?> <br> <br> <input type="submit" name="add" value="追加" /> <input type="submit" name="upd" value="変更" /> </FORM> </body> </html>

    • 締切済み
    • PHP
  • PHPでMySQLを使った検索のプログラム2

    まだ解決できないので、大変恐縮ですがご教授お願いします。 どうかよろしくお願いいたします。 数人にご教授いただいき、チェックボックスの選択には一つのkid(kodawari_keyの略)に対して2複数の値をもっているホテルを表示させるにはデータベースのtableを複数に分けて紐付けする必要があるとアドバイスをいただき、教えて頂いたとおりtableをホテル用とチェックボックス用とチェックボックスのid用とに分けて、SQL文で紐付けしたつもりだったのですが、チェックボックスをチェックしてから検索ボタンを押すと Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\koredake\xxxxx\xxxxxxx.php on line 97 のようなエラーが出てしまいます。 このことから紐付けのSQL文が間違っているのではと思うのですが、正解がわかりません。 どなたか教えていただけたらと思っております。 //MySQLの部分 教えていただいた部分で大変恐縮です。 //ホテルの基本情報 CREATE TABLE t_hotels(id int not null primary key,name varchar(100) not null,price_min int not null,price_max int not null,address varchar(100) not null); INSERT INTO t_hotels VALUES(1,'HOTEL A',5000,10000,'栃木県・・・'), (2,'HOTEL B',5000,12000,'栃木県・・・'), //こだわり情報 CREATE TABLE t_kodawari_key(id int not null primary key,name varchar(20)); INSERT INTO t_kodawari_key VALUES(1,'温泉'),(2,'ランチ'),(3,' ディナー'); //ホテルごとのこだわり CREATE TABLE t_hotel_kodawari(hid int not null,kid int not null,unique key(hid,kid)); INSERT INTO t_hotel_kodawari VALUES(1,1),(1,2),(1,3),(2,1),(3,2),(3,3),(4,3); //温泉かランチにこだわりがあるところ SELECT hid,t3.name,t3.price_min,t3.price_max,GROUP_CONCAT(t2.name) as kodawari,t3.address //温泉かランチかディナーのうち2つ以上にこだわりがあるところ SELECT hid,t3.name,t3.price_min,t3.price_max,GROUP_CONCAT(t2.name) as kodawari,t3.address //PHP部分 前半省略 <h1>ビジネスホテルの条件検索</h1> <form name="search_form" action="zenzen16.php" method="post" > <input type="hidden" name="cmd" value="search" /> <table> <tr> <th>物件種別</th> <td> <input type="checkbox" name="kid[]" value="1" <?php if( $_REQUEST["kid"] == "1" ){ print( 'checked' ); } ?>/> 温泉 <input type="checkbox" name="kid[]" value="2" <?php if( $_REQUEST["kid"] == "2" ){ print( 'checked' ); } ?>/> ランチ<br /> <input type="checkbox" name="kid[]" value="3" <?php if( $_REQUEST["kid"] == "3" ){ print( 'checked' ); } ?>/> ディナー <input type="checkbox" name="kid[]" value="4" <?php if( $_REQUEST["kid"] == "4" ){ 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 t_hotels where 1 = 1 "; $condition = array(); //この部分が特に自信が無いです。 if( !empty( $_POST["kid"] )){ $sql = $sql . " left outer join kid on t_hotels.hid = kid.hid"; } 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 ( address like :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["address"], ENT_QUOTES ) ); ?> </td> </tr> <?php } } ?> </table> </div>

    • ベストアンサー
    • MySQL
  • PHP 検索PG

    いつもお世話になっております。 PHP勉強中の初心者です。今回検索PGの作成を試みているのですがうまく検索されません。わかる人がいましたらお力を貸して下さい。 ------------------------------- 環境 レンタルサーバー:カゴヤ PHP 5.2.6 Apache/1.3.41 MySQLバージョン 5.0.33 -------------PHP----------------- <?php $debug = false; //DB接続 require_once("DB.php"); // データベースとの接続情報を記述 //$dsn ="mysql://ユーザー名:pw@localhost/データベース名"; //$db =DB::connect($dsn); if($debug) print_r($HTTP_POST_VARS); //クエリ生成 $query = "SELECT * FROM search "; //検索条件生成 //名前 if(!empty($name)) { $name = addslashes($name); $where = "name = '$name'"; } 住所 if(!empty($address)) { $address = addslashes($address); $where .= "address REGEXP '$address' && "; } //性別 if(!empty($gender)) { $gender = addslashes($gender); $where .= "gender = '$gender' && "; } //スキル if(!empty($skill)) { foreach($skill as $value) { $value = addslashes($value); $temp_where .= "skill REGEXP '$value' || "; } $temp_where = substr($temp_where, 0, -4); $where .= "(". $temp_where. ") && "; } if(!empty($where)) { $where = substr($where, 0, -4); $where = "WHERE " . $where; } $query .= $where; if($debug) { print "<BR><BR>"; print $query; } $result = mysql_query($query); $num_rows = mysql_num_rows($result); if($num_rows == 0) $message = "該当するデータはありませんでした"; else $message = $num_rows . "件ヒットしました"; ?> 検索結果<br> <?=$message?> <table border=1> <tr><td>名前</td><td>住所</td><td>性別</td><td>スキル</td></tr> <? while($row = mysql_fetch_assoc($result)): ?> <tr><td><?=$row[name]?></td><td><?=$row[address]?></td><td><?=$row[gender]?></td><td><?=$row[skill]?></td></tr> <? endwhile; ?> </table> <a href="input.html">再検索</a> ------------------------------- ----------html----------------- <html> <body bgcolor="#FFFFFF" text="#000000"> <form name="" method="POST" action="search.php"> 検索条件を指定してください<br> <table width="500" border="1" cellspacing="1" cellpadding="0"> <tr> <td>名前</td> <td> <input type="text" name="name" size="40" maxlength="255"> </td> </tr> <tr> <td>住所</td> <td> <input type="text" name="address" size="40" maxlength="255"> </td> </tr> <tr> <td>性別</td> <td> <input type="radio" name="gender" value="男性"> 男性  <br> <input type="radio" name="gender" value="女性"> 女性<br> <input type="radio" name="gender" value="その他"> その他</td> </tr> <tr> <td>スキル</td> <td> <input type="checkbox" name="skill[0]" value="ワープロ"> ワープロ<br> <input type="checkbox" name="skill[1]" value="表計算"> 表計算<br> <input type="checkbox" name="skill[2]" value="プログラミング"> プログラミング<br> <input type="checkbox" name="skill[3]" value="営業"> 営業<br> <input type="checkbox" name="skill[4]" value="音楽"> 音楽</td> </tr> </table> <input type="submit" name="submit" value="検索"> <input type="reset" value="条件クリア"> </form> </body> </html> --------------------------------------------------- 名前で検索した際に違う名前でも全件表示されてしまいます。 完全に一致したら表示させたいのですがやりかたがわかりません。 だれかわかるかたいらっしゃいましたらご教授よろしくお願い 致します。

    • 締切済み
    • PHP
  • PHPで返信メールにチェックボックスの値を表示したいのですが。。。

    PHPで返信メールにチェックボックスの値を表示したいのですが。。。 PHP初心者です。 request.phpという資料請求用のWEBページを作成しており、お問い合わせ項目内に 以下の様なチェックボックスを設けました。 <tr> <th>ご希望される商品</th> <td> <input type="checkbox" name="kibo[]" value="a-set" /> Aセット<br /> <input type="checkbox" name="kibo[]" value="b-set" /> Bセット<br /> <input type="checkbox" name="kibo[]" value="c-set" /> Cセット<br /> <input type="checkbox" name="kibo[]" value="d-set" /> Dセット </td> </tr> 入力後の内容確認画面では、 <tr> <th>ご希望される商品:</th> <td class="subheader_txt_l"><?php echo implode(' / ', $_POST['kibo']);?></td> </tr> として、選択した項目が表示されるところまではできましたが、送信ボタン後、確認メールが 送られてくる仕組になっているのですが、メール本文内では【ご希望される商品】欄が空っぽで 返ってきます。。。 ちなみにメール本文作成の処理では、 $body .= '【氏名】        '.$_POST['name1']."\n". '【メールアドレス】   '.$_POST['mail']."\n". '【住所】        '.$_POST['zyuusyo']."\n". '【ご希望される項目】  '.$_POST['kibo']."\n". '【お問い合わせ内容】  '.$_POST['comment']."\n\n". 値取得にあたり特別な関数が必要なのでしょうか。 ご教授頂けますと幸いです。よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのメールフォームでチェックボックス

    PHPでメールフォームを作っているのですが、チェックボックスの値がメールで送信されません。 ソースは・・・(チェックボックスの部分だけ) *フォームページ <form method="post" action="form1.php" name="infoform" id="infoform" onsubmit="return checkForm();"> <INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー1" />メニュー1&nbsp;<INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー2" />メニュー12&nbsp;<INPUT type="checkbox" name="k_menu[]" id="k_menu[]" value="メニュー3" />メニュー3 <input type="reset" name="no" id="no" value="リセット" /><input type="submit" name="send" id="send" value="確認" /> </form> *確認ページ <?php $p_k_menu = $_REQUEST['k_menu']; ?> <table> <th>興味のあるメニューは?</th> <td> <?php for($i=0; $i<sizeof($p_k_menu); $i++){ print "${p_k_menu[$i]}<br />"; } ?></td> </tr> </table> <form method="post" action="form2.php" name="h_form" id="h_form"> <input type="hidden" name="k_menu" id="k_menu" value="<?php print htmlspecialchars($k_menu); ?>" /> *メール送信ページ <?php $p_k_menu = $_POST['k_menu']; mb_language("Ja"); mb_internal_encoding("EUC-JP"); $mailbody = "興味のあるメニューは?:".$k_menu; $address = "メールアドレス"; $subject = "件名"; if(mb_send_mail($address,$subject,$mailbody,"from:メールアドレス")){ print "応募を受け付けました。"."<br />"."ありがとうございました。"; }else{ print "応募を確認できませんでした。"."<br />"."申し訳ございませんが、もう一度ご送信下さい。"."<br />"."<form><input type='button' name='bk' id='bk' value='戻る' onclick='history.go(-2)'></form>"; } ?> ソースは以上です。 何処が悪いんでしょうか??

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

    プログラム超初心者です。色々なサイトを検索し参考にしたのですがどうしても結果が得られないため投稿させていただきました。(似たようなものは多かったのですがわかりませんでした。) チェックボックスにて複数チェックされる可能性があるものを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
  • チェックボックスの全選択/解除について

    お尋ねします。 チェックボックスの全選択/解除について 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
  • チェックボックスやラジオボタンでの計算

    チェックボックスや、ラジオボタンで、選択した項目の金額を、最後にテキストフォームに表示させる…というやり方を探しております ソース途中からですが…↓ <tr> <Td Valign="middle" Width="80">部数選択</td> <Td Align="center" Valign="middle"><必須></td> <Td> <Input Type="radio" Name="pay" Value="100部 10000円">100部 ¥10,000円<Br> <Input Type="radio" Name="pay" Value="150部 20000円">150部 ¥20,000円<Br> <Input Type="radio" Name="pay" Value="200部 30000円">200部 ¥30,000円<Br> <Input Type="radio" Name="pay" Value="300部 40000円">300部 ¥40,000円<Br> <Input Type="radio" Name="pay" Value="300部以上 ※お見積もりいたします">300部以上 ※お見積もりいたします<Br> </td> </tr> <tr> <Td Valign="middle" Width="80">オプション選択<Br>(複数選択可)</td> <Td Align="center" Valign="middle"><必須></td> <Td> <Input Type="checkbox" Name="op[]" value="地図を入れる">地図を入れる<Br> <Input Type="checkbox" Name="op[]" value="先生のプロフィールを入れ">先生のプロフィールを入れる<Br> <Input Type="checkbox" Name="op[]" value="ごあいさつを入れる">ごあいさつを入れる<Br> <Input Type="checkbox" Name="op[]" value="生徒募集中を入れ">生徒募集中を入れる<Br> <Input Type="checkbox" Name="op[]" value="写真を入れる">写真を入れる<Br> <Input Type="checkbox" Name="op[]" value="ゲスト紹介">ゲスト紹介<Br> <Input Type="checkbox" Name="op[]" value="QRコード">QRコード<Br> </td> </tr> といった感じです。 value はすでに、他のところで使用しています 単純に計算だけを目的とさせているんですが、どうしたら良いでしょうか?

専門家に質問してみよう