0

Я строю php-страницу, на которой будет отображаться конкретный баннер, когда пользователь вводит свой номер телефона в поле формы.Реляционные таблицы: 3-я таблица с отношениями

Так вот моя логика для базы данных:

Таблица телефонов с полями: ID, имя пользователя и номер телефона. Табличные баннеры с полями: id, название/название баннера и баннер (путь к изображению). Таблица соотношения с полями: вот где номер телефона должен быть связан с баннером и где мне нужна ваша помощь :)

И вот моя логика для страницы PHP:

-форма получает номер телефона - Я запрашиваю базу данных -I показывает баннер, связанный с номером телефона, введенным в форму.

Ниже приведен код создания таблицы до сих пор .. как вы увидите, не знаете, как продвигаться.

Благодаря миллиона

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

Прежде всего, что это вопрос? Что я могу сказать на этом шаге, связана ли связь между этими объектами один к одному? Если это так, вы должны поместить все эти данные в одну таблицу.

++

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

Затем выбрать данные, вы можете сделать 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' 
Смежные вопросы