Forum Webscript.Ru
Программирование => PHP => Тема начата: от 01 Февраля 2002, 12:47:03
-
у меня такой вопрос:
в MySQL есть такие поля
id | tema | categorija
и я немогу понят, как мне зделать такое:
Categorija
tema1
tema2
tema3
Categorija2
tema1
tema2
tema3
категорий я заранее не знаю, и хочу штоб если появляется новая категория, ее выписывало на страничке
Спасибо
-
Сделай еще поле Categorija2
или ncategorija тогда все темы будешь кидать в Categorija, а уже номера категорий в ncategorija
-
Так как ест и делай:
id | tema | categorija
01 | Тема1| Категория1
02 | Тема2| Категория1
03 | Тема3| Категория1
04 | Тема4| Категория1
05 | Тема1| Категория2
06 | Тема2| Категория2
07 | Тема3| Категория2
08 | Тема4| Категория2
Потом делаешь выборку по категории и получаешь темы...
-
sorry, не врубился ;)
у меня ето так:
$query = mysql_query("SELECT * FROM tema ORDER BY tema ASC");
while ($row = mysql_fetch_array($query)) {
echo $row[\'categorija\'],"
;
echo $row[\'tema\'],"
";
}
пишет так:
1
tema
1
tema2
2
tema
2
tema2
а я хочю так:
1
tema
tema2
2
tema
tema2
Спасибо, и пожалейте начинающего ;)
-
НАпиши условие для проеврки, вывел-ли ты название категории или нет.
Что-нить вроде:
$cat = \'\';
while ($row = mysql_fetch_array($query)) {
if ($cat != $row[\'categorija\']:
echo $row[\'categorija\'],"
;
$cat = $row[\'categorija\'];
endif;
echo $row[\'tema\'],"
";
}
Я это не тестил. Это повод для размышления. Если у тебя не получится - могу дописать.
-
ThE0ReTiC
Да у него другая проблема, Ты сам подумай зачем всё это если Ты будешь знать названия категорий...
Ему надо просто вывести все из базы не указывая на конкретное поле.
А сделать тогда думаю надо так:
Сами категории засунуть в другую таблицу
id | category
а в таблицу Tema вставлять в поле categorija id категории.
Тогда dope , Ты берёшь id категории из таблициы категорий, пишешь его название, потом по id достаёшь Темы из таблицы tema.
код не напишу, тороплюсь.
ThE0ReTiC если Тебе не влом, помоги человеку с кодом.
-
2DimovD
Нормализация базы :)
В принципе правильно.
Помогу
2dope
Тебе насколько срочно это надо?
Завтра днем, если пропощу нормально?
А то на работе времени нет, а дома инет кончилася, платить надо идти :(
Сообщи.
Если совсем критично, попробую к сегодняшней ночи.
-
2dope
Ну смотри:
Делаешь в базе две таблицы, как DimovD рассказал:
[sql]
CREATE TABLE category (
id tinyint(4) NOT NULL auto_increment,
name text NOT NULL,
PRIMARY KEY (id),
KEY id (id)
);
CREATE TABLE themes (
id int(11) NOT NULL auto_increment,
name text NOT NULL,
category_id tinyint(4) DEFAULT \'0\' NOT NULL,
PRIMARY KEY (id),
KEY id (id)
);
[/sql]
одна та что уже есть, а другая, та что он расписал.
Вот то, что тебе надо:
...
...
$cat_q = mysql_query("SELECT id, name FROM category");
while($ct = mysql_fetch_assoc($cat_q))
{
echo\'\'.$ct["name"].\'
\';
$tq = mysql_query("SELECT name FROM themes WHERE themes.category_id=\'$ct[id]\'");
while($ts = mysql_fetch_assoc($tq))
{
echo$ts["name"].\'
\';
} // $ts
} //$ct
?>
-
thanx, posmotriu, eto ne ochen srochno
-
копалюсь, копаюсь и понять немогу:
если есть категория, но в етой категории ничего нету, т.е.
например так:
kat
link
link2
kat2
link
link2
kat3
<пусто>
посоветуйте, как зделать, штоб не показывало kat3, или другую, если она пуста? PHP как ThE0ReTiC написал
Спасибо
-
Допиши после
$tq = mysql_query("SELECT name FROM themes WHERE themes.category_id=\'$ct[id]\'");
if (mysql_num_rows($tq) >0) {
и после цикла
while($ts = mysql_fetch_assoc($tq))
{
echo$ts["name"].\'
\';
} // $ts
Поставь
}
Если надо, что название пустой темы тоже не выводилось, тогда так:
...
...
$cat_q = mysql_query("SELECT id, name FROM category");
while($ct = mysql_fetch_assoc($cat_q))
{
$tq = mysql_query("SELECT name FROM themes WHERE themes.category_id=\'$ct[id]\'");
if (mysql_num_rows($tq) >0)
{
echo\'\'.$ct["name"].\'
\';
while($ts = mysql_fetch_assoc($tq))
{
echo$ts["name"].\'
\';
} // $ts
} // if
} //$ct
?>