Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Доска объявлений

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Создание БД, вывод данных
Данил Банаев
Отправлено: 24 Ноября, 2011 - 14:29:55
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Доброго времени суток всем.
Делаю маленькую базу для доски обхъявлений.

Существует объявление у него есть идентификатор и прочие атрибуты, включая имя категории и имя раздела.

Существует справочник с категориями, 2 категории могу быть с одинаковыми именами, но должны быть в разных разделах.

В таблице с разделами имя раздела должно быть уникальным

Все ли правильно?

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE parts(
  2.         name VARCHAR(20) NOT NULL,
  3.         description TEXT NOT NULL,
  4.         CONSTRAINT pkIdParts PRIMARY KEY(name)
  5. );
  6. CREATE TABLE category(
  7.         name VARCHAR(20) NOT NULL,
  8.         part VARCHAR(20) NOT NULL,
  9.         CONSTRAINT pkIdCat PRIMARY KEY(name,part),
  10.         CONSTRAINT fkCatagoryPart FOREIGN KEY(part)
  11.                 REFERENCES parts(name)
  12. );
  13. CREATE TABLE ads(
  14.         id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  15.         name VARCHAR(20) NOT NULL,
  16.         text TEXT NOT NULL,
  17.         cat VARCHAR(20) NOT NULL,
  18.         part VARCHAR(20) NOT NULL,
  19.         email VARCHAR(20) NOT NULL,
  20.         fio VARCHAR(50) NOT NULL,
  21.         CONSTRAINT pkIdAds PRIMARY KEY(id),
  22.         CONSTRAINT fkAdsCat FOREIGN KEY(cat,part)
  23.                 REFERENCES category(name,part)
  24. );


Далее я вывожу разделы с категориями, тоже хотелось узнать все ли правильно?

PHP:
скопировать код в буфер обмена
  1. $obj=new Board();
  2. $sql="SELECT name FROM parts";
  3. $parts=$obj->assocArrayQuery($sql);
  4. foreach($parts as $part){
  5.         echo "<u><b>".$part["name"]."</b></u><br>";
  6.         $sql="SELECT name FROM category WHERE part='{$part["name"]}'";
  7.         $category=$obj->assocArrayQuery($sql);
  8.         foreach($category as $cat){
  9.                 echo $cat["name"]."<br>";
  10.         }
  11. }
 
 Top
DlTA
Отправлено: 24 Ноября, 2011 - 14:42:28
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




не экономно
по правилам нормализации объявлению не желательно содержать все имя раздела в котором оно находится, более того выборка по тексту очень тормозявая штука, корректней будет использвать вместо имени категории ссылку на категорию в таблице "справочная по категориям"
 
 Top
Данил Банаев
Отправлено: 24 Ноября, 2011 - 14:51:10
Post Id


Новичок


Покинул форум
Сообщений всего: 55
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




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

(Отредактировано автором: 24 Ноября, 2011 - 14:53:49)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB