|
|
|
| З таблицы
Таблица #__gintur_numera (номера)
-----------------------------------
id description dop otel
-----------------------------------
3 Номер1 1 2
4 Номер2 1 2
5 Номер3 1 2
6 Номер4 1 2
|
Таблица #__gintur_pricing (заезды)
---------------------------------
id otel title
------------------------------------------
16 2 Заезд1
18 2 Заезд2
19 2 Заезд3
|
Таблица #__gintur_zaezdid (заезды)
Формируется после сохранения данных из (номера) id=numerid dop=dopzaezd
и (заезды) zaezdid
а также заполнения своих полей цена (zena) и места (mesta )
---------------------------------------------------
zaezdid numerid dopzaezd otel zena mesta
----------------------------------------------------
16 3 1 2 6 есть
16 4 1 2 6 есть
16 5 1 2 7 нет
16 6 1 2 5 есть
19 3 1 2 9 есть
19 4 1 2 15 нет
19 5 1 2 55 есть
19 6 1 2 55 есть
18 3 1 2 55 нет
18 4 1 2 55 есть
18 5 1 2 55 есть
18 6 1 2 55 есть
|
ВОПРОС КАК ВЫВЕСТИ такую таблицу
если заголовок Заезды формируется от кол-ва Заездов //Таблица #__gintur_zaezdid (заезды)
а первая колонка Номер от кол-ва номеров / /Таблица #__gintur_numera (номера)
а цена/места/скидки берется соответственно из таблицы #__gintur_zaezdid zena/mesta/dopzaezd для каждого номера и заезда
## | Заезд1 | Заезд2 | Заезд3
=================================================
Номер1 | цена/места/скидки | цена/места/скидки | цена/места/скидки
Номер2 | цена/места/скидки | цена/места/скидки | цена/места/скидки
Номер3 | цена/места/скидки | цена/места/скидки | цена/места/скидки
Номер4 | цена/места/скидки | цена/места/скидки | цена/места/скидки | |
|
|
|
|
|
|
|
для: oppo
(02.07.2008 в 17:26)
| | ДА еще
zaezdid из таблицы #__gintur_zaezdid соответствует ID #__gintur_pricing (заезды)
numerid из таблицы #__gintur_zaezdid соответствует ID #__gintur_numera | |
|
|
|
|
|
|
|
для: oppo
(02.07.2008 в 17:26)
| | Дампы таблиц можете показать? | |
|
|
|
|
|
|
|
для: Trianon
(03.07.2008 в 21:13)
| | номера
CREATE TABLE `jos_gintur_numera` (
`id` int(11) NOT NULL auto_increment, // связан с numerid
`description` varchar(200) NOT NULL default '',
`dop` mediumtext NOT NULL,
`otel` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
заезды
CREATE TABLE `jos_gintur_pricing` (
`id` int(10) NOT NULL auto_increment, // связан с zaezdid
`accid` int(10) NOT NULL default '0',
`title` varchar(150) NOT NULL default '',
`description` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
и результирующая в которую вписываються цена\места \скидки соответственно
CREATE TABLE `jos_gintur_zaezdid` (
`zaezdid` int(11) NOT NULL default '0',
`numerid` int(11) NOT NULL default '0',
`dopzaezd` int(11) NOT NULL default '0',
`otel` int(11) NOT NULL default '0',
`zena` varchar(150) NOT NULL default '',
`mesta` varchar(254) NOT NULL default '',
PRIMARY KEY (`zaezdid`,`numerid`,`dopzaezd`),
KEY `idx_gintur_zaezdid` (`numerid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
|
я уже сделал (подсказали что в цикл надо ) но не очень нравиться
Получаем заезды
$database->setQuery( "SELECT p.title AS ptitle,p.id AS pid "
. "\n FROM #__gintur_pricing AS p"
."\n WHERE p.published='1' AND p.accid ='".($row ->id)."' "
."\n ORDER BY p.id "
);
$zaezd = $database->loadObjectList(); // лист обектов
|
потом выбор название номеров и цена\места \скидки
echo '<table width="95%" border="0" cellspacing="0" cellpadding="1" align="center" class="adminform">';
echo "<tr><th width=\"100\">#</th>\r\n";
foreach ($zaezd as $price) {
if ($price->pid && $price->ptitle) {
echo "<th width=\"$col_width\">".$price->ptitle."</th>\r\n";
$query = "SELECT z.zena,z.mesta,z.dopzaezd, n.description AS ntitle,n.id AS nid,s.title AS doptitle,s.prz "
. "\n FROM #__gintur_zaezdid AS z "
. "\n INNER JOIN #__gintur_numera AS n ON n.id=z.numerid "
. "\n LEFT JOIN #__gintur_shara AS s ON s.id=z.dopzaezd "
. "\n WHERE z.zaezdid = " . (int) $price->pid
. "\n AND z.otel = " . (int) $row ->id
. "\n ORDER BY n.id ";
| и так далее | |
|
|
|
|
|
|
|
для: oppo
(03.07.2008 в 23:30)
| | На самом деле можно обойтись вот таким одним запросом:
"SELECT * FROM {$prefix}zaezdid
LEFT JOIN .... // джойны, нужные для получения отображаемых данных
ORDER BY numerid, zaezdid"
|
ORDER BY позволит получать данные в таком порядке, в котором можно сформировать ячейки таблицы, по строкам number за number ( а внутри строки по ячейкам заезд за заездом).
Цикл конечно понадобится, и над ним придется покорпеть. Но запросы в цикле не нужны.
Нужно будет всего два запроса - чтобы отрисовать шапку таблицы, и вот этот - чтобы отрисовать значения ячеек. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2008 в 00:08)
| | спасибо, Trianon - попробую
поздно счас - поэтому на утро, если можно уточните , что тут :
LEFT JOIN .... // джойны, нужные для получения отображаемых данных
|
| |
|
|
|
|
|
|
|
для: oppo
(04.07.2008 в 01:21)
| | >поздно счас - поэтому на утро, если можно уточните , что тут :
> LEFT JOIN .... // джойны, нужные для получения отображаемых данных
Ваши же
. "\n INNER JOIN #__gintur_numera AS n ON n.id=z.numerid "
. "\n LEFT JOIN #__gintur_shara AS s ON s.id=z.dopzaezd "
Собственно, если таблицы небольшие, то можно и без них.
Опять же, отдельными запросами затянуть, как и заезды. | |
|
|
|
|
|
|
|
для: Trianon
(04.07.2008 в 01:26)
| | ПРИВЕТ было время переделал по-другому - может кому пригодиться (или же можно сделать проще .).
ОТЕЛЬНО СПАСИБО Trianon - за подсказку
----------------------------------------------------------------------
Обошлось 2 запросами к базе
if ($numnomera && $numzaezd) {
$col_width = round(1/($numzaezd+1) * 100,0)."%";
$row = ceil($numnomera/$numzaezd);
echo '<table class="gtr" border="1" width="100%">';
//..заголовок
echo '<tr><th width="'.$col_width.'">Номера</th>';
for ($m=0, $n=$numzaezd; $m < $n; $m++) {
echo '<th>'.$zaezd[$m]->ptitle.'</th>';
}
echo '</tr>';
//..номера
$k = 0; $class = '';
for ($i = 0; $i < $row; $i++) {
$class = $i%2;
$class =' class="gtrrow'.$class.'" ';
echo '<tr '.$class. '>';
for ($j = 0; $j < $numzaezd; $j++) {
if (($k)%$numzaezd == 0) echo '<td width="'.$col_width.'"><b>'.$price[$k]->ntitle.'</b></td>';
if (isset($price[$k]))
echo '<td width="'.$col_width.'">'.$price[$k]->zena.''.$price[$k]->mesta.''.$price[$k]->zena.'</td>';
else
echo('<td width="'.$col_width.'"> </td>');
$k++;
}
echo('</tr>');
}
echo('</table>');
}
|
| |
|
|
|