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
Форумы портала PHP.SU :: Версия для печати :: Подскажите насчёт хранения данных в базе
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Подскажите насчёт хранения данных в базе

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

1. D1mOn - 28 Февраля, 2008 - 14:17:46 - перейти к сообщению
Здарова! Я здесь уже столько раз здоровался, что мне кажется будто Мы знакомы 100 лет )))

Подскажите! У меня на сайте, мона оставлять вопросы. Я хочу добавить к каждому этому вопросу, возможность добавлять комментарии. Так вот где мне лучше хранить эти коментарии, если вид базу вопросов выглядит так:

articles_books
articles_bussines
articles_culture
articles_foods
articles_games
articles_inrussia
articles_internet
articles_media
articles_movies
articles_music
articles_officials
articles_others
articles_politic
articles_private
articles_restaurants
articles_service
articles_shops
articles_society
articles_sport
articles_technics
articles_world

это категории, в них уже хранятся сами вопросы. структура каждой такой категории:

user varchar(32)
theme varchar(100)
date datetime
text text
url text
ip varchar(20)
ref text
show char(2)

что мне создать новую базу, таблицу? как делают все?

спасибо!
2. EuGen - 28 Февраля, 2008 - 15:48:17 - перейти к сообщению
Создайте таблицу articles, где храните название, содержание, дату создания и т.п. каждой статьи.
Для комментариев создайте таблицу comments, в которой храните содержание комментария, его дату и id статьи, к которой он относится.
3. D1mOn - 28 Февраля, 2008 - 16:03:06 - перейти к сообщению
Цитата:
Создайте таблицу articles, где храните название, содержание, дату создания и т.п. каждой статьи.


А как потом соотнести опр. статью к опр. категории. То есть если у меня есть страница car.php в которой мне надо вывести все статьи про машины, в порядке убывания.
Как такое сделать?
4. evgenijj - 28 Февраля, 2008 - 16:25:21 - перейти к сообщению
D1mOn пишет:
А как потом соотнести опр. статью к опр. категории.

Создать таблицу "Категории". На эту таблицу будет ссылаться каждая запись в таблице articles. Выбрать статьи определенной тематики
SELECT * FROM articles WHERE id_ctg=5 ORDER BY puttime DESC;
5. Dastar - 28 Февраля, 2008 - 16:26:32 - перейти к сообщению
Получаешь id данной статьи, потом ищешь по этому id все комментарии, у которых в поле artical_id = id статьи.
6. EuGen - 28 Февраля, 2008 - 17:31:55 - перейти к сообщению
Вот примерно так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE categories(category_id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, title VARCHAR(255));
  3.  
  4. CREATE TABLE articles(article_id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, category_id INT(11) UNSIGNED NOT NULL, title VARCHAR(255), content LONGTEXT, creation_date DATETIME NOT NULL, author VARCHAR(255));
  5.  
  6. CREATE TABLE comments(comment_id INT(11) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, article_id INT(11) UNSIGNED NOT NULL, title VARCHAR(255), content MEDIUMTEXT, creation_date DATETIME NOT NULL, author VARCHAR(255));
  7.  


Соответственно связка между категориями и статьями - по category_id; связка между статьями и комментариями - по article_id.
7. D1mOn - 29 Февраля, 2008 - 15:18:17 - перейти к сообщению
Давайте попробуем на примере меню для сайта.

У меня есть таблица menu. В ней много записей вида:

cat_menu // это категория (an, ph, vi, au - названия категорий)
name // русское название для вывода
url // собственно урл куда топать по этой сылке

Так вот! Допустим мне нужны только записи из категории an. Подскажите, как мне их вытащить?
8. valenok - 29 Февраля, 2008 - 15:22:51 - перейти к сообщению
Может вам книжку какую нибудь посоветовать?
SELECT `field` FROM `tbl` WHERE 'field'=`val`
9. EuGen - 29 Февраля, 2008 - 16:05:34 - перейти к сообщению
Мм-да..
Вот, советую прочесть например это:
http://www[dot]mysql[dot]ru/docs/gruber/
10. SergeantPEPPER - 29 Февраля, 2008 - 18:20:56 - перейти к сообщению
Текст запроса:

CODE (text):
скопировать код в буфер обмена
  1. SELECT `name`, `url` FROM `menu` WHERE `cat_menu`='an'


После чего можно слить результат в массив с помощью mysql_fetch_array (), который будет содержать элемента вида: название для вывода, URL

 

Powered by ExBB FM 1.0 RC1