教えて!gooグレードポイントがdポイントに!

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>
?>

これをどう加工していけばよいか、よろしくお願いします。

教えて!goo グレード

A 回答 (1件)

input要素(type="hidden")で実現するとしたら、こんな感じでしょうか



◆index.php
<?php
if (isset($_POST['colors'])) {
if (in_array('赤', $_POST['colors'])) { $aka = 1; }
if (in_array('青', $_POST['colors'])) { $ao = 1; }
if (in_array('黄', $_POST['colors'])) { $ki = 1; }
if (in_array('緑', $_POST['colors'])) { $midori = 1; }
}
?>
<form method="post" action="confirm.php">
<input type="checkbox" name="colors[]" value="赤"<?print isset($aka) ? ' checked="checked"' : ''; ?>>赤
<input type="checkbox" name="colors[]" value="青"<?print isset($ao) ? ' checked="checked"' : ''; ?>>青
<input type="checkbox" name="colors[]" value="黄"<?print isset($ki) ? ' checked="checked"' : ''; ?>>黄
<input type="checkbox" name="colors[]" value="緑"<?print isset($midori) ? ' checked="checked"' : ''; ?>>緑
<input type="submit" value="送る">
</form>

◆confirm.php
<?php
foreach ($_POST['colors'] as $color){
echo $color ." /";
}
?>
<form method="post" action="index.php">
<?php
foreach ($_POST['colors'] as $color){
print '<input type="hidden" name="colors[]" value="' . $color . '">';
}
?>
<input type="submit" value="戻る">
</form>

たぶん、これが「基本的な手法」になるかと。

他にも配列(colors[])のまま使わずに、implodeして引き渡し→explodeして利用とかserializeして引き渡し→unserializeして利用という手もありますし、POSTではなく「セッション変数に入れる」などの方法もあります。
    • good
    • 0
この回答へのお礼

shimixさん

質問の答え以外にも、ご親切な助言までいただきありがとうございました。
ず~~と調べ続けていましたが、答えにうまくたどり着かなかったために
本当に助かりました。

お礼日時:2012/09/17 08:36

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


人気Q&Aランキング