|
|
|
| Всем привет,
Никак не получается доделать таблицу. Рисунок того, что выходит прикрепил.
Не выходит прописать цену относительно заданному дню для каждой группы автомобилей.
Если не трудно покажите где не так делаю
<table cellspacing='0' cellpadding='0' width="100%" border="1">
<tr>
<td>Group</td>
<td>Sipp</td>
<td>Car type or similar</td>
<td>A / C</td>
<?php
$sql = "SELECT DISTINCT rates.days
FROM rates
WHERE rates.country = '$cntr_id' AND
rates.supplier = '$supl_id'
ORDER by id";
$res = mysql_query($sql) or die("error in $sql" . mysql_error());
while($row = mysql_fetch_assoc($res))
{
// ДНИ В ШАПКЕ ТАБЛИЦЫ
echo "<td>".$row['days']."</td>";
}
echo "</tr>";
// ВЫТАСКИВАЮ НАЗВАНИЯ ГРУПП АВОМОБИЛЕЙ
$sql = "SELECT DISTINCT v_code.vc_name,
s_code.sc_name
FROM rates, v_code, s_code
WHERE rates.v_code = v_code.vc_id AND
rates.s_code = s_code.sc_id AND
rates.country = '$cntr_id' AND
rates.supplier = '$supl_id'
order by id";
$res = mysql_query($sql) or die("error in $sql" . mysql_error());
while(list($row['vc_name'],$row['sc_name']) = mysql_fetch_row($res))
{
echo "<tr>";
echo "<td>".$row['vc_name']."</td>";
echo "<td>".$row['sc_name']."</td>";
echo "<td>ОПИСАНИЕ</td>";
echo "<td>ac</td>";
// ТУТ,ЦЕНЫ ДЛЯ КАЖДОГО ДНЯ. ДАЖЕ И НЕ ЗНАЮ ЧТО ПИСАТЬ. ДУМАЮ, ЧТО НУЖНО КАК-ТО СООТНЕСТИ ГРУППУ С ДНЕМ
echo "</tr>";
}
?>
</table>
|
спасибо | |
|
|
|
|
|
|
|
для: zeeg
(02.02.2008 в 19:50)
| | Вместо DISTINCT здесь напрашивается GROUP BY вкупе с агрегатом GROUP_CONCAT по rates.days
А прикреплять картинку BMP в 640К весом там , где её же GIF весит меньше 8К - свинство. | |
|
|
|
|
|
|
|
для: Trianon
(02.02.2008 в 21:39)
| | Вроде сделал, но работает как-то не очень. В смысле правильно, но по-моему медленно. Что можно поправить, поменять. Посоветуйте.
<table cellspacing='0' cellpadding='0' width="100%" border="1" style="font-size: 9px;">
<tr>
<td>Group</td>
<td>Sipp</td>
<td>Car type or similar</td>
<td>A / C</td>
<?php
$sql = "SELECT DISTINCT rates.days
FROM rates
WHERE rates.country = '$cntr_id' AND
rates.supplier = '$supl_id'
ORDER by days";
$res = mysql_query($sql) or die("error in $sql" . mysql_error());
$useddays = array();
while($row = mysql_fetch_assoc($res))
{
echo "<td>".$row['days']."</td>";
array_push($useddays, $row['days']);
}
echo "</tr>";
$sqlg = "SELECT DISTINCT v_code, s_code
FROM rates, v_code, s_code
WHERE rates.v_code = v_code.vc_id AND
rates.s_code = s_code.sc_id AND
rates.country = '$cntr_id' AND
rates.supplier = '$supl_id'
ORDER BY id";
$resg = mysql_query($sqlg) or die("error in $sqlg" . mysql_error());
$grup = array();
$sipp = array();
while($rowg = mysql_fetch_assoc($resg))
{
array_push($grup, $rowg['v_code']);
array_push($sipp, $rowg['s_code']);
}
for ($i=0; $i<count($grup); $i++)
{
$v = $grup[$i];
$s = $sipp[$i];
$sql = "SELECT vc_name, sc_name
FROM v_code, s_code
WHERE vc_id = ".$v." AND
sc_id = ".$s."";
$res = mysql_query($sql) or die("error in $sql" . mysql_error());
while($row = mysql_fetch_assoc($res))
{
echo "<tr>";
echo "<td>".$row['vc_name']."</td>";
echo "<td>".$row['sc_name']."</td>";
echo "<td>Discript</td>";
echo "<td>ac</td>";
foreach($useddays as $key => $val)
{
$sqlp = "SELECT rse_cost
FROM rates
WHERE rates.v_code = ".$v." AND
rates.s_code = ".$s." AND
rates.country = '$cntr_id' AND
rates.supplier = '$supl_id' AND
rates.days = '$val'";
$resp = mysql_query($sqlp) or die("error in $sqlp" . mysql_error());
$rate = mysql_fetch_assoc($resp);
$rate['rse_cost'] != "" ? $cost = $rate['rse_cost'] : $cost = " - ";
echo "<td>".$cost."</td>";
}
echo "</tr>";
}
}
?>
</table>
|
Спасибо | |
|
|
|
|
|
|
|
для: ZeeG
(02.02.2008 в 21:48)
| | Что, ничего даже не режет? Должно же быть что-то. | |
|
|
|
|
|
|
|
для: ZeeG
(03.02.2008 в 01:40)
| | Конечно, режет.
Формирование массы запросов внутри цикла режет.
Собственно, поэтому и тормозит.
Либо
SELECT
rates.cost, rates.days,
v_code.vc_name,
s_code.sc_name
FROM rates, v_code, s_code
WHERE rates.v_code = v_code.vc_id AND
rates.s_code = s_code.sc_id AND
rates.country = '$cntr_id' AND
rates.supplier = '$supl_id'
ORDER BY vc_name, sc_name, rates.days
|
со сложным последовательным погрупповым разбором результата.
Либо
SELECT
v_code.vc_name,
s_code.sc_name,
GROUP_CONCAT(
CONCAT(rates.days,'=',rates.cost)
SEPARATE BY '/'
ORDER BY rates.days ) AS cost_info
FROM rates, v_code, s_code
WHERE rates.v_code = v_code.vc_id AND
rates.s_code = s_code.sc_id AND
rates.country = '$cntr_id' AND
rates.supplier = '$supl_id'
GROUP BY vc_name, sc_name
ORDER BY vc_name, sc_name
|
с простым построчным разбором результата
Но чуть более сложным переформатированием поля строки со списком цен.
Понятно, что если сервер старый (до 4.1.хх) где груп конкат не поддерживается,
то останется лишь первый вариант. | |
|
|
|
|
|
|
|
для: Trianon
(03.02.2008 в 02:13)
| | Тогда не пойму как переделать сам цикл. Ваш запрос конечно посимпатичней моего, но что-то я совсем запутался. | |
|
|
|