hiddenでの配列でチェックボックスを設けたが表示できずに悩んでいます

このQ&Aのポイント
  • 初歩的な質問かと思いますが、hiddenでのデータの受渡しの応用にと、配列でのチェックボックスを設けたのですが、上手く表示できずに悩んでおります。
  • 書籍を片手にない知識を振り絞っているのですが、思うように結果を得る事が出来ません。お忙しい中恐縮ですが、アドバイスなど頂戴できたら幸いです。
  • いつもすまらない質問ですみません。
回答を見る
  • ベストアンサー

配列を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
  • 回答数1
  • ありがとう数3

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

  • ベストアンサー
回答No.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 } ?> にしてください。

sadacha
質問者

お礼

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

関連するQ&A

  • hidden属性だけのフォーム

    hidden属性だけのフォームというのはちゃんと動作しますか? 自分のソースでは動作せず、送り先のPHPスクリプトでvar_dump()すると、$_POST['']の中身が NULL になってました。送信やリセットボタンを作らずに送信できるとすれば、どんな ソースになりますか? <?php echo '<form name="form1" method="POST" action="../../disp_access.php">'; echo '<input type="hidden" name="from" value="1">'; // どのページから飛んできたかを示す echo '<input type="hidden" name="browser" value="'.$referer.'">'; echo '<input type="hidden" name="ip" value="'.$ip.'">'; echo '</form>'; ?>

    • ベストアンサー
    • HTML
  • inputタグのhiddenの使い分けについて

    <form action="add.php" method="post"> <input type="hidden" name="check_name" value="{$name}"> このhiddenのinputは、ユーザーには情報を見せずに、postでいろんな情報をいっぱい渡したい場合に使われるものなのでしょうか。 また、value="{$name}"のように{}があるのですが、これは変数コンピュータに認識してもらうための決まりごとですよね。しかし、それが無い場合もあったりします。いれるべき場合とそうでない場合の区別はありますか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHP チェックボックスのhidden値受け渡し

    こんばんは。いつもお世話になっております。 初歩的な質問かと思いますが、hiddenでのデータの受渡で、配列でのチェックボックスが上手くわたせずに悩んでおります。 if($_POST['send']){ **メール送信の処理します** $from_addres="xxxxxx@xxxxxxx.jp"; $to_addres=$mailadd; $make_subject="メール送信"; $message="-入力内容- アドレス:{$mailadd} なぜ:{$why}"; mailsend($to_addres,$from_addres,$make_subject,$message);//はぶいてますがfunction()書いています }elseif($_POST['submit']){ **内容確認** foreach ($_POST['why'] as $key => $why){ if($why==0){$why0="0です";} if($why==1){$why1="1です";} if($why==2){$why2="2です";} } **入力内容表示** <form method="post" action="<?=$_SERVER['../SCRIPT_NAME']?>"> <input type="hidden" name="why[]" value="<?php echo $_POST['why'];?>"> <input type="submit" name="return" value="修正"> </form> <form method="post" action="<?=$_SERVER['../SCRIPT_NAME']?>"> <input type="hidden" name="why[]" value="<?php echo $_POST['why'];?>"> <input type="submit" name="send" value="送信"> </form> }else{ <form method="post" action="<?=$_SERVER['../SCRIPT_NAME']?>"> <input name="why[]" type="checkbox" value="0"<?if($why==0){ print " checked";}?>>0 <input name="why[]" type="checkbox" value="1"<?if($why==1){ print " checked";}?>>1 <input name="why[]" type="checkbox" value="2"<?if($why==2){ print " checked";}?>>2 <input type="submit" name="submit" value="確認画面へ"> </form> } 同一ページにてif分で分岐して処理しています。 確認画面での値受け取りはできています。 その後の、送信・修正へのhiddenへの値受け渡しが上手くいきません。 結果、どう動作して欲しいかといいますと、 ・returnで戻った時に、値を保持してチェックしてあったチェックボックスに"checked"をつけたい ・sendへの値の受け渡し ・メールをとばすので、その本文への値の入れ方 foreach ($_POST['why'] as $key => $why){ if($why==0){$why0="0です";} if($why==1){$why1="1です";} if($why==2){$why2="2です";} } をメールをとばすところでも記述して$why0 $why1 $why2をprintすれば良いのでしょうか? ググってみたり、色々検索してみたのですが、調べ方がよくないので見つからず、質問をさせていただきました。 よろしくお願いします。

    • 締切済み
    • PHP
  • ファイル間のデータの受け渡しについて hidden? session?

    1.php (フォームを表示) 2.php (入力内容の確認ページ) 3.php (最後のページ、送られた値を使用し、メール送信やデータベースに書き込むなどの処理をしたい。) とhiddenを使い、3つのファイルを作成しました。 ファイル"1.php" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title></title> </head> <body> <form action="2.php" method="post"> <input type="text" name="data1" value="データその1"> <input type="hidden" name="data2" value="隠しデータ"> <input type="submit" name="" value="送信"> </form> </body> </html> ファイル"2.php" <?php echo "<h1>確認ページ</h1>"; echo $_POST[data1]."<BR>"; echo $_POST[data2]; print<<<_HOGE_ <form action="3.php" method="post"> <input type="hidden" name="data1" value="$_POST[data1]"> <input type="hidden" name="data2" value="$_POST[data2]"> <input type="submit" name="" value="送信"> </form> _HOGE_; ?> ファイル"3.php" <?php echo $_POST[data1]."<BR>"; echo $_POST[data2]; ?> 2.phpの(入力内容の確認ページ)を見ているときに、他の人が2.phpにアクセスして入力内容を盗み見る事は出来るのでしょうか? (2.phpに直接アクセス出来ないように、リダイレクト処理はするつもりですが。) 2.phpから3.phpに値を渡す場合、このようなhiddenの使い方は間違っていますか? セッションを使った方が良いのでしょうか?

    • ベストアンサー
    • PHP
  • for文でpostの値を受け取る方法

    以下のようなコードで、postで投げられた値を、for文で、添え字を組み立てて受け取って表示したいのですが、添え字の生成が間違っているのか、うまくいきません。 何を修正すればよいか教えてください。 <form action="" method="post"> <input type="hidden" value="A" name="name_0"> <input type="hidden" value="B" name="name_1"> <input type="hidden" value="C" name="name_2"> <input type="hidden" value="D" name="name_3"> <input type="submit"> </form> <?php for($i =0; $i < 4; $i++){ if (!empty($_POST['name_$i'])) { print $_POST['name_$i']; } } ?>

    • ベストアンサー
    • PHP
  • hiddenで送ったデータの取り出し方

    PerlもHTMLも初心者です。hiddenの使い方が分からないのですが、 ■sub test1 <form NAME="minshu" ACTION="test.cgi" METHOD="post"> <input TYPE="submit" > <INPUT TYPE="hidden" NAME="aso" VALUE="write"> .. ■test.cgi $hatoyama=$Form{'aso'}; と、hiddenで送った変数をtest.cgiで受け取る時、$Form{}で受け取ると決まっているのですか?$minshu{aso}とかでは受け取れないのですか? この場合、hiddenのnameはどういう役目をしているのですか? hiddenのname="minshu" とかすれば$minshu{aso}で受け取れるかと思っていたのですが、うまくいかないようなので..

    • ベストアンサー
    • Perl
  • 同一ページで複数のformを扱う場合

    同一のページ内にhiddenでIDを振った削除ボタンを用意しクリックされたIDを取得するにはどのようにすれば良いでしょうか? <form action="/test.php" name="1" method="post"> <input type="hidden" name="id" value="1" /> <input type="submit" name="delete" value="削除"> </form> -- 省略 <form action="/test.php" name="10" method="post"> <input type="hidden" name="id" value="10" /> <input type="submit" name="delete" value="削除"> </form> formにnameを振ってみても最後のIDがPOSTされてしまいます。

    • 締切済み
    • PHP
  • <input type="hidden" >で配列(複数の要素)を渡したいとき?

    こんにちわ, 今HTML+PHPで $hoge[]にいくつかの要素が入っているとき, それをあるfoo.phpというページに渡したいとき, echo '<form action="foo.php" method="POST">'; echo '<input type="hidden" name="$hoge[]" >'; echo '</form>'; としたのですが,うまくいきません。 どうしたらよろしいでしょうか。

    • ベストアンサー
    • PHP
  • checkboxの初期値設定(postの時)

    php初心者です。 以下はどのようにやればいいのでしょうか。 色々調べたのですが、考え方がわからず困っています。 (やりたい事) (1)入力画面(index.php)にチェックボックス (赤、青、黄、緑)つくる (2)確認画面(confirm.php)にpostで飛ばす (3)修正があれば、index.phpに戻るが、 チェックしたものが保持された状態で 戻る。 このような事をしたいのですが、以下で手が止まって しまいました。 ◆index.php <?php <form method="post" action="confirm.php"> <input type="checkbox" name="colors[]" value="赤">赤 <input type="checkbox" name="colors[]" value="青">青 <input type="checkbox" name="colors[]" value="黄">黄 <input type="checkbox" name="colors[]" value="緑">緑 <input type="submit" value="送る"> </form> ?> ◆confirm.php <?php  <form method="post" action="index.php">  foreach ($_POST['colors'] as $color){  echo $color ." /"; } <input type="submit" value="戻る"> </form> ?> これをどう加工していけばよいか、よろしくお願いします。

    • ベストアンサー
    • PHP
  • 別formのhidden項目を自form値として送信したい

    同ページ内に <form name="form1" action="aa"> <input type="text" value="123"> <!-- hidden項目は無い場合もある --> <input type="hidden" name="form1_1" value="xxx"> <input type="hidden" name="form1_2" value="yyy"> <input type="submit"> </form> <form name="form2" action="bb"> <input type="text" value="456"> <input type="hidden" name="form2_1" value="www"> <input type="hidden" name="form2_2" value="zzz"> <input type="submit"> </form> といった感じのformタグをおいています。 そこで、form2を送信する時に、form1のhiddenのみform2のformValueとして送信したいのですが、どんな風に飛ばしたらよいのでしょうか? というより、from2を飛ばすときに、他のformのhidden項目があったら自formの値として送信することってできるんでしょうか? javascriptでできるんでしょうか? 素人質問ですいませんが、何か足がかりになるようなものをご教授いただければと思います。