|
|
|
|
|
для: Trianon
(09.12.2009 в 18:45)
| | Спасибо огромное!
Разобрался. | |
|
|
|
|
|
|
|
для: steiger
(09.12.2009 в 18:40)
| | пардон.
Вместо запятой, конечно же.
<?php
$sql = "
SELECT e.id_event,e.e_title, p.id_photo
FROM events AS e
LEFT JOIN events_photos AS p ON p.event_id=e.id_event
ORDER BY e.e_title, e.id_event, p.id_photo
";
$res = mysql_query($sql) or exit("Error in $sql : ".mysql_error());
for($lastid = null; $row = mysql_fetch_assoc($res); )
{
$id_event = $row['id_event'];
$e_title = $row['e_title'];
$id_photo = $row['id_photo'];
if($lastid !== $id_event)
{
echo "<hr/> Событие $id_event ($e_title)";
$lastid = $id_event;
}
echo "<br/> Фото <img src=$id_photo.gif />";
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(09.12.2009 в 18:09)
| | Спасибо)
А куда в for() поставить точку с запятой?
syntax error, unexpected ')', expecting ';'
|
| |
|
|
|
|
|
|
|
для: steiger
(09.12.2009 в 16:48)
| |
<?php
$sql = "
SELECT e.id_event,e.e_title, p.id_photo
FROM events AS e
LEFT JOIN events_photos AS p ON p.event_id=e.id_event
ORDER BY e.e_title, e.id_event, p.id_photo
";
$res = mysql_query($sql) or exit("Error in $sql : ".mysql_error());
for($lastid = null, $row = mysql_fetch_assoc($res); )
{
$id_event = $row['id_event'];
$e_title = $row['e_title'];
$id_photo = $row['id_photo'];
if($lastid !== $id_event)
{
echo "<hr/> Событие $id_event ($e_title)";
$lastid = $id_event;
}
echo "<br/> Фото <img src=$id_photo.gif />";
}
|
| |
|
|
|
|
|
|
|
для: Trianon
(09.12.2009 в 16:02)
| | Если бы я понимал, каким образом его можно переделать, я бы не писал сюда и никого не мучил)
Попробовал добавить GROUP BY id_event - не помогло. | |
|
|
|
|
|
|
|
для: steiger
(09.12.2009 в 15:34)
| | SQL всегда возвращает прямоугольный набор результата запроса.
На стороне приложения средствами php можно спокойно переделать его в нужный иерархический вид. В запросе, впрочем, имеет смысл указать сортировку в том числе и по id события.
Примеров в этом разделе - масса. В том числе и моих. | |
|
|
|
|
|
|
|
для: Trianon
(09.12.2009 в 13:22)
| | Попробую объяснить по-человечески. Запрос
SELECT e.id_event,e.e_title,
p.id_photo,p.p_small,p.event_id
FROM events
AS e
JOIN events_photos
AS p
ON p.event_id=e.id_event
|
на самом деле выводит все фото и события. А если каждому событию соответствует несколько фотографий? Тогда событие выведется несколько раз. В этом и проблема.
Array ( [id_event] => 1 [e_title] => Событие 1 [id_photo] => 1 [p_small] => 1260123398_sm.jpg [event_id] => 1 )
Array ( [id_event] => 1 [e_title] => Событие 1 [id_photo] => 2 [p_small] => 1260126315_sm.jpg [event_id] => 1 )
Array ( [id_event] => 1 [e_title] => Событие 1 [id_photo] => 3 [p_small] => 1260125980_sm.jpg [event_id] => 1 )
Array ( [id_event] => 2 [e_title] => Событие 2 [id_photo] => 4 [p_small] => 1260126031_sm.jpg [event_id] => 2 )
Array ( [id_event] => 1 [e_title] => Событие 1 [id_photo] => 5 [p_small] => 1260274054_sm.jpg [event_id] => 1 )
|
| |
|
|
|
|
|
|
|
для: steiger
(09.12.2009 в 12:56)
| | при простом соединении по id_event выводятся все фото, и события, им соответствующие. | |
|
|
|
|
|
|
| Сразу извинюсь, если подобный вопрос уже был.
Есть две таблицы. В одной хранятся события, в другой - имена фотографий к ним. Нужно вывести все события с фотографиями в виде
- Событие 1
--- Фото 1
--- Фото 2
- Событие 2
--- Фото 3
и т.д.
|
При простом объединении таблиц (по id_event) выводится по одной фотографии к каждому событию.
Дамп таблиц
CREATE TABLE IF NOT EXISTS `events` (
`id_event` int(11) NOT NULL auto_increment,
`e_title` varchar(255) NOT NULL default '',
`e_text` text NOT NULL,
`e_date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id_event`)
) ENGINE=MyISAM;
CREATE TABLE IF NOT EXISTS `events_photos` (
`id_photo` int(11) NOT NULL auto_increment,
`p_small` varchar(255) NOT NULL default '',
`p_big` varchar(255) NOT NULL default '',
`event_id` int(11) NOT NULL,
PRIMARY KEY (`id_photo`)
) ENGINE=MyISAM;
|
Помогите, пожалуйста... | |
|
|
|
|