• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPによるアンケートの項目追加)

PHPによるアンケートの項目追加

このQ&Aのポイント
  • PHPを使用してアンケートに項目を追加する方法を知りたいです。
  • 既存のアンケートフォームに項目を追加したいのですが、エラーが発生しています。
  • 足りない処理があるのか、$serviceに値が正しく渡されていないようです。

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

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.4

Warning: Invalid argument supplied for foreach() in ~ の「~」にエラーの出たファイル名と行数が出ているはずなので 本当にNo.2の方の返答の位置であるのか確認してみてください。

ideideon-1
質問者

お礼

解決しました!! 原因は</dl>が一つ多く減らしたらちゃんと動作しました!! PHPにばかり目がいっていて騒いでしまってお恥ずかしい でもなんで<dl>で影響が出たのでしょうか?

その他の回答 (3)

  • duron
  • ベストアンサー率77% (73/94)
回答No.3

$serviceにポストされた値を設定しているとしても趣味が一個もチェックがされていない場合には $serviceは配列ではなくなりますね(checkboxはチェックされていない項目はPOSTされないので) foreachを使う場合にはその前に配列であるかのチェックを行った方がいいです。

  • tomaju
  • ベストアンサー率76% (84/110)
回答No.2

question2.php が確認ページでしょうか。 フォームから送信された値が $service に入ってないんじゃないでしょうか。 $service = $_POST['service']; のような記述はありますか? http://jp.php.net/manual/ja/language.variables.external.php

ideideon-1
質問者

お礼

他の記述に習って以下のように記入しています。 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[]での指定が他のファイルでも見つからなかったのでこれだと思うのですが・・・ 本当に基礎知識が足りないままの質問になってしまい申し訳ございません。

noname#147388
noname#147388
回答No.1

エラーメッセージよくよめ。 Warning: Invalid "argument" supplied for foreach() in " でくくったのはなにがかいてある

ideideon-1
質問者

お礼

Warning: Invalid "argument" supplied for foreach() in foreach文に無効な値が渡されました 配列になっていないということでしょうか? $service = array(1 => 'あああ', 2 => 'あああ', 3 => 'あああ', 4 => 'あああ', 5 => 'あああ'); これは$serviceにarrayの値がうまく渡されていない そもそもarrayに値を入れることに失敗しているのでしょうか? foreachで記述の仕方が違うということなのでしょうか? 同じ記述の項目は動いているのが何故なのでしょうか? せっかく頂いたヒントにまた質問で答えるような形になってしまい申し訳ございません。

関連するQ&A