|
|
|
| Добрый день! Не нашел подходящий тему, пришлось создать новую. Основная суть проблемы не могу правильно объединить ячейки. А теперь по порядку:
Есть два запроса к БД $query1 и $query2 в результате этих запросов формируется массив:
$query1:
vid | Koll |
2 | 4 |
4 | 3 |
$query2:
a1 | a2 | a3 | a4 |
55 | 42 | 5 | 4 |
12 | 22 | 25 | 25 |
55 | 42 | 5 | 4 |
12 | 22 | 25 | 25 |
55 | 42 | 5 | 4 |
12 | 22 | 25 | 25 |
дальше делаю два цикла ( при этом уже шапка таблицы сделана)
$row1=mysql_fetch_array($query1);
do {
echo "<tr><td rowspan=$row1['koll']>";
echo $row1['vid'];
echo "</td></tr>";
}
while($row1=mysql_fetch_array($query1));
$row2=mysql_fetch_array($query2);
do {
echo "<tr><td>";
echo $row2['a1'];
echo "</td><td>";
echo $row2['a2'];
echo "</td><td>";
echo $row2['a3'];
echo "</td><td>";
echo $row2['a4'];
echo "</td></tr>";
}
while($row2=mysql_fetch_array($query2))
|
со вторым циклом проблем нет, да и с первым бы не было если не нужно было объединить строки в одном столбце на число Koll с первого запрос.
В результате этого PHP кода получается что с первого цикла формируется обедненная ячейка на Koll строк, а следом за ней формируется вторая ячейка так же обеднённая, но размещена она не под первой как требуется, а правее. В чем проблема понять не могу. Повторюсь, если не ставить объединение (rowspan=$row1['koll']), то все нормально ячейка располагается ниже другой. | |
|
|
|
|
|
|
|
для: isumin
(06.06.2014 в 18:42)
| | Печалька :)
Привидите HTML код который генерирует данный скрипт думаю, сделав это вы сами увидите ошибку
pS: В данном случае do .... while не к месту. | |
|
|
|
|
|
|
|
для: tvv123456
(06.06.2014 в 19:01)
| | >pS: В данном случае do .... while не к месту.
Лучше использовать? -
while ($row2 = mysql_fetch_assoc($query2))
{
}
|
Но над основной проблемой я так и не разобрал. в каком направлении двигаться?
Я очень не давно в PHP по этому не сразу вижу в чем ошибка(((( подскажите пож. | |
|
|
|
|
|
|
|
для: isumin
(06.06.2014 в 19:09)
| | >Лучше использовать? -
>
>while ($row2 = mysql_fetch_assoc($query2))
>{
>
>}
>
|
Ну, как по мне дак чуток по-лучше.
>
>Но над основной проблемой я так и не разобрал. в каком направлении двигаться?
>Я очень не давно в PHP по этому не сразу вижу в чем ошибка(((( подскажите пож.
Какой HTML код генерит ваш скрипт(В браузере правой кнопкой по странице и там искать что-то связанное с HTML)? | |
|
|
|
|
|
|
|
для: tvv123456
(06.06.2014 в 19:12)
| |
<html>
<link rel="stylesheet" type="text/css" href="style.css" />
<body>
<table border="1">
<tr>
<th class="vertikal_text">№ Квартал</th>
<th class="vertikal_text">№ Выдел</th>
<th class="vertikal_text">Площадь, га</th>
<th class="vertikal_text">Запас на выделе, куб.м.</th>
<th class="vertikal_text">Класс товарности</th>
<th class="vertikal_text">Состав насаждения</th>
<th class="vertikal_text">средний диаметр, см.</th>
<th class="vertikal_text">Запас на 1 га. куб.м</th>
<th class="vertikal_text">Остав. в семенных куртинах илиполосах куб.м</th>
<th class="vertikal_text">Крупная</th>
<th class="vertikal_text">Средняя</th>
<th class="vertikal_text">Мелкая</th>
<th class="vertikal_text">Дрова</th>
<th class="vertikal_text">Ликвид</th>
<th class="vertikal_text">Отходы</th>
<th class="vertikal_text">Всего древесной массы</th>
</tr>
<!--error--><br />
<b>Warning</b>: implode() [<a href='function.implode'>function.implode</a>]: Invalid arguments passed in <b>Z:\home\localhost\www\Tab.php</b> on line <b>46</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><!--error--><br />
<b>Warning</b>: implode() [<a href='function.implode'>function.implode</a>]: Invalid arguments passed in <b>Z:\home\localhost\www\Tab.php</b> on line <b>55</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script>Array
(
[0] =>
)
<!--error--><br />
<b>Warning</b>: mysql_num_rows() expects parameter 1 to be resource, boolean given in <b>Z:\home\localhost\www\Tab.php</b> on line <b>59</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><tr><td rowspan="3"></td></tr><!--error--><br />
<b>Warning</b>: implode() [<a href='function.implode'>function.implode</a>]: Invalid arguments passed in <b>Z:\home\localhost\www\Tab.php</b> on line <b>74</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><!--error--><br />
<b>Warning</b>: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in <b>Z:\home\localhost\www\Tab.php</b> on line <b>78</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><!--error--><br />
<b>Warning</b>: mysql_fetch_array() expects parameter 1 to be resource, boolean given in <b>Z:\home\localhost\www\Tab.php</b> on line <b>88</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr><!--error--><br />
<b>Warning</b>: mysql_fetch_array() expects parameter 1 to be resource, boolean given in <b>Z:\home\localhost\www\Tab.php</b> on line <b>121</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script>
</table>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: isumin
(06.06.2014 в 19:15)
| | вы с warning разберитесь.
Скорей всего что-то с запросом в базу. Когда пишите запрос, то для диагностики делайте что-нибудь вроде:
<?
......
mysql_query("тут запрос") or die(mysql_error());
....
|
в данном случае будет выводиться ошибка, которая возникла при запросе к базе. | |
|
|
|
|
|
|
|
для: tvv123456
(06.06.2014 в 19:21)
| | Спасибо! Теперь хоть понятно в каком направлении двигаться дальше.
$query1 = mysql_query("select
g.vid as vid,
COUNT(g.vid)+1 as koll
FROM tax as g
where g.kv=$kv and g.vid in (".implode(',',$str).")
GROUP BY g.vid "
);
|
Вроде работает | |
|
|
|
|
|
|
|
для: isumin
(06.06.2014 в 19:23)
| | даже не знаю, что сказать :(
Вы вообще знаете, что значит каждая строчка данного запроса и что она делает? | |
|
|
|
|
|
|
|
для: tvv123456
(06.06.2014 в 19:29)
| | В принципе да.
Имеется таблица в БД :
vid kv
2 1
2 1
2 1
3 1
3 1
дальше запросом выбираем уникальные значение колонки vid (проще сказать группируем GROUP BY g.vid) но при этом необходимо потом объединить ячейки на количество определенных vid, для этого мы определяем сколько строк сгруппировалось в одну строка и прибавляем единицу( точно не могу сказать зачем прибавляем единицу, было практический изучено что не хватает одной строки) (COUNT(g.vid)+1 as koll)
и все это при условии что g.kv равен данным внесенных в форме ввода и множеству данных $str ($str имеет вид данных через запятую 5,4,3,8 и т.д.)
select
g.vid as vid2, -
COUNT(g.vid)+1 as koll
FROM taxsaz as g
where g.kv=$kv and g.vid in (".implode(',',$str)."
GROUP BY g.vid " | |
|
|
|
|
|
|
|
для: isumin
(06.06.2014 в 19:44)
| | да просто в первом варианте было g.vid as vid - ерунда какая-то. | |
|
|
|
|
|
|
|
для: tvv123456
(06.06.2014 в 20:12)
| | Да по сути у меня по моему сам подход решения задачи не правильно выбран был, скорей всего надо все заново начинать. | |
|
|
|
|
|
|
|
для: isumin
(06.06.2014 в 18:42)
| | Проблему не решил, но нашел описание альтернативного метода. может кто подробнее объяснить как это сделать?
"Могу предложить другой подход -- без rowspan'ов, с выводом пустой ячейки. Механизма примерно такая:
1. Запоминаем и выводим значение ячейки в первой строке
2. Для всех последующих:
3. если значение совпадает с запомненным -- выводим пустую ячейку (<td></td>)
4. иначе снова запоминаем и выводим ячейку
5. goto 2 пока не добежим до конца" | |
|
|
|