Меню по алфавиту

Vallar_ultra

Любитель выпить :)
dirol

while - это не функция, а синтаксическая конструкция. На будущее...
 

Фанат

oncle terrible
Команда форума
а что записано внутри скобок в while?

-~{}~ 19.01.07 19:55:

и у тебя остались ли ещё вопросы по разбивке на страницы?
 

dirol

Новичок
внутри скобок написано условие до которого следует выполнять цикл.

пока делаю сам, будут вопросы - обязательно задам.

Спасибо

-~{}~ 19.01.07 21:59:

Если кому-то не сложно, то проверьте, пожалуйста, правильность моих рассуждений.
Чтобы было легче разбить наименования из БД на колонки накропал пример, итак:

<?php
$temps= array("Привет", "Пока", "Здравствуй",
"Приветствую", "Как дела?", "Великолепно",
"Наверное", "Может быть", "Ну и что",
"Массив", "Второй массив", "Думаю",
"Праздник", "Добро", "Зло"); //Здесь просто определяем массив...

$colls = 2; //определяем переменную colls, которая будет давать нам знать, сколько мы хотим столбцов
$count = count($temps); //считаем количество значений в массиве
$i=0; //определяем переменную i для строк???
echo "<table border=1>"; //выводим таблицу
foreach($temps as $key => $values) { //проходимся по массиву
if($i%$colls==0) echo '</tr><tr>'; //здесь не совсем понятно, проясните, пожалуйста
echo "<td>$values</td>"; //в каждой строке вводим значение из массива
$i++; //увеличиваем на 1 количество строк
}
?>
делал по образцу, прошу помочь с этим:
if($i%$colls==0) echo '</tr><tr>'
и
$i=0;

Буду благодарен

-~{}~ 19.01.07 22:01:

буду всем признателен за советы
 

Фанат

oncle terrible
Команда форума
оператор % возвращает остаток от деления.

Переменную определяем не для i строк, а вообще, чтобы она была. чтобы твердо знать две вещи:
1. что она у нас есть.
2. что её значение - 0, а не 199 или -300.

логично?
 

dirol

Новичок
Фанат, да вполне.
но как обозначить, что количество строк не должно быть больше 10?

-~{}~ 19.01.07 22:22:

т.е. получается,
if($i%$colls==0) - по-русски, если остаток от деления 0 на 2(в нашем случае) равен нулю, то мы выводим дополнительную ячейку(строку)?
 

Фанат

oncle terrible
Команда форума
количество строк задаётся не здесь, а в запросе к базе.
зачем их вообще запрашивать, если не собираемся выводить?
сооответственно, используется LIMIT в запросе, и записей всегда бывает не больше 10
 

dirol

Новичок
Фанат, стоп...если мы воспользуемся LIMIT, то мы получим ВСЕГО 10 строк (к примеру), а нужны все.
Я хочу поставить ограничение на формирование таблицы, а именно, чтобы количество строк было не больше X, а количество столбцов сколько угодно.
Вот я и спрашиваю, как задать ограничение в коде на количество строк?
Для этого, мне же не нужно ставить ограничение с помощью LIMIT&
 

Фанат

oncle terrible
Команда форума
странное желание.
ну, раз так, тогда думай.
все данные у тебя есть. хочешь 10 строк - выводи 10 строк. хочешь 5 - выводи 5. разницы никакой
 

dirol

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

Фанат

oncle terrible
Команда форума
блин, ты определился бы.
а то мечешься из стороны в сторону.
то ограниченное, то неограниченное.

количество записей на странице определяется лимитом.
количество столбцов или строк - оператором, который вызвал у тебя такие затруднения.
вопросы ещё остались?
 

BubenPupen

Новичок
Автор оригинала: dirol
Фанат, да вполне.
но как обозначить, что количество строк не должно быть больше 10?

-~{}~ 19.01.07 22:22:

т.е. получается,
if($i%$colls==0) - по-русски, если остаток от деления 0 на 2(в нашем случае) равен нулю, то мы выводим дополнительную ячейку(строку)?
Нет, ты не так понял.
Переменная $i является неким счетчиком. Перед циклом ты ее объявляешь равной 1. Затем, в каждой итерации ты увеличиваешь её на 1 ($i++). То есть эта переменная служит как показатель того, сколько у тебя элементов в данный момент.
Переменная $colls у тебя должна быть равной количеству строк в столбце. Ты же хочешь 10 строк ?
Тогда $colls = 10;
Далее - if ($i%$colls==0) { тут твой код(закрываешь предыдущий столбец, открываешь новый) }
Смотри, в первой итерации цикла у тебя $i=1, $colls=10; 1/10 - остаток не ноль, значит условие в скобках не выполнится.
Во второй итерации у тебя $i=2 (ты ведь ее увеличил в прошлой итерации), 2/10 - остаток так же не 0.
И вот так дальше, пока у тебя $i не будет равной 10 (10/10 - остаток 0). Вот тогда и выполнится твой код в скобках.
То есть, если у тебя, скажем, 25 записей, у тебя должно быть 3 столбца, верно ?
Первый ты создаешь сам, второй создастся когда $i будет равной 10, а третий когда $i будет равной 20.
 

dirol

Новичок
Фанат, я хочу делать по степени увеличения трудности (по крайней мере для меня)
сначала решить одну задачу, потом другую :)
BubenPupen, спасибо...буду пробывать...
 

Фанат

oncle terrible
Команда форума
я хочу делать по степени увеличения трудности
это правильно. других надо заставлять так делать, а ты сам. молодец.
ну, делай.
когда сделаешь, я тебе покажу более красивое решение =)
 

dirol

Новичок
BubenPupen, т.е. получается сам код мы практически не меняем, а меняем только тэги <tr></td> и т.д.?


И еще вопрос: почему именно так: </tr><tr>
а не как обычно <tr></tr>?
 

dirol

Новичок
Да, перепутал..
окончательно запутался. Сегодня весь день думал, и за рулем, и за ужином, как осуществить мою идею...
итак, еще раз...все заново

<?php
$colls = 4; //определяем переменную colls, которая будет давать нам знать, сколько мы хотим строк
$count = count($temps); //считаем количество значений в массиве
$i=0; //
echo "<table border=1>"; //выводим таблицу
foreach($temps as $key => $values) { //проходимся по массиву
if($i%$colls==0) echo '</tr><tr>'; //<b>здесь не совсем понятно, проясните, пожалуйста</b>
echo "<td>$values</td>"; //в каждой строке вводим значение из массива
$i++; //увеличиваем на 1 количество строк
}
?>
что же стоит изменить? Наверное, это? </tr><tr> Но как?
 

Фанат

oncle terrible
Команда форума
поскольку ты путаешься в html, то предлагаю тебе форматировать не таблицей, а просто выводить слова через пробел, а строку завершать тегом <br>. как тебе идейка?

во-первых, в слове columns одна буква l
во-вторых, слово columns означает колонки а не строки. а строка будет, в данном контексте - $row
в-третьих, если ты о строках, то вопрос - а сколько будет колонок?
ответь себе сначала на эти вопросы.

когда же от простого форматирования вернёшься обратно к HTML, то ПЕРВЕЙШИМ ДЕЛОМ сначала рисуешь желаемую таблицу РУКАМИ! И делаешь так ВСЕГДА - сначала рисуешь хтмл руками, а потом уже пишешь пхп скрипт, который этот хтмл формирует.
поскольку ты сейчас решаешь одновременно две задачи: как должен выглядеть хтмл, и какой скрипт его будет выводить. В результате получается совсем смешно - ты пишешь скрипт, который неизвестно что выводит! Отсюда и твои проблемы
 

dirol

Новичок
Фанат, количество колонок зависит от количества элементов в массиве.
 

Фанат

oncle terrible
Команда форума
странная идея.
обычные юзеры предпочитают скроллинг вниз.
а твои, судя по всему, какие-то эстеты - им нравится двигать страницу вправо.
ну что ж. как ты себе это представляешь в виде HTML?

и ещё. я не спрашивал, от чего зависит количество колонок.
я спрашивал, где вычисление этого количества. в зависимости от количества элементов в массиве
 

dirol

Новичок
Фанат
хм...может действительно глупая идея...
Ладно, сделаю, посмотрим..


как ты себе это представляешь в виде HTML?
может быть так?
<table>
<tr>
<td>Колонка 1</td>
<td>Колонка 2</td>
</tr>
<tr>
<td>Колонка 11</td>
<td>Колонка 22</td>
</tr>
</table>
 
Сверху