Ограничить вывод в html-таблицу 4 столбцами...

Scrooge

Новичок
Ограничить вывод в html-таблицу 4 столбцами...

Добрый день.
Я с php и mysql на "Вы"... Порылся в форуме, но ответа для себя так и не нашёл...
Теоретические мысли в голове есть, но несколько абстрактные..., а по сему решил спросить у знатоков.

Имею:
SQL-таблицу, в которой содержится описание, ссылки и расположение pdf-документов и images к ним...
Документов около 30.

Хочу:
Организовать вывод в html-таблицу, ограниченную 4 столбцами. В каждой ячейке таблицы отображается описание документа и img-ссылка на сам документ.

Чего добился:
Пока добился того, что требуемая таблица строится либо в одну строку, либо в один столбец...
PHP:
function delo(){
	$query = "SELECT * FROM delo";
	$result = mysql_query ($query) or die ("Query failed");
	print "<table border=0>";
		while ($line = mysql_fetch_row($result)) {
			print "<tr>";
			print "<td align=center>";
			print "$line[1]<br>";
			print "<a href='$line[6]'><img src='$line[2]' width='$line[3]' height='$line[4]' border='$line[5]' alt='$line[1]'></a>";
			print "</td>";
	 		print "</tr>";
		}
	print "</table>";
}
 

sage

Новичок
поищи по форуму... такие вопросы очень часто здесь задаются....
 

Фанат

oncle terrible
Команда форума
Scrooge
я так понимаю, что у тебя проблема с алгоритмом.
ты можешь попробовать сделать всё самостоятельно - это совсем несложно.
просто при выводе ячеек в цикле, считать до 4 (то есть, увеличивать при каждом проходе переменную).
и как только она стала равна 4 - обнулять её и делать переход на следующую строку
 

Scrooge

Новичок
Порядок!!!
Поиск рулит! :)
На основании этого http://phpclub.ru/talk/showthread.php?postid=174799#post174799 решил свою задачу вот так:
PHP:
$config = 4; // колво столбцов
$zapros = "SELECT * FROM $table"; // запрос
$result = $db->query ($zapros);
$total = $result->NumRows (); // Количество строк в базе
$offset = ceil ($total / $config); // количество получаемых строк в html-таблице
echo "<table border=0>";

     for ($row = 0; $row < $offset; $row++) { // организуем цикл для строк
          echo "<tr>";
                 for ($col = 0; $col < $config; $col++) { // организуем цикл для столбцов
                      $data = $result->FetchRow();
                      echo "<td align=center>"; echo $data[1]; echo "<br>";
                      echo "<a href=";
                      echo $data[6];
                      echo "><img src="; echo $data[2]; echo " width="; echo $data[3]; echo " height="; echo $data[4]; echo " border="; echo $data[5];echo "></a>";
                      echo "</td>";
                      }
          echo "</tr>";
          }

echo "</table>";
 

Raul

Новичок
Scrooge
Ну, если в таком виде, то еще не плохо было бы поставить
в последней строке проверку на кол-во ячеек
(их ведь м.б. меньше 4-х)
 

Фанат

oncle terrible
Команда форума
не очень чисто ты сделал.
надо проверять, вернула ли тебе что-то $result->FetchRow

-~{}~ 23.06.06 15:26:

Raul
не надо там ставить проверку ячеек.
их-то, как раз, будет всегда сколько нужно
 

Raul

Новичок
Фанат
тьфу
Ты прав (как всегда?)
Но нотисы то пойдут?
 

Scrooge

Новичок
Фанат
Ты имел ввиду эту конструкцию?
if(!$data) {print "нет данных";} else {...}
 

Фанат

oncle terrible
Команда форума
нет. Я никогда не имею в виду такие глупые конструкции, которые ни с того ни с сего вдруг посреди заполненной таблицы выводят строчку "нет данных".

сделай error_reporting(E_ALL) - может, тогда поймёшь, что я имею в виду.
 

Scrooge

Новичок
Фанат
Я error_reporting(E_ALL) и не менял...
Просто на такие случаи ещё не напарывался...
Так как мне тогда лучше поставить проверку?
 

Фанат

oncle terrible
Команда форума
если у тебя $data пустая, то что тебе выведет скрипт вот в этой строчке?
echo $data[6];
 

Scrooge

Новичок
Фанат
Да, действительно...
Вот так гораздо лучше... Нет ни лишних сообщений, ни рамок от картинок...
PHP:
...
$data = $result->FetchRow();
if (empty($data)) continue;
echo "<td align=center>"; echo $data[1]; echo "<br>";
...
PHP:
Спасибо!
 

Фанат

oncle terrible
Команда форума
ужас. ты испортил весь подход.
зачем тебе тогда ceil и два вложенных цикла?
шаприл бы одним while.

вся прелесть такого подхода в том, что он рисует валидную html-таблицу.
по хорошему, надо инициализировать этот массив пустыми значениями (& nbsp), а картинку выводить, только если она есть.
тогда будет красиво
 
Сверху