Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Paginacja a pole wyboru select
slawekxx
post
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Witam, napisałem skrypt paginacji danych z bazy sql dodałem na stronie pole wyboru select gdzie wybiera się zapytanie do bazy - sortowanie według daty i teraz ma problem a mianowicie klikając w linki paginacji zmienia mi się pole wyboru select
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
d3ut3r
post
Post #2





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


Zapisz wartość selecta w sesji / ciasteczku i ustawiaj go za każdym razem na podstawie tej wartości.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
slawekxx
post
Post #3





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


ok tylko jak mam to zrobić ?
Go to the top of the page
+Quote Post
d3ut3r
post
Post #4





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


A jak próbujesz to robić ? nie dałeś żadnego kodu, więc nie bardzo mam co napisać. Zakładam, że znasz podstawy php i wiesz jak odbierać dane z formularza.



--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
slawekxx
post
Post #5





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


  1. <form action="" method="post">
  2. <select name="dzial" onchange="this.form.submit();return true;">
  3. <option value="">domyslnie</option>
  4. <option value="ASC">data malejaca</option>
  5. <option value="DESC">data rosnaco</option>
  6. </select>
  7. </form>
  8.  


zapytanie do bazy
  1.  
  2. $res = mysql_query("SELECT * FROM webacm_test ORDER BY `webacm_test`.`date` $dzial LIMIT $start, $per_page ");
  3.  
Go to the top of the page
+Quote Post
d3ut3r
post
Post #6





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


Można np tak:

  1. <?php
  2.  
  3. $allowed=array('ASC','DESC');
  4.  
  5. if (isset($_POST['dzial'])){
  6.  
  7. $_SESSION['order_direction']=$_POST['dzial'];
  8.  
  9. }
  10.  
  11. if (!isset($_SESSION['order_direction']) || !in_array( $_SESSION['order_direction'], $allowed, true)){
  12. $_SESSION['order_direction']='ASC'; //domyślna opcja
  13. }
  14.  
  15.  
  16.  
  17. $sql='SELECT * FROM webacm_test ORDER BY `webacm_test`.`date` '.$_SESSION['order_direction'].' LIMIT '.(int)$start.','.(int)$per_page;
  18.  
  19. $res = mysql_query($sql);
  20. ?>
  21.  
  22. <form action="" method="post">
  23. <select name="dzial" onchange="this.form.submit();return true;">
  24. <option <?=$_SESSION['order_direction']=='ASC' ? 'selected="selected"' : ''?> value="ASC">data malejaca</option>
  25. <option <?=$_SESSION['order_direction']=='DESC' ? 'selected="selected"' : '' ?> value="DESC">data rosnaco</option>
  26. </select>
  27. </form>


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
slawekxx
post
Post #7





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


nic się nie poprawiło
Go to the top of the page
+Quote Post
d3ut3r
post
Post #8





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


Rozpisz się bardziej smile.gif masz to gdzieś na live ? przed mysql_query daj print_r($_SESSION) zobacz czy zmienna jest poprawnie przypisana. Za mało szczegółów podajesz.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
slawekxx
post
Post #9





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


Linka live wysłałem na PRV
Go to the top of the page
+Quote Post
d3ut3r
post
Post #10





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


Wklej na forum cały kod jaki teraz masz ... ale dostałeś gotowca praktycznie kwestia dostosowania tego do twoich potrzeb. Offtopując nie wysyłaj PM forum jest ogólnodostępne, i jeżeli nie ja to ktoś inny Ci pomoże a tak to lipa :/


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
slawekxx
post
Post #11





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


  1. <form action="" method="post">
  2. <select name="dzial" onchange="this.form.submit();return true;">
  3. <option>domyslenie</option>
  4. <option <?=$_SESSION['order_direction']=='ASC' ? 'selected="selected"' : ''?> value="ASC">data malejaca</option>
  5. <option <?=$_SESSION['order_direction']=='DESC' ? 'selected="selected"' : '' ?> value="DESC">data rosnaco</option>
  6. </select>
  7. </form>
  8. </div>
  9. <div class="listPagesContainer">
  10. <ul>
  11. <?php
  12.  
  13. $per_page=5;
  14. if(!isset($_GET['page']))
  15. {
  16. $page=1;
  17. }
  18. else {
  19. $page=$_GET['page'];
  20. $cur_page = $page;
  21. }
  22. if($page<=1)
  23. $start=1;
  24. else
  25. $start=$page * $per_page-$per_page;
  26. $con = mysql_connect();
  27. if (!$con) {
  28. die("Error: " . mysql_error());
  29. }
  30. mysql_select_db("", $con);
  31. $num_rows=mysql_num_rows(mysql_query("SELECT * FROM webacm_test "));
  32. $num_pages=ceil($num_rows/$per_page);
  33. $no_of_paginations = ceil($num_rows /$per_page);
  34. $lastpage = ceil($num_rows/$per_page);
  35.  
  36.  
  37. //
  38. if($no_of_paginations>100){
  39. $stages=10;
  40. }
  41. if($no_of_paginations<=10){
  42. $stages=5;
  43. }
  44. if ($cur_page >= 7) {
  45. $start_loop = $cur_page - 5;
  46. if ($no_of_paginations > $cur_page + 5)
  47. $end_loop = $cur_page + 5;
  48. else if ($cur_page <= $no_of_paginations && $cur_page > $no_of_paginations - $stages) {
  49. $start_loop = $no_of_paginations - $stages;
  50. $end_loop = $no_of_paginations;
  51. } else {
  52. $end_loop = $no_of_paginations;
  53. }
  54. } else {
  55. $start_loop = 2;
  56. if ($no_of_paginations > 10)
  57. $end_loop = 10;
  58. else
  59. $end_loop = $no_of_paginations;
  60. }
  61. //
  62. if($page)
  63. $prev=$page-1;
  64. $next=$page+1;
  65. if($prev>0)
  66. echo"<li class='previous'><a href='?page=$prev'></a></li>";
  67.  
  68. // wyświetla zawsze pierwszą stronę
  69. for($i=1;$i<=$num_pages;$i++){
  70. if($i==1){
  71. echo'<li><a href="?page='.$i.'">'.$i.'</a></li>';
  72. }
  73. }
  74. if($page>=7){
  75. echo"<li>...</li>";}
  76. else{
  77.  
  78. }
  79. // wyświetla liczbę stron
  80. $loop=$end_loop-1;
  81.  
  82. if($cur_page>=0){
  83. for ($i=$start_loop; $i <= $loop;$i++) {
  84. if($i==$page){
  85. echo'<li class="active">'.$i.'</li>';
  86. } else {
  87. echo'<li><a href="?page='.$i.'">'.$i.'</a></li>';
  88. }
  89. }
  90.  
  91. //wyświetlanie numeru ostatniej strony
  92. for($j=$num_pages; $j<=$num_pages;$j++) {
  93. echo"<li>...</li>";
  94. echo'<li><a href="?page='.$j.'">'.$j.'</a></li>';
  95. }
  96. }
  97. else{
  98.  
  99. //
  100.  
  101. for ($i=1; $i<=$num_pages;$i++) {
  102. if($i==$page) {
  103. echo'<li class="active">'.$i.'</li>';
  104. } else {
  105. echo'<li><a href="?page='.$i.'">'.$i.'</a></li>';
  106. }
  107. }
  108. }
  109. if($page<ceil($num_rows/$per_page))
  110.  
  111. echo"<li class='next'><a href='?page=$next'></a></li>";
  112.  
  113.  
  114. ?>
  115. </ul>
  116. </div>
  117. <div class="productsContainer">
  118. <style type="text/css">
  119. /* <![CDATA[ */
  120. li {
  121. display: block;
  122. list-style: none;
  123. margin: 0;
  124. padding: 0;
  125. }
  126. /* ]]> */
  127.  
  128.  
  129.  
  130. </style>
  131. <?php
  132.  
  133. $allowed=array('ASC','DESC');
  134.  
  135. if (isset($_POST['dzial'])){
  136.  
  137. $_SESSION['order_direction']=$_POST['dzial'];
  138.  
  139. }
  140.  
  141. if (!isset($_SESSION['order_direction']) || !in_array( $_SESSION['order_direction'], $allowed, true)){
  142. $_SESSION['order_direction']='ASC'; //domyślna opcja
  143. }
  144.  
  145. $sql='SELECT * FROM webacm_test ORDER BY `webacm_test`.`date` '.$_SESSION['order_direction'].' LIMIT '.(int)$start.','.(int)$per_page;
  146.  
  147. $res = mysql_query($sql);
  148. while ($row = mysql_fetch_array($res)) {
  149. echo '<div class="product">
  150. <div class="header">
  151. <div class="name"><a href="">'.$row['date'].'</a>
  152. <div class="content">
  153. <div class="photo">
  154. <li><img src="'. $row['url_min'] . '" ></li>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. </div>';
  160. }
  161. ?>
  162.  
Go to the top of the page
+Quote Post
d3ut3r
post
Post #12





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


session_start i mój kod ma być na początku, formularz z orderem powinien być pod tym dopiero. Generalnie sieczka w tym kodzie ...


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
slawekxx
post
Post #13





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


to tak gdy wybiorę sortowanie np. według daty malejąco - sortowanie jest poprawne jeżeli kliknę w link paginacji to przeskoczy sortowanie według daty rosnąco i na odwrót
Go to the top of the page
+Quote Post
d3ut3r
post
Post #14





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


dałeś session_start na samym początku pliku ?


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
slawekxx
post
Post #15





Grupa: Zarejestrowani
Postów: 189
Pomógł: 2
Dołączył: 28.08.2010

Ostrzeżenie: (0%)
-----


ok dzięki działa smile.gif

Ok teraz chce wykorzystać pola checkbox do wybory ze stronicowanych danych czyli tak zwana filtracja według kategorii skrypt z jakiego korzystam jest poniżej próbowałem dać warunek do linii 31 ale paginacja następuje dopiero po zaznaczeniu pola checkbox
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 11:34