Переменная $_POST['phone'], содержащая название искомой модели телефона - теряется. При переходе на другую страницу - это уже другой, отдельный запрос серверу. Обрабатывая его, он уже не знает, что там было передано в $_POST['phone'] при первом запросе на поиск. Это отдельный запуск скрипта, никак не связанный с предыдущим. Нужно либо как-то запоминать модель телефона (возможно, в сессии или куки), либо передавать этот параметр (модель телефона) в ссылках на другие страницы. Также можно, например, выполнить поиск и найти все записи, удовлетворяющие условиям поиска и сохранить их id куда-либо, а потом в скрипте вывода получать список этих id и в зависимости от номера страницы получать те или иные записи...
я новичок в пхп и возможно что то не понимаю, но как сохранить id если одна страница poisc и как потом id будет меняться когда будет происходить переход на page2 или page3? у меня сайт типа доски объвлений на странице фильтр по категориям выводится все объявления и внизу просто переходы страниц 1.2.3.4.5...67 на странице переходы работают =) если выбрать категорию (к примеру туфли) в фильтре, появляется стр. poisc и в ней выводятся объявления по этой категории 1.2.3.4.5...14 но переход на другие страницы не происходит выдает ошибку мне не понятно почему page1 в стр. poisc выдает нормально а нажимаешь page2 ошибка пропали объявл. ребята мне если честно не важно в чем проблема если кто то найдет в чем проблема я буду очень рада =) а если нет то всеровно всем спасибо за помошь, но если у кого то есть скрипт под мою нужду скиньте пожалуйста ОЧЕНЬ нужно уже какой день мучаюсь=(
никак не сохранить. просто добавить ко всем ссылкам на другие страницы которые там у тебя в списке страниц
oksana, в предыдущем своём комментарии я написал тебе в чём проблема. И дал наводку как исправить. Но, судя по всему - ты хочешь готовый код... Попробую, опираясь на тот код, который ты здесь показала. Ссылки на страницы у тебя генерируются в функции link_page(), которая находится в файле f_poisk.php. Эта функция выводит ссылки вида script.php?page=N, где N - номер страницы. При этом всё, что получает сервер при переходе на другую страницу - это номер страницы. Он не получает параметры для поиска - просто потому, что в ссылке их нет. Тебе нужно сделать так, чтобы ссылки на страницы были следующего вида: script.php?page=N&phone=XXX, где ХХХ - искомая модель телефона. При таком подходе, в скрипте script.php (в твоём случае - это poisk.php) нужно, чтобы сервер принимал запрошенные данные не только из массива $_POST, но и из $_GET (те данные, которые ты приписываешь к ссылкам находятся в $_GET). Для упрощения можешь получать модель телефона из $_REQUEST, так как в него складываются как данные из POST-запросов, так и из GET-запросов. Вот на примере. В скрипте poisk.php у тебя есть строка, принимающая модель телефона: Код (PHP): $one = $_POST["phone"]; Замени её на Код (PHP): $one = $_REQUEST["phone"]; Теперь в переменной $one у тебя будет запрошенная модель телефона, не зависимо от того, запросили её методом POST или GET. Теперь тебе надо, чтобы к ссылкам приписывалось значение этой переменной. Для этого, во-первых, при вызове функции link_page() передавай ей значение этой переменной: Код (PHP): link_page($page, $count, $pages_count, 7, $one); Теперь нужно переписать саму функцию link_page так, чтобы она принимала это значение и подставляла его в ссылки. Вот так нужно сделать, чтобы функция принимала это значение: Код (Text): function link_page($page, $count, $pages_count, $show_link, $phone = '') { Теперь внутри функции в переменной $phone будет запрошенная модель телефона. Поскольку функция может использоваться и в каких-то других местах, где модель телефона не нужна и передаваться в функцию не будет - мы делаем этот параметр не обязательным и ставим ему значение по-умолчанию пустую строку ( = ''). Дальше, во всех тех местах, где функция выводит ссылки, нам нужно проверить, было ли передано в функцию это дополнительное значение (модель телефона) и если да - то его нужно приписать к ссылкам. Я не буду сейчас тебе полностью переписывать код всей функции, а покажу лишь в одном месте как нужно исправить, предполагая, что немного подумав, ты сможешь сама исправить остальные места, где функция выводит ссылки. Вот смотри, у тебя есть такой код: Код (PHP): 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> '; Он отвечает за отображение ссылок с циферками. Вот этот фрагмент: Код (Text): href='.$_SERVER['PHP_SELF'].'?page='.$i.' отвечает за адреса ссылок. И именно сюда тебе нужно добавить передаваемый параметр phone. Нужно сделать так: Код (Text): href='.$_SERVER['PHP_SELF'].'?page='.$i. (empty($phone) ? '' : '&phone=' . $phone) . ' Если всё равно ничего не получится - спрашивай, конечно, попробуем объяснить более популярно... Хотя более популярно уже сложно
все работает =) только одно но =( не работает поиск в странице poisc <? $db = mysql_connect("localhost", "php", "12345"); mysql_select_db("www", $db); $one = $_REQUEST["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"><input type="submit" value="добавить"></a> <form action="poisc.php" method="post"> поиск по телефону<select name="tel"> <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["tel"].'</p>'; echo "<hr />"; } link_page($page, $count, $pages_count, 7, $one); ?> </body> </html> вот исправила include("../test/f_poisc.php"); Код (Text): <? function link_page($page, $count, $pages_count, $show_link, $phone = ''){ 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'.(empty($phone)?'': '&phone='.$phone).'">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).(empty($phone)?'': '&phone='.$phone).'"><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.(empty($phone)?'': '&phone='.$phone).'><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.(empty($phone)?'': '&phone='.$phone).'><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).(empty($phone)?'': '&phone='.$phone).'">><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.(empty($phone)?'': '&phone='.$phone).'"><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'")) or die ("=("); $pages_count = ceil($count / $perpage); // Количество страниц // Если номер страницы оказался больше количества страниц if ($page > $pages_count) $page = $pages_count; $start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД ?> захожу на первую стр. все работает, делаю поиск nokia тоже работает, теперь и по ссылкам переходит =), но когда в стр. poisc выбираю ipone или же nokia выдает =( mysql_num_rows(mysql_query("SELECT * FROM tes WHERE tel = '$one'")) or die ("=("); Страннно? Добавлено спустя 5 минут 30 секунд: и еще скиньте пожалуйста номер вашего мобильного в личку я перед вами в долгу =) (я конечно не дочь нефтяника но хотя бы сделаю знак благодарности)
Потому, что скрипт ожидает переменную phone, а на странице poisk.php у тебя в форме не phone, а tel. Измени здесь Код (Text): поиск по телефону<select name="tel"> tel на phone
наконецто я думала это никогда не закончится =) спасибо вам sobachnic а вы кажется забыли свой номер отправить вроде в личном разделе нету можно в принципе и сюда отправить я хочу вас отблагодарить =) Добавлено спустя 2 минуты 44 секунды: и всем остальным тоже БОЛЬШОЕ СПАСИБО это самый лучший форум, серьезно в другом форуме админ написал ишите ошибку и закрыл мою тему =(
Похоже на игру "Убей БД" Серьёзно? Вы выбираете все записи что бы посчитать из количество? А когда база станет размером пару сотен метров и настройки хостинга позволят делать запрос результат которого меньше размера таблицы - всё перестанет работать. Да и вообще, какой смысл выбрать все! записи, посчитать сколько их, а потом опять выбрать но уже с лимитом? Зачем два раза выбирать одни и те же записи? Вы же первый раз выбрали их, ну тогда просто выводите ту часть которая нужна без нового запроса к бд. Если не понятно о чём я, то представьте, перед вами 100 вёдер воды. Что бы посчитать сколько их, вы не просто считаете 1, 2, 3... А все вёдра поднимаете, и не опускаете пока не досчитаете до 100. Есть такие чудесные функции как COUNT(), FOUND_ROWS(), SQL_CALC_FOUND_ROWS().
Да Оксана скачала откуда-то эту хрень... И приняла как факт, что раз там так написана - значит так и надо, скорее всего
Да вот и беда, сейчас посмотрел вот эту тему viewtopic.php?f=13&t=7193 Там больше половины примеров так написаны По всему интернету наверное то же самое, говорят виной всему всё тот же "Великий учитель всех новичков"
Попов страшный человек. Нечестный. Нехороший. Если вдруг кто набьет ему морду - наверное даже не каждый его осудит. Мне снился сон, как я отрезал Попову яйца.
у всех прошу прошения, но есть еще один вопрос =) когда в select вместо nokia ставлю нокия то в адресной строке появляется page=2&phone=F2% и т.д в базе тоже поменяла nokia на нокия всеровно не работает?
string(12) "нокиа" и выводит else { нет записей } ну у меня там немного другой пример шас напишу $id = $_GET["id"]; $res = mysql_query("SELECT phone FROM type_org WHERE id = '$id'", $db); $row = mysql_fetch_array($res); и переменную $row вставляю в скрипт постраничного вывода Добавлено спустя 1 минуту 11 секунд: да кстати кодировка на самом деле 1251, ut8 лучше?
да пофик. четвертый раз говорю о том что у вас в коде ДЫРА =) пока вы ее не исправите, о кодировке можно не париться - сайт все равно не жилец
тут. $id = $_GET["id"]; $res = mysql_query("SELECT phone FROM type_org WHERE id = '$id'", $db); нельзя бездумно писать в запрос то что прислали. нужно пользоваться http://www.php.ru/manual/function.mysql-real-escape-string.html а кодировка утф очень удобна, да.
mysql_real_escape_string я вставила просто тут написала без него чтоб легче код просматривать =) может помните мое самое первое сообщение там вы мне сделали замечание =) про mysql_real_escape_string Добавлено спустя 5 минут 22 секунды: а что еще посоветуете когда в select русское значение?
поменяла на 8 каракули, оставила 1251 Добавлено спустя 50 секунд: нет select я имела виду постраничный вывод =)
все исправила теперь ищет, если в select русское значение, но как всегда у меня опять проблема =( если в select (слово без пробелов) например сумка то все отлично работает а если в select (слово с пробелами) например спортивная куртка то page1 в адресной строке выводит полное название а page2 выводит только спортивная вначале вместо пробела вставила _ спортивная_куртка все работает но внешне не смотрится потом сделала проверку if ($cat == "спортивная") { $cat = "спортивная куртка"; }; думала проблема решена =) но если будет категория спортивная обувь то он выдает спортивная куртка как сделать чтобы переходя на вторую страницу, слово после пробела не проподала?