これは正直なところ、私がこれまでにコーディングした中で最も厄介で不適切な言語です。このプロジェクトがうまくいき、終わったら嬉しいです。
いずれにせよ、私はPHPを使用する必要があるので、ここに私の質問があります。
$form_dataという名前の配列があります。
$form_data = array
('trav_emer_med_insur',
'trav_emer_single',
'trav_emer_single_date_go',
'trav_emer_single_date_ba',
'trav_emer_annual',
'trav_emer_annual_date_go',
'trav_emer_extend',
'trav_emer_extend_date_go',
'trav_emer_extend_date_ef',
'trav_emer_extend_date_ba',
'allinc_insur',
'allinc_insur_opt1',
'allinc_single_date_go',
'allinc_single_date_ba',
'allinc_insur_opt2',
'allinc_annual_date_go',
'allinc_annual_date_ba',
'cancel_insur',
'allinc_annual_date_go',
'allinc_annual_date_ba',
'visitor_insur',
'country_select',
'visitor_supervisa',
'visitor_supervisa_date_go',
'visitor_supervisa_date_ba',
'visitor_student',
'visitor_student_date_go',
'visitor_student_date_ba',
'visitor_xpat',
'visitor_xpat_date_go',
'visitor_xpat_date_ba',
'txtApp1Name',
'txtApp2Name',
'txtApp1DOB',
'txtApp2DOB',
'txtApp1Add',
'txtApp1City',
'selprov',
'txtApp1Postal',
'txtApp1Phone',
'txtApp1Ext',
'txtApp1Email',
'conpref', );
これらは、HTMLフォームのname=""フィールドの名前です。var_dump($ _ POST)を使用して、すべての名前が存在し、デフォルト値が''であることを確認しました。
私がやりたいことは非常に単純で、参照として$form_dataを使用してこれを行います。
- 逆流したフォームに表示するデータを処理できる$out_dataという新しい配列を作成します。
$ out_dataの構造は単純です。たとえば、キーは他の配列$ out_data [txtApp1Name]の要素の名前になり、そのキーの値が値になります。
ここで必要なのは、最初にすべてのname = ""が設定されているかどうかを確認して、エラーを排除し、データを検証することです。次に、設定されているかどうかに関係なく、$out_data配列にプレースホルダーを作成します。
したがって、$ _ POST [$ form_data [1]](名前は'trav_emer_single')が設定されていない場合、$out_dataに次のようなエントリを作成します$out_data([trav_emer_single] => "NO DATA")
$ _POST [$ form_data [1]](名前は'trav_emer_single')が設定されている場合、次のように$out_dataに作成して入力します。$out_data([trav_emer_single] => "ユーザーが入力したものは何でも")
私はこのコードを試しました:
$out_data = array();
$count = count($form_data);
for( $i = 0; $i < $count; $i++ )
{
if(!isset($_POST[$form_data[$i]])) {
$out_data[$form_data[$i]] = "NO_DATA";
}
else {
$out_data[$form_data[$i]] = $_POST[$form_data[$i]];
}
}
現在、このコードは技術的に機能しており、配列を調べて値を割り当てていますが、正しく機能していません。
何も入力せずにフォームで送信を押しました。したがって、すべてのアイテムは、逆流した出力(ユーザーレビュー用)で「NO_DATA」と表示する必要がありますが、一部のアイテムのみがそれを表示しています。私が確認したすべてのアイテムにはname=""があり、配列と一致し、何も入力されていません。配列内のすべてのアイテムに「NO_DATA」が割り当てられていないのはなぜですか?
また、フォームに完全に入力すると、$out_dataが完全かつ正しく入力されます。!issetの問題は何ですか?$ _POST [$ form_data [$ i]] ==''を実行してみましたが、データがないすべてのインスタンスにno_dataが配置されますが、何かを書き込んだかどうかに関係なく、ページ上のすべてのアイテムに対して「未定義のインデックス」警告がスローされます。ボックスにあるかどうか。
本当に私はWTFが進行中であることを知りたいだけです。このプロジェクトの締め切りはすぐに終わり、PHPのすべてのステップで私は悲しみを覚えます。
私のコードを読んでわかる限り、コードは有効ですが、宣伝どおりに実行することを拒否します。
さらにコードサンプルが必要な場合は、お問い合わせください。
ここで本当に混乱しています。エラーなしでは何も機能しません。助けてください。
ありがとう-Sean