Войти

Показать полную графическую версию : [решено] Помогите с версткой


Bullet-Avalon
27-09-2009, 10:25
Вот дело в следующем, имеется БД с ссылками на изображения, хочу чтобы на странице сайта было чтото врде фотоальбома, чтобы скриптик вытаскивал из бд изображения и выстраивал их как на след скрине
http://s48.radikal.ru/i119/0909/b7/d55e8f83bfd9t.jpg (http://radikal.ru/F/s48.radikal.ru/i119/0909/b7/d55e8f83bfd9.jpg.html)
Во всем вроде разобрался, но не пойму что нужно написать в цикле
Do
{ printf("...")}
while ();
Чтобы именно в КАЖДОЙ СТРОКЕ БЫЛО ОПРЕДЕЛЕННОЕ кол-во картинок - например 3.
Подскажите....

Coutty
27-09-2009, 11:01
$td_in_tr = 3; // количество ячеек в строке
for ($i = 0; $i < $num_of_images; $i++)
{
if ($i % $td_in_tr == 0) echo "<tr><td><img ... ></td>"; // если номер текущей картинки делится на 3 без остатка, начинаем новую строку
else if ($i % $td_in_tr == ($td_in_tr - 1)) echo "<td><img ... ></td></tr>"; // если остаток = 2, то строку заканчиваем
else echo "<td><img ... ></td>"; // иначе просто внутренняя ячейка
}
И ещё можно добавить некоторое количество пустых ячеек (или какую-нибудь проверку) на тот случай, если картинок не хватает на заполнение всех строк полностью.

Bullet-Avalon
27-09-2009, 11:04
Coutty, Спасибо, ща попробуем.....

Bullet-Avalon
27-09-2009, 11:36
Блин чето не врублюсь с этим кодом, как его связать с БД, точнее какие строки в бд нужны и куда их выводить....

Coutty
27-09-2009, 12:12
Куда выводить:
$td_in_tr = 3; // количество ячеек в строке
for ($i = 0; $i < $num_of_images; $i++)
{
$res = mysql_fetch_assoc($result); // $result - результат sql-запроса ($result = mysql_query("SELECT * FROM..."))
if ($i % $td_in_tr == 0) echo "<tr><td><img src='" . $res['path'] . "' /></td>"; // если номер текущей картинки делится на 3 без остатка, начинаем новую строку
else if ($i % $td_in_tr == ($td_in_tr - 1)) echo "<td><img src='" . $res['path'] . "' /></td></tr>"; // если остаток = 2, то строку заканчиваем
else echo "<td><img src='" . $res['path'] . "' /></td>"; // иначе просто внутренняя ячейка
}
А уж какие строки нужны - это вам должно быть виднее.

Bullet-Avalon
27-09-2009, 12:14
Coutty, аа понятно, спс еще раз, щас будим разбираться....

Bullet-Avalon
28-09-2009, 09:46
Coutty, хотел попросит вас, если не сложно, вот вроде я подогнал свой код:

<table>
<?php
$result=mysql_query("SELECT Name,id,link FROM images");
$myrow = mysql_fetch_array($result);
$td_in_tr = 3; // количество ячеек в строке
$num_of_images=$myrow['id'];
for ($i = 0; $i < $num_of_images; $i++)
{
if ($i % $td_in_tr == 0) echo "<tr><td><img src='" . $myrow['link'] . "' /></td>"; // если номер текущей картинки делится на 3 без остатка, начинаем новую строку
else if ($i % $td_in_tr == ($td_in_tr - 1)) echo "<td><img src='" . $myrow['link'] . "' /></td></tr>"; // если остаток = 2, то строку заканчиваем
else echo "<td><img src='" . $myrow['link'] . "' /></td>"; // иначе просто внутренняя ячейка
}
?>
</table>

Тоесть здесь я вывожу ячейки в таблицу, выбираю из БД поля
Name - имя картинки,
id - которое в последствии приравниваю к $num_of_images,
Link - ссылка на картинку
Вот хотел бы у вас спросить правильно ли составлен код?

Coutty
28-09-2009, 18:30
Неправильно.
$myrow = mysql_fetch_array($result);
Эта строка кода говорит: поместить в массив $myrow следующую строку из SQL-выборки. Но строк-то выбирается много, а вы вызываете только 1 раз. Надо поместить данную строку внутрь цикла, чтобы она вызывалась каждый раз.
$num_of_images=$myrow['id'];
Это и вовсе непонятно что такое. Для определения количества строк используется функция:
$num_of_images = mysql_num_rows($result);

Bullet-Avalon
28-09-2009, 20:43
ОК, спасибо, будим пробовать :)




© OSzone.net 2001-2012