Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Постраничная навигация

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Сергей-К
Отправлено: 09 Февраля, 2010 - 20:32:52
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)




Всем доброго времени суток. Кто знает, помогите!
Имеется запрос к базе данных, в результате этого запроса формируем массив и данные этого массива выводяться в цикле, эти данные будут выводиться пока в базе имеется информация соответствующая запросу. В базе может находиться до нескльких сотен таких строк с нужной информацией.
ВОПРОС: Как сделать так, чтоб вывести определённое количество этих строк на одной странице, допустим 30 строк (естественно, внизу страницы поставить ссылку на следующую страничку), а потом продолжить вывод на следующей странице, так же 30 строк и т.д..
Кто знает, будьте добры, поделитесь информацией.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $db = mysql_connect ("localhost", "login", "password");
  4. mysql_select_db ("baza1", $db);
  5.  
  6. $result = mysql_query ("SELECT * FROM tab1 WHERE raion ='$raion' AND street='$street' ", $db);
  7. $myrow = mysql_fetch_array ($result);
  8.  
  9. do
  10. {
  11. /* одна строка */
  12. echo "Район-".$myrow ['raion']."<br>";
  13. echo "Улица-".$myrow ['street']."<br>";
  14. echo "Дом-".$myrow ['dom']."<br>";
  15. echo "Этаж-".$myrow ['itag']."<br>";
  16. .
  17. .
  18. .
  19. .
  20. echo "<br>";
  21. /* вторая строка */
  22.  
  23. }
  24. while ($myrow=mysql_fetch_array($result));
  25.  
  26. ?>


Отредактировано модератором: SAD, 09 Февраля, 2010 - 20:53:37
Удалил опрос из- за ненужности.И обрамляйте код соответствующими тегами. Название темы тоже изменил
 
 Top
SAD Модератор
Отправлено: 09 Февраля, 2010 - 20:51:40
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




По теме в интернете куча примеров. В поиске введите постраничная навигация на php. И пробуйте, если что поможем.
 
 Top
vaanyaa
Отправлено: 10 Февраля, 2010 - 13:12:42
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2010  
Откуда: Киев


Помог: 0 раз(а)




добавь в стрку запроса
CODE (htmlphp):
скопировать код в буфер обмена
  1. $result = mysql_query ("SELECT * FROM tab1 WHERE raion ='$raion' AND street='$street' LIMIT30,0 ", $db)

Первая цифра это количество элементов, вторая с какого элемента вытягивать(на второй странице она должна быть 30)

(Отредактировано автором: 10 Февраля, 2010 - 13:13:26)

 
 Top
Сергей-К
Отправлено: 11 Февраля, 2010 - 11:38:25
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)




Цитата:
По теме в интернете куча примеров. В поиске введите постраничная навигация на php. И пробуйте, если что поможем.

Да, дествительно много чего по теме, просто не там искал до этого. В результате поисков, получилось вот что:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4. if(isset($_POST["raions"])) {$raion =$_POST["raions"] ;}
  5. if(isset($_POST["streets"])) {$streets =$_POST["streets"] ;}
  6.  
  7. $db = mysql_connect ("localhost", "seregaketov", "12369874");
  8. mysql_select_db ("baza1", $db);
  9.  
  10. $result = mysql_query ("SELECT * FROM vtor WHERE raion='$raion'  ", $db);
  11. $myrow = mysql_fetch_array ($result);
  12.  
  13. $ret = mysql_num_rows ($result);
  14. $num=30 ;
  15. $page=$_GET['page'];
  16. $total=intval(($ret - 1)/$num)+1;
  17. $page=intval($page);
  18.  
  19. if (empty($page) or $page <0) $page=1;
  20. if ($page > $total) $page=$total;
  21.  
  22. $start=$page*$num-$num;
  23. $result=mysql_query("SELECT * FROM vtor WHERE raion='$raion' LIMIT $start, $num ");
  24.  
  25. while ($myrow1[]=mysql_fetch_array($result));
  26. for($i=0; $i < $num; $i++)
  27. {
  28. echo $myrow1[$i]['street'];
  29. echo $myrow1[$i]['te'];
  30. echo $myrow1[$i]['raion'];
  31. echo $myrow1[$i]['name'];
  32. echo "<br>";
  33. }
  34.  
  35. if ($page != 1) $pervpage = '<a href= ./po.php?page=1><<</a>  
  36.                               <a href= ./po.php?page='. ($page - 1) .'><</a> ';  
  37. // Проверяем нужны ли стрелки вперед  
  38. if ($page != $total) $nextpage = ' <a href= ./po.php?page='. ($page + 1) .'>></a>  
  39.                                   <a href= ./po.php?page=' .$total. '>>></a>';  
  40.  
  41. // Находим две ближайшие станицы с обоих краев, если они есть  
  42. if($page - 2 > 0) $page2left = ' <a href= ./po.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';  
  43. if($page - 1 > 0) $page1left = '<a href= ./po.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';  
  44. if($page + 2 <= $total) $page2right = ' | <a href= ./po.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';  
  45. if($page + 1 <= $total) $page1right = ' | <a href= ./po.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
  46.  
  47. // Навигация
  48. echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
  49. ?>
  50.  


В этом случае возникает проблема: ка надо выводятся первые 30 строк данных, при нажатии в навигации на стр. 2 (чтоб посмотреть следующие 30 строк), выдаёт что таких вариантов не найдено (хотя их куча) и что неопределённая переменная $raion.
$raion на страницу po.php (собственно страница обработки и вывола информации) попадает из формы поиска.
Если mysql запрос делать без: WHERE raion='$raion' , то всё работает нормально, но надо, чтоб это WHERE... было в запросе.
Помогите, что подправить, где ошибка. Очень надо.
 
 Top
RomAndry Администратор
Отправлено: 11 Февраля, 2010 - 11:56:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




$_POST["raions"] а где она у Вас определена, в какой форме?
 
My status
 Top
Сергей-К
Отправлено: 11 Февраля, 2010 - 12:03:13
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)




Есть html форма поиска на другой странице (данные из формы передаются методом POST), пользователь заполняет её и нажав на кнопочку начинает поиск.
Привожу сокращённый вариант формы:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. <form action="po.php" method="post" enctype="multipart/form-data" name="3">
  4. Район<br>
  5. <select name='raions' class="v" >
  6. <option>  
  7. <option>Дзержинский                    
  8. <option>Индустриальный
  9. <option>Кировский
  10. <option>Ленинский                      
  11. <option>Мотовилихинский
  12. <option>Орджоникидзевский
  13. <option>Свердловский
  14. </select>
  15. <br><br>Улица
  16. <br><select name="streets" class="v" >
  17.       <option></option>
  18.         <option>1905 Года</option>      <option>1-й Павловский пр.</option>     <option>25-го Октября</option>  <option>40-летия Победы</option>
  19.         <option>4-й Пятилетки</option>  <option>9-го Мая</option>       <option>9-го Января</option>    <option>Абаканская</option>     <option>  Абрикосовая (Новобродовский)</option> <option>Авангардная</option>    <option>Авиационная</option><option>Автозаводская</option>
  20.         <option>Агрономическая</option> <option>Азотная</option>        <option>Акмолинская</option>    <option>Аксайская</option>
  21.         <option>Алексеевская</option>   <option>Алмазная</option>       <option>Алтайская</option>      <option>Амбарная</option>
  22.         <option>Аметистовая</option>    <option>Амурская</option>       <option>Анапская</option>       <option>Ангарская</option>
  23.         <option>Андреевская</option>    <option>Андроновская</option>   <option>Андроновская 1-я</option>
  24.         <option>Андроновская 2-я</option>       <option>Анри Барбюса</option>   <option>Апрельская</option>     <option>Арагвинская</option>
  25.         <option>Ардатовская</option>    <option>Ардатовская 2-я</option>        <option>Арзамасская</option>    <option>Арская</option>
  26. </select>
  27. <input name="1" type="submit" value="найти">
  28. </form>
  29.  
  30.  
 
 Top
vaanyaa
Отправлено: 11 Февраля, 2010 - 13:30:06
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Февр. 2010  
Откуда: Киев


Помог: 0 раз(а)




Дело в том что когда ты переходишь на новую страницу переменные из формы уже не передаются.
Попробуй поставить сессию, и записать переменные POST в переменные сессии.
тогда они будут сохранятся при переходе по кнопкам
 
 Top
Сергей-К
Отправлено: 11 Февраля, 2010 - 17:53:18
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)




Очень БЛАГОДАРЕН Вам vaanyaa, сделал через сессии, стало работать так как надо. Позже выложу исправленный код, может кому и пригодится.
У меня есть ещё вопросик, может не совсем в тему.
Как сделать mysql запрос "динамичным" ? Т.е. допустим из html формы запроса пришла пустое значение streets, таким образом мне нужно в запросе игнарировать строчку: "AND street='$streets' ", чтоб она не участвовала в запросе. Как это осуществляеться, подскажите.
PHP:
скопировать код в буфер обмена
  1.  
  2. $result = mysql_query("SELECT * FROM vtor WHERE raion='$raion'  AND street='$streets' AND tipdom='$tipdom', $db);
  3.  
 
 Top
Марк
Отправлено: 12 Февраля, 2010 - 19:30:59
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2009  
Откуда: Украина


Помог: 0 раз(а)




Всем привет! Народ помогите разобраться в постраничной навигации. В поиске выдает много чего, но все что я просматривал не работало. Может кто нибудь объяснить что оно и как? Заранее благодарен


-----
Учись так, как будто тебе предстоит жить вечно; живи так, как будто тебе предстоит умереть завтра.
 
 Top
Сергей-К
Отправлено: 12 Февраля, 2010 - 19:56:16
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Февр. 2010  
Откуда: Россия


Помог: 0 раз(а)




Марк, привидите пример, что у вас не получается (код страницы), вообще что вы хотите сделать?
 
 Top
Марк
Отправлено: 12 Февраля, 2010 - 20:24:52
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2009  
Откуда: Украина


Помог: 0 раз(а)




Я хочу понять как оно работает. Вот недавно я вообще смутно представлял работу с MySQL, немного почитал литературу, (здесь же), получилась запись в базу данных, а потом вывод этого всего на страницу. Как это все работает, я понял в общих чертах. Хотелось бы и разобраться с постраничным выводом. Вот к примеру
PHP:
скопировать код в буфер обмена
  1.  
  2. iif ($number == 0) {
  3.   echo "<CENTER><P>Сообщений нет</CENTER>";
  4. } else {
  5.   echo "<CENTER><P>Сообщений: $number<BR><BR>";
  6.   while ($row = mysql_fetch_array($res)) {
  7.     echo "".$row ['nik']."<BR>";
  8.     echo "".$row ['soob']."<BR>";
  9.     echo "<BR><BR>";
  10.   }
  11.   echo "</CENTER>";
  12. }
  13.  

Это получаеться все данные выводятся. Когда было больше 30, я задумался о постраничном выводе
(Добавление)
Не то что не получаеться, а я вообще толком не представляю что и как здесь нужно


-----
Учись так, как будто тебе предстоит жить вечно; живи так, как будто тебе предстоит умереть завтра.
 
 Top
Марк
Отправлено: 29 Апреля, 2010 - 20:04:24
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Нояб. 2009  
Откуда: Украина


Помог: 0 раз(а)




Люди кто нибудь поможет с постраничной навигацией? С LIMIT и двумя ссылками. Вперед и назад? В сети много всего, но у меня оно почему то не работает. Самое простенькое. Помогите!
Вот у меня есть
PHP:
скопировать код в буфер обмена
  1.  
  2. while ($fow=mysql_fetch_array($res)) {
  3. echo '<br><hr style="width: 100%; height: 2px;" />';
  4. echo "<n>Дата: ".$fow['today']."<BR>";
  5. echo "Время: ".$fow['time']."<BR>";
  6. echo "Ник: ".$fow['nik']."<BR>";
  7. echo "Сообщение:<BR>";
  8. echo "".$fow['soob']."</n><br>";
  9. echo '<br>';
  10.   }
  11.  

В таблице ком больше сотни записей, отображаются первые 10 (FROM $userstable ORDER BY id DESC LIMIT 10), в гостевой. А вот как добраться к остальным...

(Отредактировано автором: 29 Апреля, 2010 - 20:06:13)



-----
Учись так, как будто тебе предстоит жить вечно; живи так, как будто тебе предстоит умереть завтра.
 
 Top
Zend
Отправлено: 29 Апреля, 2010 - 20:43:39
Post Id


Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Февр. 2010  


Помог: 0 раз(а)




Сергей-К пообещали выложить полный рабочий код... Можно на него посмотреть ?
 
 Top
koras
Отправлено: 29 Апреля, 2010 - 22:03:11
Post Id



Частый гость


Покинул форум
Сообщений всего: 224
Дата рег-ции: Окт. 2009  


Помог: 0 раз(а)




Больная тема у всех начинающих, как и у меня.

Я делаю 2 запроса,
первый на подсчет количества.
второй на вывод, на основе того что подсчитал.
 
 Top
Irbis
Отправлено: 30 Апреля, 2010 - 01:46:02
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $limit = 5; // По сколько строк на страницу.
  2. $ttpage = $_GET['pg']; // Номер текущей страницы.
  3. if(!$ttpage){  // Если нету
  4.         $ttpage = 1;// Значит это первая страница
  5. }
  6. // Первым запросом узнаем сколько всего строк в таблице mytable:
  7. $total = mysql_result(mysql_query("SELECT COUNT(*) FROM mytable"), 0);
  8. $countp = $total/$limit;// Узнаем количество страниц
  9. if (is_double($countp)){ // Если получаем не целое число
  10.         $countp = (int) $countp; // Делаем его таковым
  11.         $countp = $countp + 1; // И прибавляем единицу.
  12. }
  13. $arrpages = range(0, $countp);// Создаем массив для последующего вывода навигации
  14. $page = $ttpage - 1; // Уменьшам номер страницы на 1
  15. if ($page != 0){  // Если получили не нулевой результат
  16.         $pgs = $page * $limit; // Получаем номер строки с которой начинаем вывод
  17. } else { // Если же результат получился нулевым
  18.         $pgs = 0; // То выводим с 0-й строки, т.е. с самого начала
  19. }
  20. //Вторым запросом уже получаем нужные строки из таблицы mytable
  21. $get_db = mysql_query("SELECT * FROM mytable LIMIT ".$pgs.", ".$limit);
  22. while($arr_db = mysql_fetch_assoc($get_db)){
  23.         print_r($arr_db);
  24. }
  25. // Навигация по страницам
  26. for($i = 0; $i < count($arrpages); $i++ ){
  27.         if (($i != 0) && ($i != $ttpage)){
  28.                 $htmlpages .= '<a href="?pg='.$arrpages[$i].'">'.$arrpages[$i].'</a> ';
  29.         } else if (($i != 0) && ($i == $ttpage)){
  30.                 $htmlpages .= $arrpages[$i];
  31.         }
  32. }
  33. echo $htmlpages;
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB