Автор Тема: помогите ;)  (Прочитано 5194 раз)

0 Пользователей и 1 Гость просматривают эту тему.

  • Гость
помогите ;)
« : 01 Февраля 2002, 12:47:03 »
у меня такой вопрос:

в MySQL есть такие поля

id | tema | categorija

и я немогу понят, как мне зделать такое:

Categorija
tema1
tema2
tema3

Categorija2
tema1
tema2
tema3

категорий я заранее не знаю, и хочу штоб если появляется новая категория, ее выписывало на страничке

Спасибо

Оффлайн bhor

  • Модератор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 767
  • +0/-0
  • 0
    • Просмотр профиля
помогите ;)
« Ответ #1 : 01 Февраля 2002, 13:03:14 »
Сделай еще поле Categorija2
или ncategorija тогда все темы будешь кидать в Categorija, а уже номера категорий в ncategorija

Оффлайн DimovD

  • Ноу проблем
  • Пользователь
  • **
  • Сообщений: 79
  • +0/-0
  • 2
    • Просмотр профиля
помогите ;)
« Ответ #2 : 01 Февраля 2002, 13:16:53 »
Так как ест и делай:

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

Потом делаешь выборку по категории и получаешь темы...

Оффлайн dope

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите ;)
« Ответ #3 : 01 Февраля 2002, 13:18:10 »
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

Спасибо, и пожалейте начинающего ;)

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
помогите ;)
« Ответ #4 : 01 Февраля 2002, 16:16:36 »
НАпиши условие для проеврки, вывел-ли ты название категории или нет.
 Что-нить вроде:
$cat = \'\';
while ($row = mysql_fetch_array($query)) {
if ($cat != $row[\'categorija\']:
echo $row[\'categorija\'],"
;
$cat = $row[\'categorija\'];
endif;
echo $row[\'tema\'],"
";
}
Я это не тестил. Это повод для размышления. Если у тебя не получится - могу дописать.
AS IS...

Оффлайн DimovD

  • Ноу проблем
  • Пользователь
  • **
  • Сообщений: 79
  • +0/-0
  • 2
    • Просмотр профиля
помогите ;)
« Ответ #5 : 01 Февраля 2002, 17:35:40 »
ThE0ReTiC
Да у него другая проблема, Ты сам подумай зачем всё это если Ты будешь знать названия категорий...
Ему надо просто вывести все из базы не указывая на конкретное поле.

А сделать тогда думаю надо так:
Сами категории засунуть в другую таблицу
id | category
а в таблицу Tema вставлять в поле categorija  id категории.
Тогда dope , Ты берёшь id категории из таблициы категорий, пишешь его название, потом по id достаёшь Темы из таблицы tema.
код не напишу, тороплюсь.
ThE0ReTiC если Тебе не влом, помоги человеку с кодом.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
помогите ;)
« Ответ #6 : 01 Февраля 2002, 17:57:46 »
2DimovD
Нормализация базы :)
В принципе правильно.
Помогу
2dope
Тебе насколько срочно это надо?
 Завтра днем, если пропощу нормально?
А то на работе времени нет, а дома инет кончилася, платить надо идти :(
Сообщи.
Если совсем критично, попробую к сегодняшней ночи.
AS IS...

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
помогите ;)
« Ответ #7 : 01 Февраля 2002, 18:17:37 »
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\
'<b>\'.$ct["name"].\'</b>
\';
	
$tq = mysql_query("SELECT name FROM themes WHERE themes.category_id=\'$ct[id]\'");
while($ts = mysql_fetch_assoc($tq))
{
	
echo$ts["name"].\'
\';
} // $ts
} //$ct
?>
AS IS...

Оффлайн dope

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите ;)
« Ответ #8 : 01 Февраля 2002, 19:32:55 »
thanx, posmotriu, eto ne ochen srochno

Оффлайн dope

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 16
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
помогите ;)
« Ответ #9 : 06 Февраля 2002, 15:38:05 »
копалюсь, копаюсь и понять немогу:

если есть категория, но в етой категории ничего нету, т.е.
например так:

kat
link
link2

kat2
link
link2

kat3
<пусто>

посоветуйте, как зделать, штоб не показывало kat3, или другую, если она пуста? PHP как ThE0ReTiC написал

Спасибо

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
помогите ;)
« Ответ #10 : 06 Февраля 2002, 18:45:59 »
Допиши после
$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\
'<b>\'.$ct["name"].\'</b>
\';

while($ts = mysql_fetch_assoc($tq))
{
    echo$ts["name"].\'
\';
} // $ts
} // if
} //$ct

?>
AS IS...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28