Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод по несколько картинок в строке
 
 автор: kisit   (27.02.2008 в 18:42)   письмо автору
 
 

Всем привет! Столкнулся с такой проблемой: не могу додумать как сделать вывод скажем по 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(
$myrowmysql_fetch_array($result));
?>
</table>

Но так естественно не красиво, хочется чтобы было по 3 штучки в каждем рядке.
Заранее огромное спасибо!!!!!!!!!

   
 
 автор: sim5   (27.02.2008 в 18:52)   письмо автору
 
   для: 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>&nbsp;</TD>"//последнее для таблицы с рамкой
  
if (!($i+$col)) print "</TR>";
}
print 
"</TABLE>";

Короче, делите по модулю на нужное число колонок.

   
 
 автор: kisit   (27.02.2008 в 23:28)   письмо автору
 
   для: sim5   (27.02.2008 в 18:52)
 

тоесть нужно загнать все значения в массив? или как? можно поподробнее пожалуйста!

   
 
 автор: sim5   (28.02.2008 в 06:33)   письмо автору
 
   для: kisit   (27.02.2008 в 23:28)
 

Зачем загонять в массив то, что вы уже получаете в виде массива после обращения к базе? Далее вам надо просто вывести его в таблице с N числом колонок. Если вы используете таблицу как элемент форматирования, то в примере можно убрать лишнее, которое нужно в случае визуального отображения таблицы. Другими словами - пустая ячейка таблицы должна содержать &nbsp; , а число итераций цикла раскладвающее массив данных, в этом случае должно быть кратно числу колонок таблицы. Как вам нужно я не знаю, но вся суть проста, делите итерацию цикла по модулю - на требуемое число колонок. Деление по модулю - это остаток от деления, т.е., если число делится без остатка, то получим 0.

<?
//если начало новой строки открываем ее 
if (!($i $col)) print '<TR>'//если не понятно так, можно писать if ($i % $col == 0)
//далее просто выводим ячейку с данными
//в случае, если таблица как элемент форматирования, то просто
print "<TD><img src=".данные из базы."></TD>";
//проверяем закрывать или нет строку таблицы,
//плюсуя 1 к текущей итерации
if (!($i+$col)) print "</TR>"//или так if ($i+1 % $col == 0) 

Вы можете написать иначе, используя этот подход. Что касается:

<?
$n 
= ($col>count($arr) || !(count($arr)%$col)) ? count($arr) : count($arr)+($col-count($arr)%$col);

то в случае, если таблица просто как элемент форматирования, то эту строку можно вообще убрать. Она всегда добавляет число итераций цикла до кратного выбранному числу колонок в таблице, и нужна только при отображении таблицы, например, рамки, цвет ячеек и т.п.. Если это нужно, то в примере при выводе ячейки это учитывается. Можно поступить иначе, например, если выводить по три колонки, и для последней строки останется два или одно изображение, то можно добавлять атрибут colspan ячейке, центрируя оставшиеся избражения в последней строке. Код в этом случае будет другой.

Все, более подробно я не знаю как.)

   
 
 автор: mihdan   (28.02.2008 в 10:19)   письмо автору
 
   для: sim5   (28.02.2008 в 06:33)
 

Спасибо sim5, давно не мог решить как посчитать $n


<?
$n 
= ($col>count($arr) || !(count($arr)%$col)) ? count($arr) : count($arr)+($col-count($arr)%$col); 
?>

   
 
 автор: kisit   (28.02.2008 в 15:47)   письмо автору
 
   для: mihdan   (28.02.2008 в 10:19)
 

Спасибо большое!!! Разобрался.....чтоб мы делали без таких людей!!!!

   
 
 автор: Ёлкотряс   (22.03.2008 в 18:59)   письмо автору
 
   для: kisit   (28.02.2008 в 15:47)
 

Не могли бы Вы написать, какой код в итоге получился, из того примера, что приводился в начале?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования