Пыха всегда с тобой

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 24 Май, 2012, 07:12:20

Страниц: [1]
Печать
Автор Тема: Вывод элементов по несколько в строку  (Прочитано 2926 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vasa_c    ↓ 
20 Июль, 2007, 11:14:24
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

С завидной регулярностью появляются темы вроде: "подскажите, как вывести данные из БД, по 3шт (4, 5...) в строку, примерно таким макаром:.
Text (Unknown Language)

Раз    Два    Три
Четыре Пять   Шесть
Семь
 

Данная задача состоит из двух, практически не связанных между собой, подзадач:
1. Получить нужные данные из базы. Получить, точно так же, как вы их получаете, когда не надо выводить по 3 в строчку.
2. Вывести данные. Алгоритм вывода никак не зависит от того, берете вы данные из базы или из файла или формируете прямо в сценарии.
 
Вобще-то алгоритм из п.2. элементарный. Нужно на самом начальном уровне знать язык, математику и немного подумать. Но на первый раз, рассказываю.
 
Простейший пример:
PHP

define('Q_EL_STRING', 3); // Количество элементов в строке
$data = Array('Раз', 'Два', 'Три', 'Четыре', 'Пять', 'Шесть', 'Семь'); // Получили данные. Откуда угодно.
 
/* Выводим */
$counter = 0;
foreach ($data as $element) {
    $counter++; // Позиция очередного элемента в строке
    if ($counter > Q_EL_STRING) {
        /* Вышли за предел строки */
        print '<br />'; // Перешли на новую строку
        $counter = 1;   // Элемент теперь первый в новой строке
    }
    print $element.' '; // Вывели элемент
}
 

А можно так:
PHP
$size = sizeOf($data);
for ($i = 0; $i < $size; $i++) {
    if (($i % 3) == 0) {
        print '<br />';
    }
    ...
}

Усложним задачу. Выводим все это в таблице.
 
PHP

define('Q_TD', 3); // Количество столбцов
$data = Array('Раз', 'Два', 'Три', 'Четыре', 'Пять', 'Шесть', 'Семь'); // Получили данные.
 
print '<table>';
 
$td = 0;
foreach ($data as $element) {
    $td++; // Номер столбца в текущей строке
    if ($td == 1) {
        print '<tr>'; // Первый столбец - открываем строку
    }
    print '<td>'.$element.'</td>';
    if ($td == Q_TD) {
        print '</tr>'; // Последний столбец - закрыли строку
        $td = 0; // Сбросили счетчик
    }
}
 
print '</table>';
 

В случае, если у таблицы есть бордюр вокруг ячеек, да и вообще для валидности кода, следует предусмотреть возможность, когда количество элементов не делется ровно на размер строки. После цикла, перед закрытием таблицы дополняем последнюю строку:
PHP

if ($td != 0) {
    for ($i = $td; $i < Q_TD; $i++) {
        print '<td> </td>';
    }
    print '</tr>'
}
 

Вот и всё. Ничего страшного.
« Последнее редактирование: 18 Сентябрь, 2007, 04:23:45 от vasa_c » Записан

Страниц: [1]
Печать
 

Перейти в: