Постараюсь передать всю суть проблемы. Имееться страница на которой отображена таблица с данными PHP: <?php $link = mysql_connect("localhost", "***", "***"); mysql_select_db("pomnim"); $query = "select * from shapka"; $result = mysql_query($query); echo "<table border=1 bgcolor=#DED4C4>"; while ($row = mysql_fetch_array($result)) echo "<tr align=center><td><B>", $row["fname"], "</B></td><td><B>", $row["name"], "</B></td><td><B>", $row["lname"], "</B></td><td><B>", $row["data_sm"], "</B></td><td><B>", $row["vozrast"], "</B></td><td><B>", $row["gorod"], "</B></td></tr>"; $query2 = "select * from name_d order by binary(fname)"; $result = mysql_query($query2); while ($row = mysql_fetch_array($result)) echo "<tr bgcolor=#F3F0E9><td>", $row["fname"], "</td><td>", $row["name"], "</td><td>", $row["lname"], "</td><td align=center>", $row["data_sm"], "</td><td align=center>", $row["vozrast"], "</td><td align=center>", $row["gorod"], "</td></tr>"; echo "</table>"; //Разбивка на страницы// // количество записей, выводимых на странице $per_page=10; // получаем номер страницы if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0; // вычисляем первый оператор для LIMIT $start=abs($page*$per_page); // составляем запрос и выводим записи // переменную $start используем, как нумератор записей. $q="SELECT * FROM `name_d` ORDER BY id LIMIT $start,$per_page"; $res=mysql_query($q); while($row=mysql_fetch_array($res)) { echo ++$start.". ".$row['fname']."<br>\n"; } // дальше выводим ссылки на страницы: $q="SELECT count(*) FROM `name_d`"; $res=mysql_query($q); $row=mysql_fetch_row($res); $total_rows=$row[0]; $num_pages=ceil($total_rows/$per_page); for($i=1;$i<=$num_pages;$i++) { if ($i-1 == $page) { echo $i." "; } else { echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> "; } } ?> Отображаеться таблица, а ниже еще список: 1. fname = id=1 2. fname = id=2 и так до 10. fname = id=10 потом ссылка на другую страницу (в данном случае 2) в ней отображаеться таже таблица ( с выводом всех данных) и соответственно ниже: 11. fname = id=11 12. fname = id=12 и т.п. Как заставить таблицу делиться на страницы, и отображать их в ссылках на стр.????? Плиз помогите, начинающему!
http://phpfaq.ru/paginator Check this out! З.Ы.:неплохо было бы,если ты юзал тег пхп для подсветки синтаксиса
на скорую руку =) Попробуй... PHP: <?php @mysql_connect("localhost", "***", "***"); @mysql_select_db("pomnim"); $query = "select * from shapka;"; $result = mysql_query($query); echo "<table border=1 bgcolor=#DED4C4>"; while ($row = mysql_fetch_array($result)) { echo "<tr align=center><td><B>".$row['fname']."</B></td><td><B>".$row['name']."</B></td> <td><B>".$row['lname']."</B></td><td><B>".$row['data_sm']."</B></td><td><B>".$row['vozrast']."</B></td> <td><B>".$row['gorod']."</B></td></tr>"; } $query2 = "select * from name_d order by binary(fname)"; $result = mysql_query($query2); while ($row = mysql_fetch_array($result)) { echo "<tr bgcolor=#F3F0E9><td>".$row['fname']."</td> <td>".$row['name']."</td><td>".$row['lname']."</td> <td align=center>".$row['data_sm']."</td> <td align=center>".$row['vozrast']."</td> <td align=center>".$row['gorod']."</td></tr>"; } echo "</table>"; //Разбивка на страницы// // количество записей, выводимых на странице $per_page=10; // получаем номер страницы $page=isset($_GET['page']):$_GET['page']?0; // вычисляем первый оператор для LIMIT $start=abs($page*$per_page); // составляем запрос и выводим записи // переменную $start используем, как нумератор записей. $q="SELECT * FROM `name_d` ORDER BY id LIMIT {$start},{$per_page};"; $res=mysql_query($q); while($row=mysql_fetch_array($res)) { echo ++$start.". ".$row['fname']."<br/>"; } // дальше выводим ссылки на страницы: $q="SELECT count(*) FROM `name_d`;"; $res=mysql_query($q); $total_rows=mysql_num_rows($q); $num_pages=ceil($total_rows/$per_page); for($i=1;$i<=$num_pages;$i++) { echo "<a href=".$_SERVER['PHP_SELF']."?page=".$i.">".$i."</a> "; } ?>
Дошол вот до чего, вроде логичнее, но неполучается PHP: <?php $link = mysql_connect("localhost", "***", "***"); mysql_select_db("pomnim"); //Разбивка на страницы// // количество записей, выводимых на странице $per_page=10; // получаем номер страницы if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0; // вычисляем первый оператор для LIMIT $start=abs($page*$per_page); // составляем запрос и выводим записи // переменную $start используем, как нумератор записей. $query = "select * from shapka"; $result = mysql_query($query); echo "<table border=1 bgcolor=#DED4C4>"; while ($row = mysql_fetch_array($result)) echo "<tr align=center><td><B>", $row["fname"], "</B></td><td><B>", $row["name"], "</B></td><td><B>", $row["lname"], "</B></td><td><B>", $row["data_sm"], "</B></td><td><B>", $row["vozrast"], "</B></td><td><B>", $row["gorod"], "</B></td></tr>"; $q="SELECT * FROM `name_d` ORDER BY fname LIMIT $start,$per_page"; $res=mysql_query($q); while($row=mysql_fetch_array($res)) $query2 = "select * from name_d order by binary(fname)"; $result = mysql_query($query2); while ($row = mysql_fetch_array($result)) echo "<tr bgcolor=#F3F0E9><td>", $row["fname"], "</td><td>", $row["name"], "</td><td>", $row["lname"], "</td><td align=center>", $row["data_sm"], "</td><td align=center>", $row["vozrast"], "</td><td align=center>", $row["gorod"], "</td></tr>"; echo "</table>"; // дальше выводим ссылки на страницы: $q="SELECT count(*) FROM `name_d`"; $res=mysql_query($q); $row=mysql_fetch_row($res); $total_rows=$row[0]; $num_pages=ceil($total_rows/$per_page); for($i=1;$i<=$num_pages;$i++) { if ($i-1 == $page) { echo $i." "; } else { echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> "; } } ?> Помогите плиз!
Че за муть? о_О PHP: while($row=mysql_fetch_array($res); $query2 = "select * from name_d order by binary(fname)"; Куда лимит делся? PHP: $query2 = "select * from name_d order by binary(fname)"; P.S. Учись оформлять код. P.P.S: используй [.php] а не [.code]
1) Code: $start=abs($page*$per_page); Почему так? Боишься получить отрицательный limit? Замени PHP: if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0; на PHP: $page=(isset($_GET['page']) and is_numeric($_GET['page']) and $_GET['page'] >= 0) : $_GET['page'] ? 0; Так будет честнее. 2) Нафиг в примере выводить шапку? Ее вывод как-то влияет на остальной скрипт? Нет. Ну и убери ее. 3) В последнем твоем коде нету { } после while, поэтому я так и не понял, зачем тебе 2 запроса к одной и той же таблице, когда у тебя уже есть массив _всех_ ее элементов. 4) Нет такого понятия, как пустая страница. Во-первых, посмотри сорс, во-вторых вруби PHP: error_reporting(E_ALL); ini_set('display_errors', '1'); 5) Вынеси в отдельную страницу запрос с limit и всеми относящимися к нему данными/вычислениями. Добейся, чтобы ?page=X выдавало нужные тебе результаты. 6) Венеси в отдельную страницу запрос с count(*), сделай тоже самое, что и с limit. 7) Когда и то и то будет работать совместить их не составит особого труда. 8) Формулировка "Не работает" никак не помогает понять, где именно ошибка и в каком месте что-то неверно. Учись охарактеризовывать действия скрипта точнее. 9) http://www.phpfaq.ru/debug
$page=isset($_GET['page']):$_GET['page']?0; Разве это не ошибка в коде lol'a? (выделил жирным голубым) Я бы сменил на: PHP: $page=intval($_GET['page']); $page=((!$page)==false)? $page:0;
PHP: echo ++$start.". ".$row['fname']."<br>\n"; Как здесь вывисти вот это: PHP: echo "<tr bgcolor=#F3F0E9><td>", $row["fname"], "</td><td>", $row["name"], "</td><td>", $row["lname"], "</td><td align=center>", $row["data_sm"], "</td><td align=center>", $row["vozrast"], "</td><td align=center>", $row["gorod"], "</td></tr>"; echo "</table>";
PHP: echo "<tr bgcolor=#F3F0E9><td>".$row['fname']."</td> <td>".$row['name']."</td><td>".$row['lname']."</td> <td align=center>".$row['data_sm']."</td> <td align=center>".$row['vozrast']."</td> <td align=center>".$row['gorod']."</td></tr>"; echo "</table>";
Всем огромное спасибо, все получилось, теперь прошу помощьи чуть-чуть в другом русле (уж простите решил научиться php). Мне нежно вывести данные из таблицы так что-бы, поле data_sm (поле дата) на странице отображало - "сегодня на нашем сайте Антон, Егор 1 месяц!" Т.Е. что бы отображал список юзеров которые зарегистрировались 1 месяц назад, полгода, год. Как мне это сделать?
lol2006, читай про if() и функции для работы с mysql А вообще бы не плохо купить книгу по пхп Желательно не наших авторов. Если увидишь книгу: "PHP для начинающих" авторов: Дэйв У. Мерсер, Аллан Кент, Стивен Д. Новицки, Дэвид Мерсер, Дэн Скуайер, Ван Кью Чой; Обязательно возьми
http://www.internet-technologies.ru/books/book_122.html Вот нашел: Авторы: Луис Аргерих, Ванкиу Чой, Джон Коггсхол Размер: 74.42 Mb # ISBN: 5-93286-049-9, 1-861006-91-8; # Издательство: Символ-Плюс, 2003 г.; # Серия: Программист - программисту / Programmer to Programmer; # Мягкая обложка, 1048 стр.; # Тираж: 2000 экз.; # Формат: 70x100/16; О чем эта книга и для кого она? О языке РНР, его истории, задачах, достоинствах и недостатках. О том, как, для чего и в каких ОС применяется этот язык. Если говорить подробнее, то об установке РНР на платформах UNIX, Windows и Mac OS X, о сеансах и cookies, клиентах FTP, о функциях для работы в сети и службе каталогов. Кроме того, рассматриваются поддержка LDAP в РНР, разработка многозвенных приложений в РНР, интеграция РНР с XML, средства, предоставляемые РНР для работы с базами данных (на примере MySQLи Post-greSQL). Обсуждаются безопасность, оптимизация и интернационализация приложений, библиотеки расширений РНР, приводятся примеры системы предоставления прав пользователям и многозвенного приложения корзины покупок для WML. Книга адресована всем РНР-программистам. Может кому понадобиться.