0

フォームフィールドにユーザが電話番号を入力すると、特定のバナーを表示するPHPページを作成しています。リレーショナルテーブル:関係がある3番目のテーブル

だからここにデータベースのための私のロジックです:フィールドを持つ

表電話:ユーザーと電話番号の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; 

答えて

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.'"; 
+0

をそれは私がより良いと自分自身を説明し、そのような初心者だけど、良い質問ですimage:http://217.116.9.130/2tables.gif – Lleoun

0

あなたの質問から、それぞれの電話番号がそれに関連付けられている唯一のバナーを持っているようです。データを選択するため、banners.id_bannersフィールドを削除し、その後phones.id_banners

を追加し、あなたが登録しよ行うことができます。

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'