• ベストアンサー

配列の受け取り方について

value="<?php echo addslashes(implode((array) $_POST['jyusyo'],",")); ?>"> タイトルのように受け取ったら "豊岡市,養父市" のようになってしまいます。 "豊岡市","養父市" のようにしたいんですが、どう変更したら良いですか??

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4851/10265)
回答No.3

value="<?php ...?>"> ということは、selectタグの複数選択で受け取った値を、<input type="hidden" で、次の画面に引き継ぐと言うことですかね?もしそうであれば、かなり違います。 <input type="hidden" name="jyusyo[]" value="豊岡市"> <input type="hidden" name="jyusyo[]" value="養父市"> のようなタグを出力する必要があります。こうすると、次も$_POST['jyusyo']に配列でデータが入ります。 <?php foreach($_POST['jyusyo'] as $jyusyo){?> <input type="hidden" name="jyusyo[]" value="<?php echo htmlspecialchars($jyusyo,ENT_QUOTES,'utf-8');?>"> <?php } ?> [重要] 変数や式の値をhtmlの一部として出力する場合は、必ずhtmlspecialchars関数を使います。addslashesを使うのは間違いです。何か変な参考書を読んだのでしょうが、その本は捨てましょう。'utf-8'の部分は、出力するhtmlページの文字コード指定(content-typeのcharset)に合わせてください。

noname#142312
質問者

お礼

貴方の回答で無事できました!!大変助かりました!!ありがとう御座います!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • t_ohta
  • ベストアンサー率38% (5087/13301)
回答No.1

<?php foreach ($_POST['jyusyo'] as $key =>$value) { $_POST['jyusyo'][$key] = '"'.$value.'"'; } echo addslashes(implode((array) $_POST['jyusyo'],",")); ?>

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 受け取り値を"豊岡市","養父市"

    <?php echo addslashes(implode((array) $_POST['jyusyo'], ",")); ?>" > 現在hiddenでこのように値を受け取っておりソースを確認すると "豊岡市.養父市"になってしまいます。 "豊岡市","養父市"にするにはどうしたら良いですか?? <?php echo addslashes(implode((array) $_POST['jyusyo'], "","")); ?>" > こうやるとエラーになります。

    • ベストアンサー
    • PHP
  • 複数選択の方法が分からないのです。

    お世話になります。 現在<input type="checkbox" name="jyusyo" value="豊岡市">豊岡市<br> <input type="checkbox" name="jyusyo" value="養父市">養父市<br> <input type="checkbox" name="jyusyo" value="朝来市">朝来市<br> <input type="checkbox" name="jyusyo" value="神戸市">神戸市<br> <input type="checkbox" name="jyusyo" value="姫路市">姫路市<br> のようにしている為、最期にチェックしたワードでしか検索できません。 これらを複数選択に対応させる為 <input type="checkbox" name="jyusyo[]" value="豊岡市">豊岡市<br> <input type="checkbox" name="jyusyo[]" value="養父市">養父市<br> <input type="checkbox" name="jyusyo[]" value="朝来市">朝来市<br> <input type="checkbox" name="jyusyo[]" value="神戸市">神戸市<br> <input type="checkbox" name="jyusyo[]" value="姫路市">姫路市<br> としてみたものの、この先が分かりません。 受け取る側のphpは現在このような状態であります。 $jyusyo=$_POST["jyusyo"]; $jyusyonum=array("豊岡市","養父市","朝来市","神戸市","姫路市"); $query = "select name,jyusyo,kakaku,gazou,link from ocdda where"; if($jyusyo != "") { $query = $query . " jyusyo like '%$jyusyo%' "; } $result = mysql_query($query); $num_rows=mysql_num_rows($result); if($num_rows== 0){ $message="該当データ無し"; } else $message=$num_rows ."件あります"; echo $message; while($row = mysql_fetch_array($result)){ データベースのカラムもjyusyoになっていますが変えるべきですか? どうか改変ポイント等の御教授お願い申し上げます。

    • ベストアンサー
    • PHP
  • 条件のAND検索??

    条件のAND検索?? 現在 □豊岡市 □神戸市 □篠山町 みたいなチェックボックスの検索システムが有ります。 これを 地域(カラム=jyusyo) □豊岡市 □神戸市 □篠山町 予算(カラム=kakaku) [ 円]~[ 円](option属性) と新たに付け加えたいです。 現在の検索システムのソースは $jyusyo=$_POST["jyusyo"]; $jyusyonum=array("豊岡市","養父市","朝来市","神戸市","姫路市"); $query = "select name,jyusyo,kakaku,gazou,link from kensaku where"; if($jyusyo != "") { foreach ($jyusyo as $value) { $like .= "'" . $value . "',"; } //最後の , を削除 $like = substr($like, 0, -1); $query = $query . " jyusyo in ($like) "; } をどのように変更したら良いですか?? 試行錯誤しましたが、それらをここで説明したら長くなるので書きませんが丸投げしてるわけでは御座いません。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 配列をhiddenで

    こんばんは。いつもお世話になっております。 初歩的な質問かと思いますが、書籍を参考に、hiddenでのデータの受渡しの応用にと、配列でのチェックボックスを設けたのですが、上手く表示できずに悩んでおります。 書籍を片手にない知識を振り絞っているのですが、思うように結果を得る事が出来ません。お忙しい中恐縮ですが、アドバイスなど頂戴できたら幸いです。いつもすまらない質問ですみません。 confirm.php <?php if($_POST["open"]==""){ ?> <FORM name="form1" method="post" action="confirm.php"> <input type="checkbox" name="open[]" value="1" <?=$ca01?>>1 <input type="checkbox" name="open[]" value="2" <?=$ca02?>>2 <INPUT type="submit" value="送信"> <INPUT type="hidden" name="user_id" value="0001"> <?php exit; } else{ ?> <FORM name="form1" method="post" action="view.php"> <?php if(isset($_POST["open"])){ $open_box = implode(',',$_POST["open"]); if(stristr($open_box, "1")){$ca01 = "checked";} if(stristr($open_box, "2")){$ca02 = "checked";} } $open_box = implode(',',$_POST["open"]); echo $open_box; ?> <INPUT type="submit" value="決定"> <INPUT type="hidden" name="open[]" value="<?=$_POST["open"]?>"> <INPUT type="hidden" name="user_id" value="<?=$_POST["user_id"]?>"> </FORM> <?php } ?> view.php <?php $open_box = implode(',',$_POST["open"]); echo $open_box; ?>

    • ベストアンサー
    • PHP
  • 完全一致ではなく”含む”

    if($jyusyo != "") { foreach ($jyusyo as $value) { $like .= "'" . $value . "',"; } //最後の , を削除 $like = substr($like, 0, -1); $query = $query . " jyusyo in ($like) "; } 現在教えていただいたコードを使用しています。このコードだと”豊岡市”に完全一致した情報しかDBから取り出されません。これを”豊岡市中央町”等の豊岡市を含むものも検索結果に反映させるにはどうしたらよいですか??

    • ベストアンサー
    • PHP
  • 配列のデータを受け取る、のバグ

    PHPスーパーサンプル第2版の2-3/rcvarray.phpからの抜粋です。 <html> <head> <title>配列のデータを受け取る</title> </head> <body> <?php <?php $array = array("menu"=>"カレー", "price"=>"380", "date"=>"2005/01/01"); echo "配列の内容(エンコードした場合)"; print_r(unserialize(base64_decode($_POST["ar_enc"]))); echo "<p>配列の内容(そのまま渡すと失敗)"; print_r($_POST["ar"]); ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]?>"> <input type="submit" value="送信" name="sub1"> <input type="hidden" name="ar" value="<?php echo $array ?>"> <input type="hidden" name="ar_enc" value="<?php echo base64_encode(serialize($array)) ?>"> </form> </body> </html> を実行すると、 配列の内容(エンコードした場合): Notice: Undefined index: ar_enc in /UNIONFS/opt/lampp/htdocs/samples/chapter2/2-3/rcvarray.php on line 14 配列の内容(そのまま渡すと失敗): Notice: Undefined index: ar in /UNIONFS/opt/lampp/htdocs/samples/chapter2/2-3/rcvarray.php on line 16 というエラーが出るんですが、どうやって直せばいいのですか? 正しくは、上には配列の内容が表示され、下にはarrayとだけ表示されるようです。 $arrayの直後に     $ar_enc = "";     $ar = ""; と挿入してみましたがダメでした。 @でエラーを抑制するのはなしでお願いします。

    • ベストアンサー
    • PHP
  • 配列型の宣言?

    こんにちは。 あるサイトで見たphpのサンプルなのですが、 postされた全ての値を配列に格納するもので、以下のような記述がありました。 foreach((array)$_POST as $key => $value){  $array[$key] = $value; } ポストされた全ての値を、配列$arrayに連想配列として格納しているのはわかるのですが、 foreachの、(array)というのはどういう働きをするものなのでしょうか。 これは、$_POSTが配列であるという宣言でしょうか。 それと、postされた値がない場合、$_POSTを配列だと宣言しておくことで、foreachのエラーを回避するような役割もあるのでしょうか。 恥ずかしながら、(array)のような記述をphpではあまり見ないような気がするのですが、なんというキーワード(?)で勉強すれば理解が深められるかもご教授頂けますと助かります。 宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • mysqlの結果セットを配列に

    while($row=mysql_fetch_array($res)){ echo "<form action=kousin.php method=post>"; echo "<TD bgcolor=#FFFFFF><input type='text' name=zaiko[] value=". $row["注文"] . "></td>"; echo "<input type=hidden name=store1 value=". $row["注文"] .">"; --------------------------------------------------- $zaiko[]=$_POST["zaiko[]"]; 上記のようなイメージでフォームから送った結果セットを配列として格納したいのですが、どのようにしたら良いのでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームを使った配列変数の受け渡し

    PHP初心者です、よろしくお願いします。 フォームからPHPで配列変数を受け渡すことを考えています。 一次元配列はうまく渡せましたので、これを二次元にしましたところ、 うまく渡せません。基本的なPHPの文法がわかってないので、つまづい ています。多分、配列変数の記述方法がおかしいのだと思うのですが・・。 ご教授よろしくお願いします。 <html> <body> <form method = "POST" action ="test2.php" > <?php //データ渡し側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10'>\n"); echo ("<br>\n"); } echo ("</tr>\n"); } ?> <input type="submit" name ="sbmit" value="data_input" > </form> </body> </html> <?php //データ受け側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j < 2;$j ++ ){ $tmp_data[$i][$j] = $_POST["data"][$i][$j]; echo ("$tmp_data[$i][$j] <br>\n"); } } ?> <html> <body> <form method = "POST" action ="test2.php" > <?php for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10' value='$tmp_data[$i][$j]'>\n"); echo ("<br>\n"); } } ?> </table> <input type="submit" name ="sbmit" value="in" > </form> </body> </html> 実行結果は、 Array[0] Array[1] Array[0] Array[1] と表示されて、実際の入力した値が反映されません。

    • ベストアンサー
    • PHP
  • 検索結果の画像が表示されない

    <?php $con=mysql_connect(""); if(!$con){ echo ("MYSQLに接続失敗"); exit(); } else { echo ("#1=$con"); } mysql_query("SET NAMES eucjpms") or die("can not SET NAMES eucjpms"); $db=mysql_select_db(""); if(!$db) { echo ("DB選択失敗"); } else{ echo("DB選択OK!"); } $jyusyo=$_POST["jyusyo"]; $jyusyonum=array("豊岡市","養父市","朝来市","神戸市","姫路市"); $query = "select name,jyusyo,kakaku,gazou from ocdda where"; if($jyusyo != "") { $query = $query . " jyusyo like '%$jyusyo%' "; } $result = mysql_query($query); $num_rows=mysql_num_rows($result); if($num_rows== 0){ $message="該当データ無し"; } else $message=$num_rows ."件あります"; echo $message; while($row = mysql_fetch_array($result)){ // Loop through the array of score data, formatting it as HTML echo '<table>'; $i = 0; { // Display the score data echo '<tr><td class="scoreinfo">'; echo '<span class="kakaku">' . $row['kakaku'] . '</span><br />'; echo '<strong>会社名:</strong> ' . $row['name'] . '<br />'; echo '<strong>住所:</strong> ' . $row['jyusyo'] . '</td>'; if (is_file(GW_UPLOADPATH . $row['gazou']) && filesize(GW_UPLOADPATH . $row['gazou']) > 0) { echo '<td><img src="' . GW_UPLOADPATH . $row['gazou'] . '" alt="images" /></td></tr>'; } else { echo '<td><img src="' . GW_UPLOADPATH . 'ie.jpg' . '" alt="images" /></td></tr>'; } $i++; } echo '</table>'; mysqli_close($dbc); ?> <?php } ?> こちらでは表示されないのですが、 <?php require_once('appvars.php'); require_once('connectvars.php'); // Connect to the database $dbc = mysqli_connect(""); // Retrieve the score data from MySQL $query = "SELECT * FROM "; $data = mysqli_query($dbc, $query); // Loop through the array of score data, formatting it as HTML echo '<table>'; $i = 0; while ($row = mysqli_fetch_array($data)) { // Display the score data echo '<tr><td class="scoreinfo">'; echo '<span class="kakaku">' . $row['kakaku'] . '</span><br />'; echo '<strong>会社名:</strong> ' . $row['name'] . '<br />'; echo '<strong>住所:</strong> ' . $row['jyusyo'] . '</td>'; if (is_file(GW_UPLOADPATH . $row['gazou']) && filesize(GW_UPLOADPATH . $row['gazou']) > 0) { echo '<td><img src="' . GW_UPLOADPATH . $row['gazou'] . '" alt="image" /></td></tr>'; } else { echo '<td><img src="' . GW_UPLOADPATH . 'unverified.gif' . '" alt="Unverified kakaku" /></td></tr>'; } $i++; } echo '</table>'; mysqli_close($dbc); ?> こちらでは画像が表示されます。同じ階層でほぼ同じソースなのに何故前者のコードは画像が表示されないのでしょうか?

    • 締切済み
    • PHP