バザーをフィルター処理する:シンプルで機能的なデータフィルターを作成する

画像

右側の写真の燃料プレフィルターがPHP \ IT全体にどのように関連しているかを誰かが尋ねるでしょうか? とても簡単です! 後で説明するスクリプトは、目的と機能の両方でこれらのデバイスと非常に似ています。 「超微細洗浄」の多かれ少なかれ普遍的なフィルター(この場合、ユーザーの希望を満たす)を実際に実装することは、必ずしも些細な作業ではないことを誰もが理解しています。 ただし、非常にシンプルなものを実装すると同時に、機能的で非常に適用可能なものは非常に現実的です。 実際、これは「本当の」ものであり、何を一緒に食べるのかということです。



PHPは私の主な職業ではありませんが、特定のデータをユーザーに表示するためにシンプルで機能的なデータフィルターを実装する必要がある状況に、何度も対処しなければなりませんでした。 最も単純な例は、ほとんどすべてのシステムの管理パネルです。 はい、開発者がPMAにアクセスして自分でパンを抜くのは簡単ですが、残念ながら、それらのほとんどは能力がなく、そうすべきではありません。



その結果、ほとんどの場合(データタイプに応じて、以下で説明します)、フォームの2つのデータ配列のみを送信するだけで十分なスクリプトを作成しました。



$FIELDS = array (

'active' => 'checkbox',

'sex' => 'select',

'type' => 'select',

'hp' => 'int',

'ep' => 'int',

'id' => 'int',

'bonus' => 'int',

'description' => 'text'

);



$NAMEFIELDS = array (

'active' => '',

'sex' => '',

'type' => ' ',

'description' => '',

'hp' => '',

'ep' => '',

'bonus' => ''

);







最初の配列は、フィルタリングに使用できるフィールドとタイプの列挙です。2番目の配列は、ユーザーインターフェイスのシンボル表示です。 現在、4種類の処理が実装されています。単一の数値(数字のみ)、事前に準備されたリストからの選択(選択タイプ)、テキストとブール値(はい/いいえ)です。 奇妙なことに、これはフィルターを事実上すべてのテーブルにねじ込んで検索するのに十分であることが判明しました。 上で説明したように、強力で複雑なクロステーブル検索のために、システムごとに異なる他のメカニズムが使用されます。



フィールドが複数選択の場合(たとえば、性別が男性\女性\ユニセックス)、次の形式の3番目のパラメーターが関数に渡されます。



$additional = array (

'sex' => $SEX,

'type' => $TYPES

);







ここで、$ SEXと$ TYPESは、可能な値のセットを持つ単なる配列です。



「あれこれ」のフレームワークの存在下で車輪を再発明する理由を誰かが叫ぶでしょうが、

1.私はフレームワークが好きではありません:)私たちは、なぜ、なぜ、これがこの投稿の範囲を超えて、すべてが独自の目的を持っていると主張しません

2.自分にとって都合の悪い何かをすることは常に良いことです。



スクリプトの例はここにあります (同じですが、OOPはこちら )。 リクエストを送信するとき、生成されたリクエストを単に返します。 ご覧のとおり、同じ基準を設定すると(たとえば、IDフィールドを複数回選択した場合)、より柔軟なデータ選択システムを取得できます。



しかし、私は発見などのふりをするのではなく、自分にとって便利で便利だと思うことを共有しています。 他の誰かに役立つかもしれません。 もちろん、コードはグループ開発のために研ぎ澄まされておらず、OOPのドロップも含まれていませんが、同時に、理解可能で、読み取り可能であり、何かを修正する必要がある場合/独自のタイプを作成するために\自分のために磨く-あなたはそれを行うと思います簡単に。 必要な人は-おそらく既にすべてを長い間行っているでしょうが、まだ時間がない人は-作者のロジックのエラーをスパイし、自宅で繰り返すことはできません。



要約すると、私は注意します



プラス

  1. ただ
  2. 十分に普遍的
  3. かなり機能的


短所

  1. この例では、GETリクエストが使用されています。 URLの長さは2048文字を超えてはならないことに注意する必要があります(誰もPOSTリクエストを使用する必要はなく、すべてタスクに依存します)
  2. クロステーブルクエリを実行できません
  3. 膝に書かれた:)




PSすべてのソースコードこちらのOOP からダウンロードできます(クラスから3つの関数のみを削除しました。これらの関数は、パブリック関数にすばやく関連付けられるため、外部にある方が良いです)

PPS誰も何もしません。



All Articles