Создание афиши событий

pavlodaranet

Новичок
Создание афиши событий

Возникла необходимость создания афиши событий. Вывод должен происходить таким образом:

КИНО

Название фильма Место проведения 1 время проведения 17-00 20-00 22-00
название жанра Место проведения 2 время проведения 19-00 21-00 23-00


СПЕКТАКЛЬ

Название спектакля Место проведения 1 время проведения 17-00
название жанра

И Т.П.

Причем события должны показываться из БД с датой и временем больше текущей.

Помогите разобраться со структурой БД и выводом данных. У кого будут какие идеи?
 

akd

dive now, work later
Команда форума
pavlodaranet, ты нам сначала про свои идеи расскажи .. или это из серии "я незнаю как это сделать, но нужно завтра сдавать работу!"? :)
 

pavlodaranet

Новичок
сейчас нарисую что у меня получилось

-~{}~ 19.05.10 00:41:

в упрощенном варианте
1) таблица relax (id, pid, title) - само событие (pid <> relax_places.id)
2) таблица relax_dt (id, pid, dt) - время события
3) таблица relax_places (id, title) - места проведения

Вот теперь при выводе и выборке возникла загвоздка
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну пока что я бы предложил вынести в отдельные таблички:
1. Места проведения
2. Жанры

Связать по id эти две таблицы с главной, содержащей объявления и даты

ну и отбирать только те объявы, где время проведения > NOW()
 

pavlodaranet

Новичок
для даты думаю вынести отдельную таблицу т.к. у одного события может быть несколько времен начала события: 17-00 20-00 22-00
 

akd

dive now, work later
Команда форума
ну так ты сам все понимаешь, вопрос в чем? :)
 

pavlodaranet

Новичок
вопрос в том, как осуществить запрос к базе и вывод по порядку и с чувством с толком и расстановкой при минимальной нагрузке
 

akd

dive now, work later
Команда форума
pavlodaranet, а ты уже какой-то написал и тебя не устроила скорость работы? все твои 100.000 посетителей жалуются, шо медленно грузится? :)
 

akd

dive now, work later
Команда форума
что именно не вышло? выбираешь событие иннер джоин жанр иннер джоин места иннер джоин даты, для них потом выбираешь сеансы .. что тебе еще надо? в один запрос скорее всего свяжется с помощью group_concat какого-нить. но для начала напиши просто как напишется, вот когда упрется в скорость начнешь оптимизировать.
 

pavlodaranet

Новичок
Получилось как-то так:
PHP:
	$result = mysql_query("SELECT a.id, a.pid, a.title
FROM
  afisha a,
  relax_dt r
WHERE
   a.id=r.event_id
   and DATEDIFF(r.dt,NOW())>=0
GROUP BY a.id",$link);

	while($myrow = mysql_fetch_assoc($result))
	{
		$result2 = mysql_query("select * from relax_dt where event_id=$myrow[id]",$link);
		echo "</br>".$myrow[title]."</br>";
		
		while($myrow2 = mysql_fetch_assoc($result2))
			{
				$myrow[daty]=$myrow2[dt];
				echo $myrow[daty];
			}
	}
			 ?>
Теперь надо сделать так, чтобы по группам выводилось. Сейчас вывод такой:

Событие 1
2010-05-26 17:00:00 2010-05-26 19:00:00
Событие 2
2010-06-24 16:30:00
 
Сверху