- ベストアンサー
PHPによるアンケートの項目追加
- PHPを使用してアンケートに項目を追加する方法を知りたいです。
- 既存のアンケートフォームに項目を追加したいのですが、エラーが発生しています。
- 足りない処理があるのか、$serviceに値が正しく渡されていないようです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Warning: Invalid argument supplied for foreach() in ~ の「~」にエラーの出たファイル名と行数が出ているはずなので 本当にNo.2の方の返答の位置であるのか確認してみてください。
その他の回答 (3)
- duron
- ベストアンサー率77% (73/94)
$serviceにポストされた値を設定しているとしても趣味が一個もチェックがされていない場合には $serviceは配列ではなくなりますね(checkboxはチェックされていない項目はPOSTされないので) foreachを使う場合にはその前に配列であるかのチェックを行った方がいいです。
- tomaju
- ベストアンサー率76% (84/110)
question2.php が確認ページでしょうか。 フォームから送信された値が $service に入ってないんじゃないでしょうか。 $service = $_POST['service']; のような記述はありますか? http://jp.php.net/manual/ja/language.variables.external.php
お礼
他の記述に習って以下のように記入しています。 if (isset($_POST['service'])) { $service = $_POST['service']; if (is_array($service)) { foreach ($service as $value) { if (ctype_digit($value)) { // 1より小さい、または、5より大きいか? if ($value < 1 || $value > 5) { $error = 1; // 入力エラー } } else { // ctype_digit()関数で変数が数字ではなかった場合 $error = 1; // 入力エラー } } } else { // is_array()関数で変数が配列ではなかった場合 $error = 1; // 入力エラー } } else { // isset()で変数が未定義だった場合 $error = 1; // 入力エラー } $_POST[]での指定が他のファイルでも見つからなかったのでこれだと思うのですが・・・ 本当に基礎知識が足りないままの質問になってしまい申し訳ございません。
エラーメッセージよくよめ。 Warning: Invalid "argument" supplied for foreach() in " でくくったのはなにがかいてある
お礼
Warning: Invalid "argument" supplied for foreach() in foreach文に無効な値が渡されました 配列になっていないということでしょうか? $service = array(1 => 'あああ', 2 => 'あああ', 3 => 'あああ', 4 => 'あああ', 5 => 'あああ'); これは$serviceにarrayの値がうまく渡されていない そもそもarrayに値を入れることに失敗しているのでしょうか? foreachで記述の仕方が違うということなのでしょうか? 同じ記述の項目は動いているのが何故なのでしょうか? せっかく頂いたヒントにまた質問で答えるような形になってしまい申し訳ございません。
お礼
解決しました!! 原因は</dl>が一つ多く減らしたらちゃんと動作しました!! PHPにばかり目がいっていて騒いでしまってお恥ずかしい でもなんで<dl>で影響が出たのでしょうか?