Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wyświetlanie przy paginacji
Gray
post
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


Witam, uczę się PHP i obecnie obrabiam sobie skrypt w którym zrobiłem paginację i wybór kategorii z rozwijanej listy <select> Działa to w ten sposób że wybieram z listy kategorię, po zatwierdzeniu skrypt wczytuje z bazy odpowiednie rekordy posiadające cyfrę (która odpowiada wybranej kategorii) w kolumnie kategorie. Problem w tym, że kiedy w paginacji ustawię wyświetlanie na stronę 3 rekordów, to wyświetlą się poprawnie ale po kliknięciu "Next Page" nie wyświetla się nic, tak jak by skrypt nie przechowywał informacji o wybranej z <select> kategorii i przymusie wyświetlenia reszty rekordów. Troszę zawile to opisałem, w razie czego mogę wytłumaczyć co potrzebne.

Oto skrypt:

  1. <html>
  2.  
  3. <form action="index.php?co=kat" method="post">
  4. <table>
  5. <tbody>
  6.  
  7. <tr>
  8. <td>Wybierz kategorię:</td>
  9. <td>
  10. <select name="rodzajkategorii">
  11. <option value="1" >a</option>
  12. <option value="2" >b</option>
  13. <option value="3" >c</option>
  14. <option value="4" >d</option>
  15. <option value="5" >e</option>
  16. <option value="6" >f</option>
  17. </select>
  18. </td>
  19. </tr>
  20. <tr>
  21. <td>
  22. <input type="submit" name="submit_kat" class="button" value="Wyswietl" />
  23. </td>
  24. </tr>
  25.  
  26. </tbody>
  27. </table>
  28. </form>
  29.  
  30. <?php
  31. $obiektname = 'art';
  32. $perPage = '4';
  33.  
  34. if(isset($_POST['submit_kat']) and $_GET['co']=='kat') {
  35.  
  36.  
  37. if (is_numeric($_REQUEST['page'])) {
  38. $page = (int) $_REQUEST['page'];
  39. if ($page < 1) {
  40. $page = 1;
  41. }
  42. } else {
  43. $page = 1;
  44. }
  45.  
  46. $start = ($page - 1) * $perPage;
  47.  
  48. $query = mysql_query("SELECT * FROM tabela WHERE kategorie='".$rodzajkategorii."' ORDER BY `id` DESC LIMIT $start, $perPage");
  49.  
  50. if($obiekt['akceptacja'] == 0) {
  51.  
  52. if(mysql_num_rows($query)) {
  53. while($obiekt = mysql_fetch_array($query)) {
  54.  
  55. if($obiekt['type'] == $obiektname) {
  56. echo'<div class="klasa1">';
  57. echo'<a href="wyswietl.php?'.$obiekt['id'].'"><img src="'.$obiekt['imgm'].'" /></a>';
  58. echo'</div>';
  59. }
  60. }
  61. } else {
  62. echo '<div>Nie ma nic tej kategorii.</div>';
  63. }
  64.  
  65. } //zamyka 2
  66.  
  67. else { echo '<div>Tutaj nic niema</div>'; }
  68.  
  69. $prev = $page - 1;
  70. $next = $page + 1;
  71. $prevLink = $_SERVER['PHP_SELF'] . '?page=' . $prev;
  72. $nextLink = $_SERVER['PHP_SELF'] . '?page=' . $next;
  73. echo "<p align='center'><a href='$prevLink'>Previous Page</a> | <a href='$nextLink'>Next Page</a></p>";
  74.  
  75. } //zamyka 1
  76.  
  77. ?>
  78.  
  79. </html>


Ten post edytował Gray 4.03.2012, 19:25:37
Go to the top of the page
+Quote Post
gargamel
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


Chyba $_GET['page'] zamiast $_REQUEST['page']
Go to the top of the page
+Quote Post
mat-bi
post
Post #3





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


-.-, przecież $_REQUEST = $_GET + $_POST, więc co za rady dajesz?


@EDIT:
Tak popatrzyłem i zastanowiło mnie to:

  1. if ($page < 1) {
  2. $page = 1;
  3. }
  4. } else {
  5. $page = 1;
  6. }


Chyba rozumiesz, o co mi chodzi wink.gif

Ten post edytował mat-bi 4.03.2012, 19:56:12
Go to the top of the page
+Quote Post
Gray
post
Post #4





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


Paginacja sama w sobie działa bo kiedy pokasuje oddziaływanie form-a itd. aż do prostej wersji wyświetlenia wszystkich rekordów to jest ok i strony działają... chodzi o to że nie działa w momencie kiedy robię podział na kategorie i paginowane strony powinny zawierać tylko wybrane rekordy :/

@edit:

@mat-bi to co zaznaczyłeś ustala stronę jako 1 nawet w przypadku kiedy nie ma żadnej lub jeśli jest poniżej też 1...

@czy trzeba w jakiś sposób przenosić wartość zmiennej ustalanej przez forma <select> do kolejnej ładowanej przez paginację strony?

Ten post edytował Gray 4.03.2012, 20:19:15
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
czy trzeba w jakiś sposób przenosić wartość zmiennej ustalanej przez forma <select> do kolejnej ładowanej przez paginację strony?
No wypadałoby.... niby skad kolejna strona ma wiedzieć, co wybrałeś wcześniej?

http://nospor.pl/formularz-i-stronicowanie...anie-stanu.html


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Gray
post
Post #6





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


@nospor używając sesji z tego linka który podałeś jak zrobić, żeby ustalona zmienna z formularza restartowała się po opuszczeniu pliku z paginacją np. paginacja.php ? czy ta sesja jest cały czas gdzieś zapamiętana? czy jej nie zamknięcie/wyczyszczenie nie będzie robiło problemów i spowalniało serwera?

Nie znam się na sesjach więc to pytanie może być dość błahe...

Ten post edytował Gray 5.03.2012, 22:23:34
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A po co czyścić? Dodałeś to niech siedzi.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Gray
post
Post #8





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


Mam pytanko, postanowiłem pobierać numer kategorii nie z rozwijanej listy <select> tylko z adresu strony przez GETa, jednak potrzebuję przechować pobraną wartość w sesji gdyż nie mogę na bieżąco pobierać GETem na kolejnych stronach... zrobiłem to tak ale chyba nie jest to poprawne:

  1. if (!empty($_GET['kategoria'])) {
  2. $formData = $_GET['kategoria'];
  3. }
  4.  
  5.  
  6.  
  7. $sesja = $formData;
  8.  
  9. echo $sesja;


Mógł by mnie ktoś pouczyć w jaki sposób poprawnie zapisać, przechować i wywołać zmienną z sesji?

Pozdrawiam.

Ten post edytował Gray 6.03.2012, 16:14:01
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przecież w linku co ci dałem masz podane jak z tego korzystać. Bez różnicy czy zmienna idzie z forma czy z get. Mechanizm ten sam.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Gray
post
Post #10





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


Kombinuję z tym, w przypadku kiedy zmienna była pobierana z form-a, paginacja działała poprawnie i pamiętało wartość zmiennej. Teraz kiedy pobieram z GET-a pierwsza strona wyświetla się dobrze, ale kolejne już nie, jak by sesja nie przenosiła zmiennej :/

  1. if (!empty($_GET['kategoria'])) {
  2. $formData = $_GET['kategoria'];
  3. }
  4.  
  5.  
  6. $_SESSION['sesja'] = $formData;
  7.  
  8. $sesja1 = $_SESSION['sesja'];
  9.  
  10. echo = $sesja1;
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W moim arcie kod wyglądał zupełnie inaczej. To co ty tu masz nie wiem jak sie ma do tego kodu.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Gray
post
Post #12





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


No staram sie to zrobić wg Twojego artu, jak już mówiłem nie znam sesji... mógł byś mi to skorygować? w kodzie który podałem na początku sprawdzam czy wartość GETa nie jest pusta, jeśli nie jest to zapisuję ją do zmiennej o nazwie $formData, następnie otwieram sesję i tworzę w niej zmienną $_SESSION['sesja'] której nadaję wartość stworzonej wcześniej zmiennej $formData no i na końcu tworzę zmienną $sesja1 o wartości $_SESSION['sesja']
Go to the top of the page
+Quote Post
nospor
post
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ale ja ci przecież napisałem: czy to idzie z forma czy z get to bez różnicy. Wszystko ma być tak samo. Skoro ci działa z forma czyli z POST to identycznie masz zrobic z GET. Nic masz nie zmieniac. NIC NIC NIC. Tylko zamiast POST masz pisać GET.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Gray
post
Post #14





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


Zrobiłem coś takiego:

  1.  
  2. if (!empty($_GET['kategoria'])) {
  3.  
  4. $_SESSION['form'] = array(
  5. 'kategoria' => $_GET['kategoria']
  6. );
  7.  
  8. }
  9.  
  10. $formData = array(
  11. 'kategoria' => !isset($_SESSION['form']) ? null : $_SESSION['form']['kategoria']
  12. );


I teraz zwraca mi $formData jako ciąg znaków... "array"
Nie mogę zrobić tego identycznie jak w przypadku FORMa bo nie mam tutaj guzika submit...

Ten post edytował Gray 6.03.2012, 17:10:02
Go to the top of the page
+Quote Post
nospor
post
Post #15





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
I teraz zwraca mi $formData jako ciąg znaków... "array"
Przy formularzu tez ci zwracał array...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Gray
post
Post #16





Grupa: Zarejestrowani
Postów: 127
Pomógł: 0
Dołączył: 5.04.2010

Ostrzeżenie: (10%)
X----


eh jeszcze dużo nauki mi brakuje... popełniłem błąd i wywołałem samo $formData zamiast $formData['kategoria'] , sorry za zamieszanie i dzięki za cierpliwość

Ten post edytował Gray 6.03.2012, 17:19:47
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: 21.08.2025 - 00:07