Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z pagnacją [1] [2] [3]...
klakier1991
post 11.07.2011, 14:08:58
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.05.2011

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


Kod wygląda następująco.
  1.  
  2. $o=$num_results; //liczba przedmiotow ogolnie
  3. $ile=10; //liczba przedmiotow na strone
  4. $n=$_GET['p']; //pobranie numeru strony
  5. $a = $n - 1;
  6. if($n<1){ //zabezpieczenie przed pustym i ujemnym pustymi
  7. $n=1;
  8. }
  9. $max=$n*$ile;
  10.  
  11. $zapytanie = "SELECT * FROM box WHERE recipient='$username' LIMIT $a, $max;";
  12. $pobierz= mysql_query($zapytanie);
  13.  
  14.  
  15. for($i=($n-1)*$ile+1; ($i<=$max)&&($i<=$o); $i++){
  16.  
  17.  
  18. $dane = mysql_fetch_array($pobierz);
  19.  
  20.  
  21.  
  22. print "<input type='checkbox' name='ch[$dane[id]]' value='1' /><b><a href='/index.php?view=inbox&id=$dane[id]&p=$p'>$dane[sender] Tytuł: $dane[title] $dane[date]</b></a><hr />" ;
  23.  
  24. }
  25.  
  26. print '<input type="submit" name="Submit" value="Usuń" /></form>';
  27.  
  28. $is=(int)(ceil($o/$ile));
  29.  
  30. if(!$is){
  31. echo 'Nie masz żadnych wiadomości';
  32. }
  33.  
  34. else{
  35. for($i=1;$i<=$is;$i++)
  36. echo '<a href="index.php?view=inbox&p='.$i.'">['.$i.']</a>' ;
  37. }
  38.  
  39.  


Jak widać został skopiowany z tej strony i troszkę zmieniony.
Problem wygląda następująco, ilość wiadomości wyświetlanych i stron się zgadza, ale na drugiej stronie powtarzają się wiadomości z pierwszej i kilka z drugiej itd.
Nie mam pojęcia co jest nie tak ma ktoś jakiś pomysł ?
Go to the top of the page
+Quote Post
thek
post 11.07.2011, 14:20:57
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jeśli się kopiuje, to się patrzy co się kopiuje i myśli przy tym... Skopałeś linijkę 11 z zapytaniem do bazy. Lepiej popatrz jaką składnię ma LIMIT to się może obudzisz. Kopiowac i przerabiać czyjś kod też trzeba umieć.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
klakier1991
post 11.07.2011, 22:02:05
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.05.2011

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


hmm źle napisałem skopiowałem część kodu a ogółem limit to sam zrobiłem i co do składni limitu jak dobrze pamiętam to wyciąga rekordy od, do. Zanim napisałem na forum siedziałem przy tym cały dzień zmieniając wzory itp. po prostu ten jest najbliższy poprawności. Próbowałem zmieniać limit np. $n, $max
gdzie $n jest stroną a $max jest $n+$ilość_stron_wyświetlanych itp i nic ... ;/ nie wiem co jest nie tak a poza tym jestem
zielony wiec korzystam z pomocy forum.

Ten post edytował klakier1991 11.07.2011, 22:05:24
Go to the top of the page
+Quote Post
nospor
post 11.07.2011, 22:16:08
Post #4





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




W manualu masz napisane dokładnie czym są poszczególne parametry dla LIMIT - nie zgaduj, nie twórz różnych możliwości, tylko po prostu przeczytaj co jest co. W manual podane są również przykłady, które bardzo dobrze w praktyce pokazują tę teorię.


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

"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
klakier1991
post 11.07.2011, 22:34:38
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 17.05.2011

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


hahaha dzięki wszystkim po napisaniu mojego posta uświadomiłem sobie o co chodzi w tym limicie i co robiłem źle poprawiłem kod na:

  1. $max=$n*$ile;
  2. $a = $n*$ile-$ile;
  3. $b = $n*$ile+$ile;
  4. $zapytanie = "SELECT * FROM box WHERE recipient='$username' LIMIT $a, $b;";
  5. $pobierz= mysql_query($zapytanie);
  6.  

wystarczyła mała podpowiedź dzięki smile.gif
Go to the top of the page
+Quote Post
nospor
post 13.07.2011, 09:45:24
Post #6





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




Nawet z podpowiedzią nie jesteś w stanie poprawnie tego napisać....

$b to nie żadne:
$b = $n*$ile+$ile;
tylko
$b =10;
i już.

$b określa ile chcesz rekordów pobrać. A przecież zawsze chcesz pobrać stałą liczbę rekordów, czyli np. 10. To wszystko jest ładnie opisane w manualu i ładnie pokazane na przykładach.


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

"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

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 Wersja Lo-Fi Aktualny czas: 15.07.2025 - 04:49