Вывод данных в цикле.

pess

Новичок
Вывод данных в цикле.

Доброго времени суток. Помогите решить проблему.
Необходимо вывести в цикле массив. Но вся закавыка получилась у меня в том, что таблица в HTML выглядит примерно так

PHP:
<tr><td>веники дворовые - кол-во</td><td>Веники березовые - кол-во</td></tr>
         <tr><td>Веники для дома  - кол-во</td><td>Веники для  - кол-во</td></tr>
Из базы вытаскиваю
PHP:
$result = mysql_query("SELECT vid,kol FROM venik",$db);
$row = mysql_fetch_array($result);


do
{
print <<<HERE
<tr>$row[vid] - $row[kol]</td><td>$row[vid] - $row[kol]</td></tr>
<tr><td>$row[vid]  - $row[kol]</td><td>$row[vid]  - $row[kol]</td></tr>
HERE;
}
while ($row = mysql_fetch_array($result));
Если делаю так, то соответственно цикл во всех 4 полях выводит одно и тоже значение 4 раза и потом достает новое. Почему он так делает я понимаю, но вот никак не могу понять как мне реализовать вывод именно с несколькими рядами.
 

Фанат

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

-~{}~ 13.06.09 11:13:

pess
давай упростим задачу. выводить будем не в таблицу, а ставя просто <br>

какой код HTML должен получиться, если ты выводишь каждый веник на свой строчке, и какой - по два?
 

cDLEON

Онанист РНРСlub
$row = mysql_fetch_array($result);


do
{
print <<<HERE
<tr>$row[vid] - $row[kol]</td><td>$row[vid] - $row[kol]</td></tr>
<tr><td>$row[vid] - $row[kol]</td><td>$row[vid] - $row[kol]</td></tr>
HERE;
}
while ($row = mysql_fetch_array($result));
Во-первых так делать нельзя, т.к. если выборка будет пустой, то цикл всё равно выведет ХТМЛ, в котором все значения будут пустые.
while($row=...) {
}
В случае с "дроблением" вывода - используется счётчик. (простая переменная, которая с каждым проходом цикла увеличивается на 1)
А потом проверяется делится ли этот счётчик на необходимое количество данных в одну строку. И если делится, то выводится закрывающий\открывающий теги.
Для проверки используем ПХПшную операцию $var%$count (она получает остаток от деления)
Дальше пошла математика...
Вроде всё разжевал :)
ЗЫ. Не смотри больше Попова.
 

Фанат

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

pess

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

Фанат

oncle terrible
Команда форума
pess
здесь вряд ли можно что-то подсказать.
тут надо просто представлять себе, как все происходит.
 

pess

Новичок
мне хотелось бы знать какими операторами или функциями это выполняется, а там методом проб и ошибок, добьюсь и понимания и всего остального. Подскажите в какую сторону копать
 

Фанат

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

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

-~{}~ 13.06.09 22:06:

ты знаешь, что означает слово "алгоритм"?
 

pess

Новичок
Набор конкретных действий, выполняющихся последовательно для получения результата ИМХО.
Построчно я вывести могу, это просто. А вот который хочу получить пока не додумал.
 

Фанат

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

а перед алгоритмом надо придумать хтмл, да
 

pess

Новичок
хтмл я придумал, алгоритм тоже => захожу в таблицу =>вытаскиваю необходимые мне переменные в массиве=>и вывожу их истинное значение посредством хтмл юзеру.
Или я не догоняю, что вы пытаетесь мне объяснить?
 

Фанат

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

-~{}~ 13.06.09 22:29:

"зашел, достал, показал"
хм. и не только в веб...
 

pess

Новичок
я так понимаю, мне необходимо в цикле, в моем случае do while, прописать условие, а уже за рамками скрипта выводить необходимую мне переменную $kol - посредством echo
 

pess

Новичок
ошибся, за рамками цикла
PHP:
do
{
условие
}
while ($row = mysql_fetch_array($result));

print <<<HERE
<tr>$row[vid] - $row[kol]</td><td>$row[vid] - $row[kol]</td></tr>
<tr><td>$row[vid]  - $row[kol]</td><td>$row[vid]  - $row[kol]</td></tr>
HERE;
В условии я должен задать что каждые $row[vid] - $row[kol] переменные уникальны и первая = первой, второй раз когда я ее вставляю она уже вторая и тд.
Но вот как выполнить это не понимаю. В БД у меня 3 поля id vid kol. мне каждый раз на 1 увеличивать id?
 

Фанат

oncle terrible
Команда форума
не понял. ты хочешь написать вывод всех значений заранее?
а если у тебя в базе станет не 4 значения, а 5 - будешь скрипт переписывать, еще одно <td>$row[vid] - $row[kol]</td> добавлять?
 

pess

Новичок
я пытаюсь понять как мне вообще это сделать?
Если я напишу так
PHP:
do
{
print <<<HERE
<tr>$row[vid] - $row[kol]</td></tr>
HERE;
}
while ($row = mysql_fetch_array($result));
То в каждой новой строке все выведется все нормально, но будет не красиво.
я определил что у меня будет 5 колонок, сколько рядов, уже не важно - это будет зависеть от кол-ва наименований.

-~{}~ 13.06.09 23:11:

Автор оригинала: *****
не понял. ты хочешь написать вывод всех значений заранее?
а если у тебя в базе станет не 4 значения, а 5 - будешь скрипт переписывать, еще одно <td>$row[vid] - $row[kol]</td> добавлять?
Уже и на это был согласен, главное чтобы заработало
 
Сверху