искала в сети скрипт который будет выводить заметки по страницам, нашла самый простой, были ошибки по синтаксу, исправила все работает отлично, но проблема если страниц будет 100 она выводит все =( Код (Text): function link_bar($page, $pages_count) { for ($j = 1; $j <= $pages_count; $j++){ // Вывод ссылки if ($j == $page) { echo '<a style="color:#800000;" ><strong>'.$j.'</strong></a>'; } else { echo ' <a style="color:#000000;" href='.$_server['php_self'].'?page='.$j.'>'.$j.'</a>'; } if ($j != $pages_count) echo ' '; } return true; } // Конец функции // Подключение к базе данных $db = mysql_connect("localhost", "php", "12345") or die('error! Нет соединения с сервером!'); mysql_select_db("test", $db) or die('error! Нет соединения с сервером!'); // Подготовка к постраничному выводу $perpage = 10; // Количество отображаемых данных из БД if (empty($_GET['page']) || ($_GET['page'] <= 0)) {$page = 1;} else { $page = (int) $_GET['page'];} // Считывание текущей страницы } // Общее количество информации $count = mysql_num_rows(mysql_query('SELECT * FROM otziv ORDER BY id DESC')); $pages_count = ceil($count / $perpage); // Количество страниц // Если номер страницы оказался больше количества страниц if ($page > $pages_count) $page = $pages_count; $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД $result = mysql_query('SELECT * FROM otziv ORDER BY id DESC LIMIT '.$start_pos.', '.$perpage); $row = mysql_fetch_array($result); if (mysql_num_rows($result) > 0){ do{ printf (" <table class='table' width='670' border='0'> <tr> <td class='class'>Имя пользователя: %s</td> </tr> <tr> <td>%s</td> </tr> </table> <br>",$row["name"], $row["text"]); } while($row = mysql_fetch_array($result)); } link_bar($page, $pages_count); Нашла другой скрипт который мне подходит, подправила и выводит 1 2 3 4 5 ... Последняя, но проблема ссылки не работают остаешься на той же странице =( Код (Text): function link_bar($page, $count, $pages_count, $show_link) {// $show_link - это количество отображаемых ссылок if ($pages_count == 1) return false; $sperator = ' | '; // Разделитель ссылок // Для придания ссылкам стиля $style = 'style="color: #808000; text-decoration: none;"'; $begin = $page - intval($show_link / 2); unset($show_dots); // На всякий случай :) // Если количество отображ. ссылок больше кол. страниц if ($pages_count <= $show_link + 1) $show_dots = 'no'; // Вывод ссылки на первую страницу if (($begin > 2) && ($pages_count - $show_link > 2)) { echo '<a '.$style.' href='.$_server['php_self'].'?page=1> Первая </a> '; } for ($j = 0; $j <= $show_link; $j++) // Основный цикл вывода ссылок { $i = $begin + $j; // Номер ссылки // Если страница рядом с началом, то увеличить цикл для того, // чтобы количество ссылок было постоянным if ($i < 1) continue; // Подобное находится в верхнем цикле if (!isset($show_dots) && $begin > 1) { echo ' <a '.$style.' href='.$_server['php_self'].'?page='.($i-1).'><b>...</b></a> '; $show_dots = "no"; } // Номер ссылки перевалил за возможное количество страниц if ($i > $pages_count) break; if ($i == $page) { echo ' <a '.$style.' ><b>'.$i.'</b></a> '; } else { echo ' <a '.$style.' href='.$_server['php_self'].'?page='.$i.'>'.$i.'</a> '; } // Если номер ссылки не равен кол. страниц и это не последняя ссылка if (($i != $pages_count) && ($j != $show_link)) echo $sperator; // Вывод "..." в конце if (($j == $show_link) && ($i < $pages_count)) { echo ' <a '.$style.' href='.$_server['php_self'].'?page='.($i+1).'><b>...</b></a> '; } } // Вывод ссылки на последнюю страницу if ($begin + $show_link + 1 < $pages_count) { echo ' <a '.$style.' href='.$_server['php_self'].'?page='.$pages_count.'> >| </a>'; } return true; } // Конец функции // Подключение к базе данных $db = mysql_connect("localhost", "php", "12345") or die('error! Нет соединения с сервером!'); mysql_select_db("test", $db) or die('error! Нет соединения с сервером!'); // Подготовка к постраничному выводу $perpage = 10; // Количество отображаемых данных из БД if (empty($_get['page']) || ($_get['page'] <= 0)) { $page = 1; } else { $page = (int) $_get['page']; // Считывание текущей страницы } // Общее количество информации $count = mysql_num_rows(mysql_query('SELECT * FROM otziv ORDER BY id DESC')) or die('error! Записей не найдено!'); $pages_count = ceil($count / $perpage); // Количество страниц // Если номер страницы оказался больше количества страниц if ($page > $pages_count) $page = $pages_count; $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД // Вывод информации из базы данных $result = mysql_query('SELECT * FROM otziv LIMIT '.$start_pos.', '.$perpage) or die('error!'); $row = mysql_fetch_array($result); if (mysql_num_rows($result) > 0){ do{ printf (" <table class='table' width='670' border='0'> <tr> <td class='class'>Имя пользователя: %s</td> </tr> <tr> <td>%s</div></td> </tr> </table> <br>",$row["name"], $row["text"]); } while($row = mysql_fetch_array($result)); } // Вызов функции, для вывода ссылок на экран link_bar($page, $count, $pages_count, 10);
исправила на $_SERVER['PHP_SELF'] так же стоит на первой странице не осуществляет переход на другие страницы =(
Что то запускать этот скрипт не хочется... И откуда ты берешь эти скрипты... Лучше скажи какие ссылки получились, все одинаковые? Пример если можно
в google ищу первый скрипт отлично работает ( 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15 ) и все отлично работает второй скрипт как я и хотела ( 1.2.3.4.5...15 ) но ссылки не рабочие нажимаешь на любую остаешься на первой =( Добавлено спустя 4 минуты 52 секунды: и еще во втором скрипте в адресной строке page меняется на номер ссылки но содержимое первой страницы
$_get (а также $_post, $_request) - тоже всё БОЛЬШИМИ. А вот page внутри (в данном случае) - маленькими
спасибо большое sobachnik и вам smitt не понятно почему в первом тоже маленькими написаны но работают, еще слышала что взломщики могут в page запрос отправить, как лучше защититься?
$_GET в первом примере написан большими - потому и работает. $_SERVER['PHP_SELF'] - маленькими, но оно и в первом примере не подставляет в ссылку того, что задумано. Просто ссылки всё равно работают, даже если название скрипта будет пропущено. Номер страницы - я обычно привожу к целому типу. Код (PHP): $page = isset($_GET['page']) ? (int) $_GET['page'] : 1;
ну это просто кошмар!!!!!!!!!!!! снова я =) убила два дня но вместе с поиском скрипт у меня не работает шас расскажу есть таблица с полями id, name, name2, phone для примера сделала простенькую страничку <? $db = mysql_connect("localhost", "php", "12345"); mysql_select_db("www", $db); include("../test/f_index.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Документ без названия</title> </head> <body> <a href="add.php">добавить</a> <form action="poisc.php" method="post"> поиск по телефону<select name="phone"> <option>nokia</option> <option>iphone</option> <option>samsung</option> </select> <input type="submit" value="выбрать"> </form><br> <? echo $count; // количество записей $res = mysql_query('SELECT * FROM tes ORDER BY id DESC LIMIT '.$start_pos.', '.$perpage); while($mas = mysql_fetch_array($res)){ echo '<p>'.$mas["name"].' '.$mas["name2"].' '.$mas["phone"].'</p>'; echo "<hr />"; } link_page($page, $count, $pages_count, 7); ?> </body> </html> а вот и сама функция include("../test/f_index.php"); все работает отлично Код (Text): <? function link_page($page, $count, $pages_count, $show_link){ // $show_link - это количество отображаемых ссылок; if ($pages_count == 1) {return false;}; $sperator = '<strong>|</strong>'; $style = 'style="color: #800000; text-decoration: none;"'; $begin = $page - intval($show_link / 2); unset($show_dots); // На всякий случай :) // Если количество отображ. ссылок больше кол. страниц if ($pages_count <= $show_link + 1) {$show_dots = "no";}; // Вывод ссылки на первую страницу if (($begin > 2) && ($pages_count - $show_link > 2)) { echo '<a style="color: #000000; text-decoration:none; font-size:12px;" href='.$_SERVER['PHP_SELF'].'?page=1>1</a> '; } // Основный цикл вывода ссылок for ($j = 0; $j <= $show_link; $j++) { $i = $begin + $j; // Номер ссылки // Если страница рядом с началом, то увеличить цикл для того, чтобы количество ссылок было постоянным if ($i < 1) continue; // Подобное находится в верхнем цикле if (!isset($show_dots) && $begin > 1) { echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i-1).'><b>...</b></a> '; $show_dots = "no"; } // Номер ссылки перевалил за возможное количество страниц if ($i > $pages_count) {break;}; if ($i == $page) { echo ' <a style="color: #800000; text-decoration:none;" href='.$_SERVER['PHP_SELF'].'?page='.$i.'><strong style="font-family:Verdana, Geneva, sans-serif; font-size:12px;">'.$i.'</strong></b></a> '; } else { echo ' <a style="color: #000000; text-decoration:none;" href='.$_SERVER['PHP_SELF'].'?page='.$i.'><strong style="font-family:Verdana, Geneva, sans-serif; font-size:12px;">'.$i.'</strong></a> '; } // Если номер ссылки не равен кол. страниц и это не последняя ссылка if (($i != $pages_count) && ($j != $show_link)) {echo $sperator;}; // Вывод "..." в конце if (($j == $show_link) && ($i < $pages_count)) { echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i+1).'><b>...</b></a> '; } } // Вывод ссылки на последнюю страницу if ($begin + $show_link + 1 < $pages_count) { echo ' <a style="color: #000000; text-decoration:none; font-size:12px;" href='.$_SERVER['PHP_SELF'].'?page='.$pages_count.'><strong style="font-family:Verdana, Geneva, sans-serif; font-size:12px;">'.$pages_count.'</strong></a>'; } return true; } // Конец функции // Подготовка к постраничному выводу $perpage = 3; // Количество отображаемых данных из БД if (empty($_GET['page']) || ($_GET['page'] <= 0)) { $page = 1; } else { $page = (int) $_GET['page']; // Считывание текущей страницы } // Общее количество информации $count = mysql_num_rows(mysql_query("SELECT * FROM tes")); $pages_count = ceil($count / $perpage); // Количество страниц // Если номер страницы оказался больше количества страниц if ($page > $pages_count) $page = $pages_count; $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД ?> а вот и poisc.php <? $db = mysql_connect("localhost", "php", "12345"); mysql_select_db("www", $db); $one = $_POST["phone"]; include("../test/f_poisc.php"); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Документ без названия</title> </head> <body> <a href="add.php">добавить</a> <form action="poisc.php" method="post"> поиск по телефону <select name="phone"> <option>nokia</option> <option>iphone</option> <option>samsung</option> </select> <input type="submit" value="выбрать"> </form><br> <? echo $count; // количество записей показывает сколько нужно, но переход на страницу не работает $res = mysql_query("SELECT * FROM tes WHERE tel = '$one' ORDER BY id DESC LIMIT ".$start_pos.", ".$perpage); while($mas = mysql_fetch_array($res)){ echo '<p>'.$mas["name"].' '.$mas["name2"].' '.$mas["phone"].'</p>'; echo "<hr />"; } link_page($page, $count, $pages_count, 7); ?> </body> </html> а вот include("../test/f_poisc.php"); Код (Text): <? function link_page($page, $count, $pages_count, $show_link){ // $show_link - это количество отображаемых ссылок; if ($pages_count == 1) {return false;}; $sperator = '<strong>|</strong>'; $style = 'style="color: #800000; text-decoration: none;"'; $begin = $page - intval($show_link / 2); unset($show_dots); // На всякий случай :) // Если количество отображ. ссылок больше кол. страниц if ($pages_count <= $show_link + 1) {$show_dots = "no";}; // Вывод ссылки на первую страницу if (($begin > 2) && ($pages_count - $show_link > 2)) { echo '<a style="color: #000000; text-decoration:none; font-size:12px;" href='.$_SERVER['PHP_SELF'].'?page=1>1</a> '; } // Основный цикл вывода ссылок for ($j = 0; $j <= $show_link; $j++) { $i = $begin + $j; // Номер ссылки // Если страница рядом с началом, то увеличить цикл для того, чтобы количество ссылок было постоянным if ($i < 1) continue; // Подобное находится в верхнем цикле if (!isset($show_dots) && $begin > 1) { echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i-1).'><b>...</b></a> '; $show_dots = "no"; } // Номер ссылки перевалил за возможное количество страниц if ($i > $pages_count) {break;}; if ($i == $page) { echo ' <a style="color: #800000; text-decoration:none;" href='.$_SERVER['PHP_SELF'].'?page='.$i.'><strong style="font-family:Verdana, Geneva, sans-serif; font-size:12px;">'.$i.'</strong></b></a> '; } else { echo ' <a style="color: #000000; text-decoration:none;" href='.$_SERVER['PHP_SELF'].'?page='.$i.'><strong style="font-family:Verdana, Geneva, sans-serif; font-size:12px;">'.$i.'</strong></a> '; } // Если номер ссылки не равен кол. страниц и это не последняя ссылка if (($i != $pages_count) && ($j != $show_link)) {echo $sperator;}; // Вывод "..." в конце if (($j == $show_link) && ($i < $pages_count)) { echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i+1).'><b>...</b></a> '; } } // Вывод ссылки на последнюю страницу if ($begin + $show_link + 1 < $pages_count) { echo ' <a style="color: #000000; text-decoration:none; font-size:12px;" href='.$_SERVER['PHP_SELF'].'?page='.$pages_count.'><strong style="font-family:Verdana, Geneva, sans-serif; font-size:12px;">'.$pages_count.'</strong></a>'; } return true; } // Конец функции // Подготовка к постраничному выводу $perpage = 3; // Количество отображаемых данных из БД if (empty($_GET['page']) || ($_GET['page'] <= 0)) { $page = 1; } else { $page = (int) $_GET['page']; // Считывание текущей страницы } // Общее количество информации $count = mysql_num_rows(mysql_query("SELECT * FROM tes WHERE tel = '$one'")); $pages_count = ceil($count / $perpage); // Количество страниц // Если номер страницы оказался больше количества страниц if ($page > $pages_count) $page = $pages_count; $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД ?> разница между 1 и 2 функцией 1.$count = mysql_num_rows(mysql_query("SELECT * FROM tes")); 2.$count = mysql_num_rows(mysql_query("SELECT * FROM tes WHERE phone = '$one'")); Так вот захожу на страницу все работает 1.2.3 и ссылки работают, делаю поиск тоже выводит нормально 1.2.3 какой бы телефон не выбрала, но нажимаешь на ссылку 2 или 3 выдает Предупреждение : mysql_fetch_array (): поставляется аргумент не является допустимым результатом MySQL ресурс в Z: \ главная \ локальный \ WWW \ Test \ poisc.php на линии 28 26. echo $count; // количество записей 27. $res = mysql_query("SELECT * FROM tes WHERE tel = '$one' ORDER BY id DESC LIMIT ".$start_pos.", ".$perpage); 28. while($mas = mysql_fetch_array($res)){ 29. echo '<p>'.$mas["name"].' '.$mas["sir"].' '.$mas["tel"].'</p>'; 30. echo "<hr />"; 31. } 32. link_page($page, $count, $pages_count, 7); Добавлено спустя 2 минуты 38 секунд: не пойму в чем дело ???????????????
я смотрю вы на экранирование забили большой такой болт =) по существу: в ошибке сказано, что в функцию потрошение ответа БД передается не ответ БД, а какая-то херня которую он не понимает. Из чего следует вывод, что ответ от БД содержит не то, что вы ждете. Скорее всего, в запросе ошибка, либо он выполняется как-то не так. Сервер БД вам об этом пытается доложить, а вы не задумываясь засовываете его доклад в потрошилку, а она уже ругается. Нужно выкорчевать запрос в тот момент когда он уходит на сервак, просто выведя его через echo. Потом вставить в pma и посмотреть что тот выдаст.
через echo link_page($page, $count, $pages_count, 7); выдает 1.2.3.1 и 1 в конце даже не ссылка а можно поподробнее про рма, как ее сделать? ПОПОВ =) не учил таким вещам
Прикольно Я думаю Попов сам не сможет... Ее делать не надо, под рма говорилось о phpmyadmin , ну а требуется выполнить sql напрямую в базе без использования php
ой а как делать sql без php =) в моем примере когда еще в запросе появляется $one? пожалуйста помогите я уже какой день не сплю =(
я всегда советую взять хостинг за 10-100 рублей и обрести покой. там и пма настроен, и логи на виду. перед или после строки 27. $res = mysql_query("SELECT * FROM tes WHERE tel = '$one' ORDER BY id DESC LIMIT ".$start_pos.", ".$perpage); нужно просто поставить ченить типа echo "ЗАПРОС: [SELECT * FROM tes WHERE tel = '$one' ORDER BY id DESC LIMIT ".$start_pos.", ".$perpage.']'; и тогда прямо на странице увидишь свой запрос. может сразу ошибку заметишь. если нет - в пма его =) может там нет ошибки. может там ноль строк в результате выборки. всяко бывает.
так у вас есть досткп к вашему пма? зайдв бд и там в закладочке sql впишите свой запрос. посмотрим, что он скажет. а хостинг любой вам подойдет
у меня SELECT * FROM tes WHERE tel = '$one' ORDER BY id DESC LIMIT ".$start_pos.", ".$perpage вот такой запрос на странице там ввела SELECT * FROM `tes` WHERE `tel` = `$one` может с ковычками ошибка пишет что и следовало ожидать незнает $one Добавлено спустя 6 минут 55 секунд: может дадите ссылку на скрипт чтоб было 1.2.3.4.5...20 и после 1...8.9.10.11...20 что то вроде этого Добавлено спустя 13 минут 11 секунд: еще вставила echo "ЗАПРОС: [SELECT * FROM tes WHERE tel = '$one' ORDER BY id DESC LIMIT ".$start_pos.", ".$perpage.']'; выдает ЗАПРОС: ['SELECT * FROM tes WHERE tel = 'nokia' ORDER BY id DESC LIMIT 0, 3'] все правильно но почему??????????????????????? когда нажимаещь в той же странице poisc на другие страницы выдает ошибку и еще перед циклом писала echo $count; // количество выбранных записей выбирала нокиу показывала 10 правильно, iphone показывала 5 тоже правильно но переходишь на другую страницу показывает 0, будто съела их
igordata я вставляла запрос в пма, ошибки нет все правильно, может проблема что скрипт не расчитан на то что ей придет $_POST['phone'] deniska шас в кратце опишу ошибку есть таблица name , phone сергей nokia сережа nokia серг nokia серега nokia сергей nokia сергей nokia сергей nokia андрей iphone андр iphone андре iphone анд iphone андрей iphone виктор samsung вика samsung виктsamsung виктоsamsung виктор samsung виктор samsung в скрипте указала чтоб на стр. выводили две записи а потом переход страниц захожу на первую страницу index.php выберите телефон для быстрого поиска (здесь select с телефонами) поиск всего записей:18 //правильно показывает сергей nokia сережа nokia 1.2.3.4.5 вот страница все работает нажимаешь на 2 или 3 переходит и показывает следущие записи тоже работает если в select выбираю к примеру samsung то вот стр. poisc.php всего записей:6 //правильно показывает выберите телефон для быстрого поиска (здесь select с телефонами) поиск виктор samsung вика samsung 1.2.3 перехожу на любую стр. получается вот такая стр. всего записей:0 //неправильно показывает, куда делись остальные записи? выберите телефон для быстрого поиска (здесь select с телефонами) поиск Предупреждение : mysql_fetch_array (): поставляется аргумент не является допустимым результатом MySQL ресурс в Z: \ главная \ локальный \ WWW \ Test \ poisc.php на линии 28 1.2.3 ну а почему эта дура тогда выводила первую страницу, почему на первой ошибку не выдовала, вот главный запрос? кто нибудь посмотрите скрипт может там че то не так =(