2010-12-14 13 views
0

Ich baue eine PHP-Seite, die ein bestimmtes Banner zeigt, wenn der Benutzer seine Telefonnummer in einem Formularfeld eingibt.Relationale Tabellen: eine 3. Tabelle mit Beziehungen

Also hier ist meine Logik für die Datenbank:

Tischtelefone mit Feldern: ID, Name des Benutzers und Telefonnummer. Tabelle Banner mit Feldern: ID, Banner Name/Titel und Banner (Pfad zum Bild). Tabelle Beziehung mit Feldern: hier ist, wo die Telefonnummer sollte auf ein Banner in Beziehung gesetzt werden und wo ich brauche deine Hilfe :)

Und hier ist meine Logik für die PHP-Seite:

-Form erhält die Telefonnummer - Ich frage die Datenbank -Ich zeige das Banner im Zusammenhang mit der Telefonnummer in das Formular eingegeben.

Unten ist der Code für die Tabellenerstellung so weit .. wie Sie sehen werden, weiß nicht, wie man voranschreitet.

Dank einer Million

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; 

Antwort

0

Zunächst einmal, was ist die Frage? Was kann ich bei diesem Schritt erwähnen, ist die Beziehung zwischen diesen Entitäten eins zu eins? Wenn dies der Fall ist, sollten Sie alle diese Daten in einer einzigen Tabelle zusammenfassen.

++

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; 

und die Abfrage wäre:

$query = "SELECT * FROM clients LEFT JOIN banners USING(phone_id) WHERE clients.number='.$number.'"; 
+0

Es ist eine gute Frage, ich bin so einen Neuling, dass ich mich besser erklären, mit einem Bild: http://217.116.9.130/2tables.gif – Lleoun

0

Aus Ihrer Frage, so scheint es, dass jede Telefonnummer nur ein Banner mit ihm verbunden hat. Daher löschen Sie das banners.id_banners Feld und fügen Sie ein phones.id_banners

dann die Daten zu wählen, können Sie eine treten:

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' 
Verwandte Themen