Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Постраничная разбивка табицы из базы


Автор: studentigor 30.12.2009, 14:33
Доброго времени суток!!!
Код

for($nn=$this->start;$nn<=$this->end;$nn++)
            {
                do
                    {
                        $table = $table.'<tr><td>'.$n.'</td>';
                        $table = $table.'<TD>'.$myrow[$nn]['kat_tovara'].'</TD>';
                        $table = $table.'<TD>'.$myrow[$nn]['name'].'</TD>';
                        $table = $table.'<TD>'.$price = ($myrow[$nn]['price']-(($myrow[$nn]['price']/100)*$myrow[$nn]['VIP'])).'</TD>';
                        $table = $table.'<TD>'.$price = ($myrow[$nn]['price']-(($myrow[$nn]['price']/100)*$myrow[$nn]['regular'])).'</TD>';
                        $table = $table.'<TD>'.$price = ($myrow[$nn]['price']-(($myrow[$nn]['price']/100)*$myrow[$nn]['beginer'])).'</TD>';
                        $table = $table.'<TD>'.$myrow[$nn]['valyuta'].'</TD></TR>'; 
                    $n++;
                    }
                while($myrow[$nn] = mysql_fetch_array($result));
            }    

Хочу сделатьследующее:
Есть таблица в базе, у меня в ней 21 запись. Я хочу сделать чтобы на первой странице были записи от1 - 15, и соответственно на второй с 16-21.
Данный код должен это делать. 
$this->start - это переменная отвечает за начальную точку (для 1й страницы = 1, для 2й = 16, ...)
$this->end - Это конечная точка(для 1й странице = 15, и для 2й ,в моем случае, = 21)
И у меня не выдает ничего, ни таблицы, ни ошибок. 
Посмотрите пожалуйста. мож кто знает в чем моя ошибка. если нужно еще что нить знать - пишите, я раскаже.

Автор: patap 30.12.2009, 14:50
добавьте это в начало скрипта 
Код
error_reporting(E_ALL);


и вообще, Вам известна разница между циклами do...while и while?

и думаю стоит сначала убедиться что result действительно вернул то, что нужно


для постраничного разбиения разумнее использовать "LIMIT n, m" в SQL запросе, передавая в него n и m

Автор: studentigor 30.12.2009, 15:04
Разницу знаю.
Дело в том что когда скрипт без цикла фор - выводит все 21 запись.
добавил то что Вы мне посоветовали выдало просто число "6135"

Автор: Ипатьев 30.12.2009, 15:11
studentigor, неужели вы не понимаете, что ваш скрипт, по идее, должен 15 раз вывести 21 сообщение из базы данных?

Автор: studentigor 30.12.2009, 15:27
Так да. Спасибо
а если поменять for и while местами
тогда по идее должно выполнять то что мне нужно?

Добавлено через 5 минут и 10 секунд
И вот что самое главное, оставлью только один цикл while, и все работает, все выводит.

Автор: Ипатьев 30.12.2009, 15:48
Цитата(studentigor @  30.12.2009,  15:27 Найти цитируемый пост)
а если поменять for и while местами

от перемены мест слагаемых сумма не меняется - учили нас в третьем классе! начальной школы.
множителей это тоже касается
что ж за программисты-то пошли такие, уже и арифметику не знают

какая разница, 15 раз выполнить по 21 разу, или 21 раз вполнить 15 действий?

зачем вообще заключать один циал в другой, умножая итерации?

если карусель делает 10 оборотов, а надо прокатиться только 5, то по вашей логике надо купить ПЯТЬ билетов и откатать 5 раз по 10 кругов!
вот логика ваших циклов

Автор: studentigor 30.12.2009, 15:51
все понял!!!

Автор: bars80080 30.12.2009, 15:53
у тебя должен быть один цикл for

здесь же куча тем про постраничную навигацию. поищи по разделу

Автор: Ипатьев 30.12.2009, 16:12
Цитата(studentigor @  30.12.2009,  15:51 Найти цитируемый пост)
все понял!!! 

рановато для такого заявления.

в простейшем варианте можно сделать только циклом. for или while 
даже лучше будет, чтобы понятиь, наконец, что такое цикл

но потом надо будет научиться пользоваться базой данных. 

Автор: studentigor 30.12.2009, 16:25
у меня просто есть рабочий скрипт который всё это делает нормально, но я его писал уже давненько и не в ооп. 
Хотел просто всё это сделать в классе. чуть не получается
Что-то я не дружу с классами.
Извините что отвлек. 
Всем спасибо!!!

Автор: Ипатьев 30.12.2009, 16:34
проблема здесь, к сожалению, совсем не в ООП

Автор: studentigor 30.12.2009, 16:45
Но так у меня ведь получилось сделать.
Значит моя проблема - ооп. И там впринципе все переменные получил, но с выводом таблици - проблема.
там у меня просто когда я считаю сколько у меня записей - я базу загоняю в двумерный массив
а потом, уже в форе - вывожу ту строчку которая мне нужна.
а здесь надо еще почитать чучуть работу с масивами.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)