プロが教えるわが家の防犯対策術!

こんばんは。いつもお世話になっております。
初歩的な質問かと思いますが、書籍を参考に、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;
?>

A 回答 (1件)

<INPUT type="hidden" name="open[]" value="<?=$_POST["open"]?>">


が原因です。
PHPは配列をスカラー変数(普通の変数)として扱うとArray(配列の意)と出します。
配列になれないものに配列を入れると当然エラーになりますがPHPはそのあたりを杓子定規にしないのでArrayですよと言って動いてくれます。
するならば
<INPUT type="hidden" name="open[]" value="<?=$_POST["open"]?>">
の部分を
<?php
$copen = count ($_POST["open"]);
for ($i = 0; $i < $copen; $i++) {
?>
<INPUT type="hidden" name="open[]" value="<?php echo $_POST["open"][$i];?>">
<?php
}
?>
にしてください。
    • good
    • 0
この回答へのお礼

izayoimizuki様

はじめまして。早速のご回答を有難う御座います。
おかげさまで描いている結果を返す事ができました。
投函後も色々と調べて(検索して)はいましたが、期待しているものを得る事が出来ずにおりました。このあたりも一筋縄には行かないのですね。また1つ学ぶ事ができました。
購入した書籍にも載っていないご説明を有難う御座いました。

お礼日時:2006/12/25 09:02

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