0

I was wondering how to create a PHP search form to perform a search function in three tables: phones, manufacturer and operatingsystem. The user will search for a price i.e. typing "350" would search the Price field in the phones table and display all items worth 350 and under or searching for "Android" would search the operatingsystem table and display all phones that run Android.

However, the operatingsystem table has a primary key called OSID but the phones table has a foreign key referencing the OSID. How would I get it to pull up results based on a search for Android when the phones table contains the ID rather than the name of the OS?

4

3 に答える 3

0

そして、他のすべてのテーブルのコンテンツにインデックスを付ける 4 番目のテーブルを作成するにはどうすればよいでしょうか?

このテーブルを設定して、主キー (自動インクリメント)、2 番目のフィールド (0、テーブル 1、1、テーブル 2、2、テーブル 3)、および 3 番目のフィールド (テーブル内の要素を参照する外部キー) を設定できます。指定されたテーブル。その場合、最後のフィールドには 1 つの単語が含まれます。

検索クエリを単語に分割し、この 4 番目のテーブルに対してクエリを実行できます。

そして、3 つの元のテーブルでそれらを探して、一致を SELECT および JOIN します...

次に、フロント エンドでいくつかの css クラスを追加して、ユーザーが迅速にフィルタリング (jquery) し、特定のタイプの結果のみを保持できるようにして、ユーザーが彼女を変更できるようにしながら、(実際には彼女が) 誤検知を削除できるようにします。マインド。

幸運を、

于 2013-02-05T23:14:28.293 に答える
0

よく理解できたと思います...

あなたはテーブルを持っています: phone、それはテーブルからの参照のIDを持っていますoperating_system、そして同じmanufacturerように、例えば、私はオペレーティングシステムのテーブルエントリに次のようなものを持っています

オペレーティング·システム

  1. サムスン
  2. ノキア
  3. アイフォン

とメーカー

  1. マック
  2. ノキア

だから、私の卓上電話には次のようなものがあります

id / 名前 / オペレーティング システム / メーカー / 価格

1 / サムスンギャラクシー / アンドロイド / サムスン / 300usd

したがって、350 米ドル未満の電話を検索してすべての詳細を表示したい場合は、次のようにする必要があります。

select * from operating_system, manufacturer, phones
where phones.operating_system = operating_system.id
and manufacturer.id = phone.manufacturer
and phone.price < 350

後で結果を表示します。

于 2013-02-05T23:05:28.080 に答える
-1

異なるデータに対して異なるフォーム入力を持つことができます。そうすれば、どのデータを SQL クエリのどの部分にプラグインするかがわかります。

ただし、車輪の再発明は、2013 年の開発者に一般的に推奨されるアクティビティではありません。Sphiderなどの既存のものを使用することもできます。これには多くの選択肢があると思いますが、それは始まりです...

ただし、いくつかのアドバイス:

  • ユーザーを絶対に信頼しないでください。これには、彼が検索ボックスに入力している内容が含まれます。SQL インジェクションから身を守るために、常にエスケープしてください。
  • Javascript を使用してクライアント側の検証を行う予定がある場合は、サーバー側でも行います。誰でもブラウザで Javascript を無効にできます...
于 2013-02-05T22:54:43.883 に答える