Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » постраничная навигация mysql, php

Ответить
Настройки темы
постраничная навигация mysql, php

Аватара для dima1981

Ветеран


Сообщения: 512
Благодарности: 23

Профиль | Отправить PM | Цитировать


PHP код: Выделить весь код

<?

$db 
mysql_connect("localhost","root","***");
mysql_select_db("rp"$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
if (
$_POST[m_o] && $_POST[m_d]){ 
      
$num 2;   
// Текущая страница 
$page=$_GET['page'];   
// Общее число сообщений 
$result mysql_query('SELECT * FROM rt WHERE m_o="'.$_POST[m_o].'" AND m_d="'.$_POST[m_d].'"');  
$posts mysql_num_rows($result);   
// Общее число страниц   
$total intval(($posts 1) / $num) + 1;   
// Начальная позиция отсчета 
$page intval($page);   
// Если $page отрицательно то, переходим на первую страницу 
if(empty($page) or $page 0$page 1;   
  if(
$page $total$page $total;   
// С какого номера начать выводить сообщения 
$start $page $num $num;   
// Вывод с $start 
$result mysql_query('SELECT * FROM rt WHERE m_o="'.$_POST[m_o].'" AND m_d="'.$_POST[m_d].'" LIMIT $start, $num');   

else if (
$_POST[m_o] && !$_POST[m_d]) { 
      
$num 2;   
// Текущая страница 
$page=$_GET['page'];   
// Общее число сообщений 
$result mysql_query('SELECT * FROM rt WHERE m_o="'.$_POST[m_o].'"');   
$posts mysql_num_rows($result);   
// Общее число страниц   
$total intval(($posts 1) / $num) + 1;   
// Начальная позиция отсчета 
$page intval($page);   
// Если $page отрицательно то, переходим на первую страницу 
if(empty($page) or $page 0$page 1;   
  if(
$page $total$page $total;   
// С какого номера начать выводить сообщения 
$start $page $num $num;   
// Вывод с $start 
$result mysql_query('SELECT * FROM rt WHERE m_o="'.$_POST[m_o].'" LIMIT $start, $num');   

else if ( 
$_POST[m_d] && !$_POST[m_o] ){ 
      
$num 2;   
// Текущая страница 
$page=$_GET['page'];   
// Общее число сообщений 
$result mysql_query('SELECT * FROM rt WHERE m_d="'.$_POST[m_d].'"');   
$posts mysql_num_rows($result);   
// Общее число страниц   
$total intval(($posts 1) / $num) + 1;   
// Начальная позиция отсчета 
$page intval($page);   
// Если $page отрицательно то, переходим на первую страницу 
if(empty($page) or $page 0$page 1;   
  if(
$page $total$page $total;   
// С какого номера начать выводить сообщения 
$start $page $num $num;   
// Вывод с $start 
$result mysql_query('SELECT * FROM rt WHERE m_d="'.$_POST[m_d].'" LIMIT $start, $num');   

else { 
   
$num 2;   
// Текущая страница 
$page=$_GET['page'];   
// Общее число сообщений 
$result mysql_query('SELECT * FROM rt');   
$posts mysql_num_rows($result);   
// Общее число страниц   
$total intval(($posts 1) / $num) + 1;   
// Начальная позиция отсчета 
$page intval($page);   
// Если $page отрицательно то, переходим на первую страницу 
if(empty($page) or $page 0$page 1;   
  if(
$page $total$page $total;   
// С какого номера начать выводить сообщения 
$start $page $num $num;   
// Вывод с $start 
$result mysql_query("SELECT * FROM rt LIMIT $start, $num");   

while ( 
$abc mysql_fetch_row($result))
{
echo (
"$abc[0]  | $abc[1]");
}
if (
$page != 1$pervpage '<a href= zt.php?page=1><<</a>   
                               <a href= zt.php?page='
. ($page 1) .'><</a> ';   
// Нужны ли стрелки вперед   
if ($page != $total$nextpage ' <a href= zt.php?page='. ($page 1) .'>></a>   
                                   <a href= zt.php?page=' 
.$total'>>></a>';   

// Стр. с обоих краев 
if($page 0$page2left ' <a href= zt.php?page='. ($page 2) .'>'. ($page 2) .'</a> | ';   
if(
$page 0$page1left '<a href= zt.php?page='. ($page 1) .'>'. ($page 1) .'</a> | ';  
if(
$page <= $total$page2right ' | <a href= zt.php?page='. ($page 2) .'>'. ($page 2) .'</a>';   
if(
$page <= $total$page1right ' | <a href= zt.php?page='. ($page 1) .'>'. ($page 1) .'</a>'

// Вывод 
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage
mysql_close($db);
?>

Скажите пожалуйста, почему у меня тут всю таблицу постранично хорошо показывает, но когда задан поиск по базе mysql то не показывает, понимаю, что вот в этом php запросе или строке, что то не так $result = mysql_query('SELECT * FROM rt WHERE m_d="'.$_POST[m_d].'" LIMIT $start, $num');
но, что кавычки нужны но где или как тут сделать двойные кавычки читаемые браузером нормально, как тут $result = mysql_query("SELECT * FROM rt LIMIT $start, $num"); ?
Заранее спасибо.

-------
не уверен, что знаешь наверняка, говори об этом заблаговремено )


Отправлено: 10:16, 04-11-2008

 

Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


PHP код: Выделить весь код

$result mysql_query('SELECT * FROM rt WHERE m_d="'.$_POST['m_d'].'" LIMIT '.$start.', '.$num);

$result mysql_query("SELECT * FROM rt WHERE m_d='$_POST[m_d]' LIMIT $start, $num"); 

есть еще варианты...
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:42, 04-11-2008 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для dmitryst

Ветеран


Сообщения: 7317
Благодарности: 910

Профиль | Отправить PM | Цитировать


$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
;;

-------
Осваиваю FreeBSD


Последний раз редактировалось dmitryst, 04-11-2008 в 14:11.


Отправлено: 13:47, 04-11-2008 | #3


Аватара для dima1981

Ветеран


Сообщения: 512
Благодарности: 23

Профиль | Отправить PM | Цитировать


dmitryst,
Цитата dmitryst:
Так правильно »
на перле? )
при всем уважении у меня не получился этот код.
Цитата dmitryst:
определяю все нужные переменные
вывожу их с HTML в одном потоке:
print <<<END
<a href="#">$link_value</a>
...
ну и так далее
END
;; »
не могу понять, как это задействовать на практике трудновато, что то при всем желании dmitryst,

Sham, не мог бы в кратце пояснить про запятые, почему то, что ты написал получилось в отличии от того, что написал я т.е. понабрал оттуда да отсюда помаленьку?

-------
не уверен, что знаешь наверняка, говори об этом заблаговремено )


Отправлено: 00:24, 05-11-2008 | #4


Аватара для dima1981

Ветеран


Сообщения: 512
Благодарности: 23

Профиль | Отправить PM | Цитировать


dmitryst, про это
PHP код: Выделить весь код

$m_d=$_POST[m_d];

$result mysql_query("SELECT * FROM rt WHERE m_d='$m_d' LIMIT $start, $num"); 

определяю все нужные переменные
вывожу их с HTML в одном потоке:
print <<<END
<a href="#">$link_value</a>
...
ну и так далее
END
;; », да?

и у меня почему то условие поиска не воспринимается т.е. например прописываю букву l и показывает те слова в, которых она есть, если прописываю букву, которой нет ни в одном слове, то да он показывает, что страницу в, которой данных нет, что такое

-------
не уверен, что знаешь наверняка, говори об этом заблаговремено )


Последний раз редактировалось dima1981, 05-11-2008 в 01:04.


Отправлено: 00:53, 05-11-2008 | #5


Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


dima1981, все, что касается строк в PHP узнаете здесь http://ru2.php.net/language.types.string
Цитата dima1981:
$m_d=$_POST[m_d]; »
если m_d не константа, то там кавычки нужны везде... $_POST['m_d'] (если не внутри строки)...

* правильный синтаксис heredoc (который у вас немного неправильный) увидите по ссылке выше...

* не понятно, что и как вы ищите...

Отправлено: 01:49, 05-11-2008 | #6


Аватара для dima1981

Ветеран


Сообщения: 512
Благодарности: 23

Профиль | Отправить PM | Цитировать


Цитата Sham:
* не понятно, что и как вы ищите... »
есть html файл в, котором две формы для размещения данных в таблице, из этих форм данные передаются в виде переменных методом post обработчику, от него при соблюдении всех условий размещения заносятся в базу mysql. Потом есть второй html в, которм две формы для запроса данные из, которых приходят приведенному вначале темы обработчику и теперь, когда осуществляю поиск по базе то у меня первая страница отображается нормально, когда перехожу на вторую из панели навигации, то у меня оказывается автоматически происходит запрос не тот, который есть изначально, но вот этот
PHP код: Выделить весь код

else {  

   
$num 2;    
// Текущая страница  
$page=$_GET['page'];    
// Общее число сообщений  
$result mysql_query('SELECT * FROM rt');    
$posts mysql_num_rows($result);    
// Общее число страниц    
$total intval(($posts 1) / $num) + 1;    
// Начальная позиция отсчета  
$page intval($page);    
// Если $page отрицательно то, переходим на первую страницу  
if(empty($page) or $page 0$page 1;    
  if(
$page $total$page $total;    
// С какого номера начать выводить сообщения  
$start $page $num $num;    
// Вывод с $start  
$result mysql_query("SELECT * FROM rt LIMIT $start, $num");    


и не могу понять что не так.
за ссылку благодарю, щас читать отправляюсь, только не доходит до меня этот php и все тут )

-------
не уверен, что знаешь наверняка, говори об этом заблаговремено )


Отправлено: 02:24, 05-11-2008 | #7


Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


dima1981, вы пытаетесь изобрести велосипед... поищите готовые решения и там все будет понятно...

Отправлено: 03:15, 05-11-2008 | #8


Аватара для dima1981

Ветеран


Сообщения: 512
Благодарности: 23

Профиль | Отправить PM | Цитировать


Благодарю Sham, но так я поступаю за отсутствием мозгов и все равно не получается ничего, не передаются у меня переменные в pageвые страницы
вот код понимаю, что немного не отформатирован, но все таки может посмотрите?
PHP код: Выделить весь код

<?
$db 
mysql_connect("localhost","root","***");
mysql_select_db("rp"$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$m_o=$_POST[m_o];
$m_d=$_POST[m_d];
if (
$_POST[m_o] && $_POST[m_d])

  
$num 5;
  
$page=$_GET['page'];
  
$result mysql_query("SELECT * FROM rt WHERE m_o='$m_o' AND m_d='$m_d'");  
  
$posts mysql_num_rows($result); 
  
$total intval(($posts 1) / $num) + 1;
  
$page intval($page);
if(empty(
$page) or $page 0$page 1;   
  if(
$page $total$page $total;
  
$start $page $num $num;
  
$result mysql_query("SELECT * FROM rt WHERE m_o='$m_o' AND m_d='$m_d' LIMIT $start, $num");   

else if (
$_POST[m_o] && !$_POST[m_d]) { 
  
$num 5;
  
$page=$_GET['page'];
  
$result mysql_query("SELECT * FROM rt WHERE m_o='$m_o'");   
  
$posts mysql_num_rows($result);
  
$total intval(($posts 1) / $num) + 1;
  
$page intval($page);
if(empty(
$page) or $page 0$page 1;   
  if(
$page $total$page $total;
  
$start $page $num $num;
  
$result mysql_query("SELECT * FROM rt WHERE m_d='$m_o' LIMIT $start, $num");

else if ( 
$_POST[m_d] && !$_POST[m_o] ){ 
  
$num 5;
  
$page=$_GET['page'];
  
$result mysql_query("SELECT * FROM rt WHERE m_d='$m_d'");    // к примеру при этом запросе, первую страницу показывает правильно и определяется количество записей правильно и навигация есть, но когда по ней перехожу срабатывает вот этот запрос поставил плюс рядом с ним 
  
$posts mysql_num_rows($result);
  
$total intval(($posts 1) / $num) + 1;
  
$page intval($page);
if(empty(
$page) or $page 0$page 1;   
  if(
$page $total$page $total;
  
$start $page $num $num;
  
$result mysql_query("SELECT * FROM rt WHERE m_d='$m_d' LIMIT $start, $num");
else { 
  
$num 5;
  
$page=$_GET['page'];
  
$result mysql_query('SELECT * FROM rt');   //+
  
$posts mysql_num_rows($result);
  
$total intval(($posts 1) / $num) + 1;
  
$page intval($page);
if(empty(
$page) or $page 0$page 1;   
  if(
$page $total$page $total;
  
$start $page $num $num;
  
$result mysql_query("SELECT * FROM rt LIMIT $start, $num");   
echo ( 
"<center><h2>по данному запросу  $_POST[m_o] $_POST[m_d] информации в базе не размещено, вы можете посмотреть информацию, которая в базе есть, но база пополняется постоянно</h2></center>");

while ( 
$abc mysql_fetch_row($result))
{
echo (
"$abc[0]  | $abc[1]"); 
}
if (
$page != 1$pervpage '<a href= zt.php?page=1><<</a>   
                               <a href= zt.php?page='
. ($page 1) .'><</a> ';
if (
$page != $total$nextpage ' <a href= zt.php?page='. ($page 1) .'>></a>   
                                   <a href= zt.php?page=' 
.$total'>>></a>';
echo (
"<br><div align='center'>$pervpage $page2left $page1left  $page $page1right $page2right $nextpage</div>");
echo (
"<br><br><div align='center'>Всего страниц по запросу $total</div>");
mysql_close($db);
?>

-------
не уверен, что знаешь наверняка, говори об этом заблаговремено )


Отправлено: 03:41, 05-11-2008 | #9


Deadooshka


Сообщения: 2566
Благодарности: 698

Профиль | Отправить PM | Цитировать


dima1981, вы должны все параметры передавать методом get (и хтмл-форма должна быть get - т.е. через URL).

в ссылках навигации я не вижу никаких параметров кроме страницы, а должны быть все данные, включая строку запроса, и остальные данные формы (т.е. GET)

соответственно все $_POSTы после этого замените на $_GETы (переход по ссылкам означает, что вы посылаете параметры методом get)...

не забывайте все данные перед вставкой в строку запроса обрабатывать функцией mysql_real_escape_string() - это защита от изменения строки запроса извне...

в принципе можно совместить post и get (первоначально слать post, а ссылки уже будут get слать), и тогда нужно проверять уже $_REQUEST (это все данные подряд, присланные юзером)...
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:34, 05-11-2008 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » постраничная навигация mysql, php

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
php + mysql Аlchemist Программирование в *nix 10 04-09-2008 17:49
[решено] Apache 2.2.8 + Php 5.2.6 + MySQL 5.0.51b (win) - не работает php v0f41k Вебмастеру 4 11-05-2008 22:08
PHP+MYSQL pauluss Вебмастеру 6 09-07-2004 22:46
PHP+MySQL GhostBuster Программирование и базы данных 7 21-08-2003 21:07
php и mysql ZDemon Программное обеспечение Linux и FreeBSD 7 08-02-2003 03:33




 
Переход