0

ユーザーがフォーム フィールドに電話番号を入力すると、特定のバナーを表示する php ページを作成しています。

したがって、データベースのロジックは次のとおりです。

フィールドを持つ卓上電話: ID、ユーザー名、電話番号。フィールドを持つテーブル バナー: id、バナーの名前/タイトル、およびバナー (画像へのパス)。フィールドとのテーブルの関係: 電話番号をバナーに関連付ける必要がある場所と、あなたの助けが必要な場所です :)

そして、これがphpページの私のロジックです:

-フォームは電話番号を取得します -データベースにクエリを実行します -フォームに入力された電話番号に関連するバナーを表示します。

以下は、これまでのテーブル作成のコードです..先に進む方法がわからないことがわかります。

どうもありがとう

    CREATE TABLE phones(

id_phone INT NOT NULL AUTO_INCREMENT,

nombre VARCHAR(30),

number INT (9),

PRIMARY KEY (id_phone)

) TYPE = INNODB;


CREATE TABLE banners (

id_banners INT NOT NULL AUTO_INCREMENT,

id_phone INT NOT NULL,

name VARCHAR(250),

banner VARCHAR(250),

PRIMARY KEY(id_phone),

INDEX (id_phone),

FOREIGN KEY (id_phone) REFERENCES clientes(id_phone)

) TYPE = INNODB;
4

2 に答える 2

0

まず第一に、質問は何ですか?このステップで言えることは、このエンティティ間の関係は 1 対 1 ですか? その場合は、このすべてのデータを 1 つのテーブルにまとめたほうがよいでしょう。

++

CREATE TABLE phones(
phone_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30),
number INT (9),
PRIMARY KEY (id_phone)
) TYPE = INNODB;

CREATE TABLE banners (
banner_id INT NOT NULL AUTO_INCREMENT,
phone_id INT NOT NULL,
name VARCHAR(250),
banner VARCHAR(250),
PRIMARY KEY(id_phone),
INDEX (id_phone),
FOREIGN KEY (phone_id) REFERENCES clientes(phone_id)
) TYPE = INNODB;

クエリは次のようになります。

$query = "SELECT * FROM clients LEFT JOIN banners USING(phone_id) WHERE clients.number='.$number.'";
于 2010-12-14T16:55:17.187 に答える
0

ご質問のとおり、各電話番号には 1 つのバナーしか関連付けられていないようです。したがって、banners.id_bannersフィールドを削除して追加しますphones.id_banners

次に、データを選択するために、JOIN を実行できます。

SELECT phones.id_phone, phones.nombre, phones.number, 
banners.id_banners, banners.name, banners.banner
JOIN banners ON phones.id_banners = banners.id_banners
WHERE phone = '123-456-789'
于 2010-12-14T16:57:36.860 に答える