![]() |
постраничная навигация mysql, php
PHP код:
но, что кавычки нужны но где или как тут сделать двойные кавычки читаемые браузером нормально, как тут $result = mysql_query("SELECT * FROM rt LIMIT $start, $num"); ? Заранее спасибо. |
PHP код:
|
$result = mysql_query("SELECT * FROM `rt` WHERE `m_d`='$_POST['m_d']' LIMIT `$start`, `$num`");
Так правильно - закавычиваем всё, что можно, а названия таблиц и полей - в обратные апострофы. PS. Чтобы не путаться, лично я делаю вывод так: определяю все нужные переменные вывожу их с HTML в одном потоке: print <<<END <a href="#">$link_value</a> ... ну и так далее END ;; |
dmitryst,
Цитата:
при всем уважении у меня не получился этот код. Цитата:
Sham, не мог бы в кратце пояснить про запятые, почему то, что ты написал получилось в отличии от того, что написал я т.е. понабрал оттуда да отсюда помаленьку? |
dmitryst, про это
PHP код:
вывожу их с HTML в одном потоке: print <<<END <a href="#">$link_value</a> ... ну и так далее END ;; », да? и у меня почему то условие поиска не воспринимается т.е. например прописываю букву l и показывает те слова в, которых она есть, если прописываю букву, которой нет ни в одном слове, то да он показывает, что страницу в, которой данных нет, что такое |
dima1981, все, что касается строк в PHP узнаете здесь http://ru2.php.net/language.types.string
Цитата:
* правильный синтаксис heredoc (который у вас немного неправильный) увидите по ссылке выше... * не понятно, что и как вы ищите... |
Цитата:
PHP код:
за ссылку благодарю, щас читать отправляюсь, только не доходит до меня этот php и все тут ) |
dima1981, вы пытаетесь изобрести велосипед... поищите готовые решения и там все будет понятно...
|
Благодарю Sham, но так я поступаю за отсутствием мозгов и все равно не получается ничего, не передаются у меня переменные в pageвые страницы
вот код понимаю, что немного не отформатирован, но все таки может посмотрите? PHP код:
|
dima1981, вы должны все параметры передавать методом get (и хтмл-форма должна быть get - т.е. через URL).
в ссылках навигации я не вижу никаких параметров кроме страницы, а должны быть все данные, включая строку запроса, и остальные данные формы (т.е. GET) соответственно все $_POSTы после этого замените на $_GETы (переход по ссылкам означает, что вы посылаете параметры методом get)... не забывайте все данные перед вставкой в строку запроса обрабатывать функцией mysql_real_escape_string() - это защита от изменения строки запроса извне... в принципе можно совместить post и get (первоначально слать post, а ссылки уже будут get слать), и тогда нужно проверять уже $_REQUEST (это все данные подряд, присланные юзером)... |
Да только не понятно как это все
Цитата:
|
Цитата:
GET-запрос выглядит так: "http://site.com/script.php?parametr1=10¶metr2=test&page=3" и так далее, то есть все нужные параметры передаются в ссылке. Соответственно, в скрипте, который эти параметры принимает, пишем $var = $_GET['parametr1'], например. Вы уж определитесь - или все GET или все POST, а то запутаетесь. Кстати, все эскейп-функции можно не применять, если у вас все параметры гарантировано числа или на английском (во всяком случае, на первом этапе). Кроме того, в сложных случаях я дублирую запросы к базе данных на экран - мало ли, может, какая-то переменная принимает не то значение, какое хотелось бы. |
dima1981,
Цитата:
PHP код:
|
Igor_I, не согласен.
Код:
///вот так писать (ибо некоторые поля могут совпасть с зарезервированными словами, да и значение в обратных апострофах гарантированно считается названием таблицы или поля) |
этот запрос не срабатывает
$query("SELECT * FROM rt LIMIT $start, $num"); $result= mysql_query($query); пишет Fatal error: Function name must be a string |
dima1981, потому что так надо:
Цитата:
|
не то dmitryst, вернулся к предыдущему способу $result = mysql_query хотя полностью не осознаю последствий, которые могут возникнуть с этим переходом, но он хоть функцианирует и первую страницу показывает нормально, и число строк считается правильно, и навигация на ней отображается, только вот на вторую переходит без переменных, но это поправимо, только вот узнать бы как их передать думаю с переменной $posts, только где ее прописывать...
|
dmitryst, для меня это не критично, можно в конце страницы, можно в середине.
Вот твой первый файл в более наглядном виде. Из которого видно что у тебя проверяются переменные $_POST, но которые не передаются на вторую страницу. Цитата:
Используй функцию echo везде, где что-то не получается. Придумай каждому условию переменную и выводи её. -------------- Исправил код. Правда я не знаю насколько он работоспособен. PHP код:
|
Цитата:
Сори за поэму и новелу кто этот текст так назовет Igor_I Исправил только работоспособность велосипед говорит починил, только он так и едит только напрво но хоть сигнал появился, понял спасибо ) скопировал его и вперед с передачей параметров эксперементировать дошел только до этого <a href= zt.php?page='. ("'.$page - 1.'" . pmd="'.$pmd.'" . pmo="'.$pmo.'"') .'><</a> продолжу с этим спасибо продолжу |
Ну вот, генератор текста включил :)
Ну так по теме что есть сказать? Код смотрел? |
По теме:
скорее всего подходит изначальный код т.к. там присутствуют все переменные требуемые для нормальной работы навигации, только единственное это каким образом эти данные передать на вторую к примеру страницу т.е. как это выглядит method=get $m_o or или && $m_d and $start такая тема, полазию по интернету, что то да отрою но тут все походу баста в этой теме наглость какая то из меня прет типа мне обязан кто то что то, пойду с машинами общаться как код созреет добавлю в тему, спасибо всем |
Цитата:
|
Значит код не смотрел :)
<a href= zt.php?page='. ($page - 1) .'&pmd='.$pmd.'&pmo='.$pmo.'><</a> - примерно так |
Да смотрел началось с того, что он не понял первые пару ifов потом когда, как то получилось сделать и он пошел дальше них то не смог, как раз эту строку прочитать, которая у тебя, ну и до чего дошел там написал строку она оказалась примерно тридцатой модификацией, из тех, которые эксперементируя задействовал, решил, что нужен образец в, котором с кавычками нормально, потому, что как и ты не знаю, как их там расставлять и остального, теперь в интернет за образцом только добраться до него бы, доберусь ) спасибо Igor_I
Sham, это было про то, что не совсем понял про get и post и то как эта строка, которая следуя приведенным инструкциям получится выглядит в виде коде, но зато понял примерно теорию т.е. какие примерно переменные и данные требуется передавать и то, что их надо передавать потому, что они сами не передадуться без инструкций т.е. требуется те, которые приходят из форм обязательно и тут думаю получится и можно заместо postа get и не прописывать не могу понять для чего но это ладно зато на основе него т.е. сообщения мысли появились, спасибо и поэтому посчитал это сообщение полезным |
dima1981, ваши посты невозможно читать... ставьте запятые и точки правильно хотя бы, не впадлу...
|
да посты как посты никогда не мог правильно их расставлять сори, я бы их совсем бы не читал т.к. трудно разбираемы они очень
|
Строка в браузере при навидении курсора на ссылку страницы отображается так page=2&mos=&mds
из html данные передаются методом get код теперь выглядит так PHP код:
PHP код:
|
Сначала
'SELECT * FROM rt WHERE m_o="'.$mos.'" AND m_d="'.$mds.'"' потом 'SELECT * FROM rt WHERE m_o="'.$m_o.'" AND m_d="'.$m_d.'" LIMIT $start, $num' Переменные-то разные. Да и зачем проверять те переменные, которые уже присвоенны другим переменным if ($_get[m_o] && $_get[m_d]) Кстати, но это уже на будущее, в первом запросе можно использовать count для подсчета получившихся строк. Но пока голову этим не заморачивай. |
Исправил теперь строка выглядит так http://127.0.0.1/zt.php?m_o=&submit=...82%D1%8C&m_d=h h это то что в форме прописываю, вот в начале, когда до Переменные-то разные у меня первая страница показывалась правильно и строки правильно подсчитывал и остальное, но на вторую страницу не мог данные запроса передать, теперь с первой страницы начинает не тот результат показывать, может как то начальный код подправить может получится?
запрос PHP код:
только не получается т.е. как до этого полностью таблицу и про Цитата:
|
Цитата:
Короче, я совсем запутался в вашем алгоритме. Я предлагаю сделать так. Первым делом считаем общее количество строк в таблице - SELECT COUNT(*) FROM `rt` WHERE ваше_условие (пишем это значение в переменную $total). Далее, считаем количество страниц - $pages = ceil($total / $onpage), здесь $onpage это количество результатов на странице, ceil округляет это дело до следующего целого(то есть из 5,2 получится 6, что логично :) ). На первой странице выбираем нужные значения из таблицы - SELECT * FROM `rt` WHERE ваше_условие LIMIT 0,$onpage. Понятно? Надеюсь, понятно. Далее, штампуем линки для следующей страницы - PHP код:
PHP код:
|
скоро отпишусь мускл не соединяется со скриптами и вообщем спасибо всем, мне не удобно за то, что не понимаю и при всем уважении не та тема чтобы так растягивать, пойду на поиски получу нормальный, работающий код напишу тут, для завершения темы.
Пойду короче где то код скачивать, не получилось, не так, не сяк, не эдк. мог бы всю тему удалить удалил бы, столько тут понаписанно мною тормозом, всем счастливо и спсб |
PHP код:
Хочу сказать всем спасибо, все таки и такое натянутое общение, какое происходило у меня с некоторыми участвующими способствует прогрессу и если бы не те знания, которые во мне сформировались, при общение в этой теме мне бы не удалось доработать этот код (спасибо автору) до нужного результата, благодарю ) |
Поторопился, не получается вывод данных, как сделать, чтобы получилось, например запрашиваются данные, которых в базе нет, щас у меня отображается пустая страница, но хотелось бы, чтобы например или при такой ситуации строка появлялась(данных нет) или выводилась вся таблица?
Заранее спасибо. |
Помнится на phpclube, толи Фанат, то ли tony сказал примерно такую вещь. Программа думать не умеет, что вы ей скажете, то она и сделает.
В данном случае думаем и конспектируем. запрашиваются данные, которых в базе нет = if (mysql_num_rows == 0) появлялась строка - данных нет = echo 'Данных нет'; выводилась вся таблица = mysql_query('SELECT * FROM rt') |
Цитата:
Не догнал я, как это делается заместо этой строки PHP код:
PHP код:
|
if (mysql_num_rows($result) == 0) $empty = 1;
А внизу вывод if ($empty == 1) echo "Данных нет"; http://tony2001.phpclub.net/doc/standard/ - мне кажется будет полезна. |
Время: 22:37. |
Время: 22:37.
© OSzone.net 2001-