bugmenot
9.03.2009 - 04:33
Идея скрипта такая - надо выводить по 5 картинок на строку.
Косяк в том, что тут цикл в цикле.
Если закрываю оба цикла, то ругается на второй endwhile. Если не пишу 2 endwhile, получается бесконечный цикл.
PHP |
<?php include("./upload/config.php"); $query = "SELECT * FROM tpics"; $result = mysql_query($query); while ($cellid != 5) { while ($row = mysql_fetch_array($result)) : echo '<td height="170" width="170" align="center"> <a href=info.php?id='.$row["id"].'><img src=/upload/files/tn/'.$row["imgname"].'></a></td>'; $cellid=$cellid+1; endwhile; }
echo '<br>'.$cellid;
|
Спустя 1 час, 6 минут, 32 секунды (9.03.2009 - 04:40) kirik написал(а):
Попробуй так:
PHP |
$rows = 0; $query = "SELECT `id`, `imgname` FROM tpics"; $result = mysql_query($query); while($row = mysql_fetch_array($result)) { if($i%5 == 0) echo ' <tr>';
echo ' <td height="170" width="170" align="center"> <a href=info.php?id='.$row['id'].'><img src=/upload/files/tn/'.$row['imgname'].'></a> </td>';
if($i%5 == 4) echo ' </tr>';
$rows++; } mysql_free_result($result); |
только подумай, как сделать, если последний проход выдаст не 5 картинок (тогда tr не закроется)
Спустя 7 часов, 6 минут, 12 секунд (9.03.2009 - 11:46) Семён написал(а):
У меня была похожая как-то задача только нужно было вывести картинки в колонки... и там была регулировка по сколько в каждой ячейке..... потратил на закрывание / открывание табличных <tr> <td> около часа...
Если просто вывод на строку, то не проще использовать <br/> ?
Спустя 2 минуты, 52 секунды (9.03.2009 - 11:49) bugmenot написал(а):
kirikтерь выводит по 1 картинке в строчку.
Спустя 1 час, 8 минут, 49 секунд (9.03.2009 - 12:58) Sylex написал(а):
bugmenot
так думай головой!
PHP |
$rows = 0; $query = "SELECT `id`, `imgname` FROM tpics"; $result = mysql_query($query); while($row = mysql_fetch_array($result)) { if($rows%5 == 0) echo ' <tr>';
echo ' <td height="170" width="170" align="center"> <a href=info.php?id='.$row['id'].'><img src=/upload/files/tn/'.$row['imgname'].'></a> </td>';
if($rows%5 == 4) echo ' </tr>';
$rows++; } mysql_free_result($result); |
Спустя 7 минут, 58 секунд (9.03.2009 - 13:06) bugmenot написал(а):
Sylexу мну особенность - я могу думать головой только если код писал я

Пасибо
Спустя 4 минуты, 26 секунд (9.03.2009 - 13:10) Sylex написал(а):
bugmenotт.е. ты хочешь чтобы делали все за тебя? Ты так никогда ничему не научишься!

что значит знак % в данном коде, а?
Спустя 13 минут (9.03.2009 - 13:23) bugmenot написал(а):
Sylex
Вродь если остаток равен...
Нет, не хочу. Но я понимаю только свой код %)
Спустя 8 часов, 29 минут, 59 секунд (9.03.2009 - 21:53) kirik написал(а):
Цитата (bugmenot @ 9.03.2009 - 05:06) |
я могу думать головой только если код писал я rolleyes.gif |
Вот проблема тоже! Перепиши!
Вот тебе еще подсказка (уже полностью рабочая, с закрытием последнего tr):
PHP |
$total = 17; // Количество элементов $inrow = 5; // Количество колонок
// ------------- $empty = 0; // Количество пустых ячеек
while(($empty+$total)%$inrow) // Считаем сколько ячеек не хватает, чтобы заполнить последний ряд $empty++;
echo '<table border="1">'; for($i = 0; $i < $total+$empty; $i++) { if($i%$inrow == 0) echo "\n\t<tr>";
echo ($i < $total) ? "\n\t\t<td>{$i}</td>" : "\n\t\t<td>--</td>";
if($i%$inrow == $inrow-1) echo "\n\t</tr>";
} echo "\n</table>"; |
Тебе нужно лишь применить это к своему коду