電子書籍の厳選無料作品が豊富!

お世話になります。
formのチェックボックスの情報を連想配列に格納したいのですが


□東京
□神奈川
□千葉
□埼玉
□茨城
[ 送信 ]


というフォームがあったとして
東京、神奈川、千葉の3つにチェックが入り送信されると
この3つの値を格納するにはどうすればよいのでしょうか?

単純に、下のようにしたくて・・・
array_pushを使うのかなと思うのですが上手くいきません。


Array
(
[0] => tokyo
[1] => kanagawa
[2] => chiba
)


ご教授お願いします。

A 回答 (3件)

こういう場合常套手段としてnameに[]をつけることが多いですね。


なおエスケープの問題がめんどうなのでヒアドキュメントを使用するといいですね

<?PHP
$list = array("tokyo"=>"東京","kanagawa"=>"神奈川","chiba"=>"千葉","saitama"=>"埼玉","ibaragi"=>"茨城");
$str="";
foreach($list as $key => $val){
$str.=<<<eof
<input type="checkbox" value="{$key}" name="data[]" id="check_{$key}"><label for="check_{$key}">{$val}</label><br>

eof;
}
$str=<<<eof
<form method="GET">
$str
<input type="submit" value="送信">
</form>

eof;
print $str;

if($_GET["data"]) print_r($_GET["data"]);
?>
    • good
    • 0
この回答へのお礼

nameが同じだとダメなんですね!勉強になりました~
わざわざありがとうございました。

お礼日時:2007/10/04 12:26

□東京


□神奈川
□千葉
□埼玉
□茨城
[ 送信 ]

この部分のソースを書いてもらえるでしょうか?
チェックボックスのnameが同じになっている気がします。

この回答への補足

nameが同じだとダメなのですか??初心者ですいません。
ソースは


$list = array("tokyo"=>"東京","kanagawa"=>"神奈川","chiba"=>"千葉","saitama"=>"埼玉","ibaragi"=>"茨城");

echo "<form method=GET>";

foreach($list as $key => $val){
 echo "<input type=checkbox value={$key} name=data>{$val}<br>";
}

echo "<input type=submit value=\"送信\"></form>";

$data[] = $_GET[data];


です。

補足日時:2007/10/04 11:54
    • good
    • 0

formからpostやgetでsubmitされた値は自動的に連想配列に格納されます。


print_r($_POST)で表示できるはずです。

Array
(
[0] => tokyo
[1] => kanagawa
[2] => chiba
)
これは連想配列ではなく、普通の配列ではないでしょうか?

この回答への補足

配列でした、失礼しました。
3つ選択してsubmitしても結果は

Array
(
[0] => chiba
)


となるのですが、なぜでしょうか??

補足日時:2007/10/04 11:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!