ホームページ  >  に質問  >  本文

PHP の SQL 値を介して、大規模な HTML フォームを動的に設定する

この質問は、コードの書き方よりも、「スケール」の観点から実装したいプロセス/ロジックに関係しています。

WordPress には、HTML として読み込まれるフォームがいくつかあり、ユーザーがカスタム投稿 (実際には、CMS に慣れていない人のための新しいデータベース エントリ) を作成すると、新しい「イベント」が記録されます。これはデータベースエントリ/ポストの名前と値を設定するために update_post_meta() を使用しているため、すべてを手動でマッピングしたくありません。そのため、フォームが送信されるときに PHP ループ foreach を使用します。 ($_POST as $ name => $value) { このイベントのすべてのデータベース テーブルを設定します。

これは正常に機能しますが、ユーザーがフォームを保存し、後で編集するために戻ってきた場合、値が存在する場合は次のようにエコー バックするようにします。

リーリー

繰り返しますが、このアプローチはうまく機能しますが、このページには約 500 個のフィールドがあるため、各フィールドに一意の変数 (この場合は $reported_by) を手動で設定すると、かなりの費用がかかります。基本的にコードベースが 50% 近く増加するため、メンテナンスが困難で非効率的になります。

この問題を解決する方法について何かアイデアはありますか?当然のことながら、php を介してフォームを構築し、それを HTML でエコーすることはできますが、これも非常に手動のプロセスのように感じられます。 PHPはサーバーサイドなので、AJAXを使用しない限り、クライアントサイドでタグ/入力の名前の値を簡単に取得することはできませんが、それもかなり手動になるような気がします。

したがって、変数名を手動で設定することなく、このプロセスを 500 フィールドすべてに簡単に拡張できる方法がない限り、何があっても、多くの重複した作業に直面することになります。

お時間をいただきありがとうございます!

P粉765570115P粉765570115375日前557

全員に返信(1)返信します

  • P粉308089080

    P粉3080890802023-09-11 11:38:54

    最初に注意すべきことは、フォーム入力ごとに異なる名前のローカル変数を実際に作成する必要はないということです。つまり、次のように記述する必要はありません:

    リーリー

    次のように書くことができます:

    リーリー

    これが役立つのはなぜですか? この 入力項目に関連するコンテンツは 2 つだけであるため:

    • タグ「記者(フルネーム)」
    • フィールド名「reported_by」、複数の場所で使用されています

    これらはどちらも単なる文字列なので、PHP 変数に簡単に抽出できます。 リーリー

    これらは

    parameters によく似ているので、$incident_id も渡すことを忘れずに、これを関数に変換しましょう: リーリー

    これで、500 個の入力項目を表示するには、

    display_input 関数を 500 回呼び出すだけで済みます。これを回避するには、配列と foreach ループを使用します。 リーリー その後、配列をハードコーディングする代わりに、構成ファイルまたはデータベース テーブルから配列を取得できます。繰り返しの部分 (HTML レンダリングの詳細) を自動化し、表示するフィールドのリストを定義するという「楽しい」部分だけを残しました。

    一部のフィールドを少し変更する必要がある場合は、関数 (および構成配列) に追加のオプションを追加できますが、あまり多くの変更がない限り、コードは非常にシンプルかつ単純なままになるはずです。

    返事
    0
  • キャンセル返事