|
|
|
| Всем привет! Столкнулся с такой проблемой: не могу додумать как сделать вывод скажем по 3 картинки в каждой строке.
По одной нечего делать
<table>
<?
$result = @mysql_query("SELECT name,id,img_mini FROM biography",$db);
$myrow = @mysql_fetch_array($result);
do
{
printf ("<tr><td><a href = 'biogr.php'> <img src = 'biography/%s'></a></tr></td>",$myrow['img_mini'],$myrow['name']);
}
while($myrow= mysql_fetch_array($result));
?>
</table>
|
Но так естественно не красиво, хочется чтобы было по 3 штучки в каждем рядке.
Заранее огромное спасибо!!!!!!!!! | |
|
|
|
|
|
|
|
для: kisit
(27.02.2008 в 18:42)
| |
<?
$arr = array('set1','set2','set3','set4','set5','set6','set7','set8');
$col = 3; //число колонок
$n = ($col>count($arr) || !(count($arr)%$col)) ? count($arr) : count($arr)+($col-count($arr)%$col); // только для случая когда таблица имеет рамку
print '<TABLE cellpadding="4" cellspacing="1" bgcolor="#000000">';
for ($i=0; $i<$n; $i++) {
if (!($i % $col)) print '<TR bgcolor="#ffffff">';
$arr[$i] ? print "<TD>$arr[$i]</TD>" : print "<TD> </TD>"; //последнее для таблицы с рамкой
if (!($i+1 % $col)) print "</TR>";
}
print "</TABLE>";
|
Короче, делите по модулю на нужное число колонок. | |
|
|
|
|
|
|
|
для: sim5
(27.02.2008 в 18:52)
| | тоесть нужно загнать все значения в массив? или как? можно поподробнее пожалуйста! | |
|
|
|
|
|
|
|
для: kisit
(27.02.2008 в 23:28)
| | Зачем загонять в массив то, что вы уже получаете в виде массива после обращения к базе? Далее вам надо просто вывести его в таблице с N числом колонок. Если вы используете таблицу как элемент форматирования, то в примере можно убрать лишнее, которое нужно в случае визуального отображения таблицы. Другими словами - пустая ячейка таблицы должна содержать , а число итераций цикла раскладвающее массив данных, в этом случае должно быть кратно числу колонок таблицы. Как вам нужно я не знаю, но вся суть проста, делите итерацию цикла по модулю - на требуемое число колонок. Деление по модулю - это остаток от деления, т.е., если число делится без остатка, то получим 0.
<?
//если начало новой строки открываем ее
if (!($i % $col)) print '<TR>'; //если не понятно так, можно писать if ($i % $col == 0)
//далее просто выводим ячейку с данными
//в случае, если таблица как элемент форматирования, то просто
print "<TD><img src=".данные из базы."></TD>";
//проверяем закрывать или нет строку таблицы,
//плюсуя 1 к текущей итерации
if (!($i+1 % $col)) print "</TR>"; //или так if ($i+1 % $col == 0)
|
Вы можете написать иначе, используя этот подход. Что касается:
<?
$n = ($col>count($arr) || !(count($arr)%$col)) ? count($arr) : count($arr)+($col-count($arr)%$col);
|
то в случае, если таблица просто как элемент форматирования, то эту строку можно вообще убрать. Она всегда добавляет число итераций цикла до кратного выбранному числу колонок в таблице, и нужна только при отображении таблицы, например, рамки, цвет ячеек и т.п.. Если это нужно, то в примере при выводе ячейки это учитывается. Можно поступить иначе, например, если выводить по три колонки, и для последней строки останется два или одно изображение, то можно добавлять атрибут colspan ячейке, центрируя оставшиеся избражения в последней строке. Код в этом случае будет другой.
Все, более подробно я не знаю как.) | |
|
|
|
|
|
|
|
для: sim5
(28.02.2008 в 06:33)
| | Спасибо sim5, давно не мог решить как посчитать $n
<?
$n = ($col>count($arr) || !(count($arr)%$col)) ? count($arr) : count($arr)+($col-count($arr)%$col);
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(28.02.2008 в 10:19)
| | Спасибо большое!!! Разобрался.....чтоб мы делали без таких людей!!!! | |
|
|
|
|
|
|
|
для: kisit
(28.02.2008 в 15:47)
| | Не могли бы Вы написать, какой код в итоге получился, из того примера, что приводился в начале? | |
|
|
|