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

pavlodaranet

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

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

КИНО

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


СПЕКТАКЛЬ

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

И Т.П.

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

Помогите разобраться со структурой БД и выводом данных. У кого будут какие идеи?
 
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) - места проведения

Вот теперь при выводе и выборке возникла загвоздка
 
Ну пока что я бы предложил вынести в отдельные таблички:
1. Места проведения
2. Жанры

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

ну и отбирать только те объявы, где время проведения > NOW()
 
для даты думаю вынести отдельную таблицу т.к. у одного события может быть несколько времен начала события: 17-00 20-00 22-00
 
ну так ты сам все понимаешь, вопрос в чем? :-)
 
вопрос в том, как осуществить запрос к базе и вывод по порядку и с чувством с толком и расстановкой при минимальной нагрузке
 
pavlodaranet, а ты уже какой-то написал и тебя не устроила скорость работы? все твои 100.000 посетителей жалуются, шо медленно грузится? :-)
 
что именно не вышло? выбираешь событие иннер джоин жанр иннер джоин места иннер джоин даты, для них потом выбираешь сеансы .. что тебе еще надо? в один запрос скорее всего свяжется с помощью group_concat какого-нить. но для начала напиши просто как напишется, вот когда упрется в скорость начнешь оптимизировать.
 
Получилось как-то так:
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
 
Сверху