Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/MySQL] problem z porcjowaniem rekordow
-Gość_phpion-
post
Post #1





Goście







Heja!
No i jestem zly. Mam baze danych, w ktorej sa zapisane pewne dane - jak to w bazie. Chcialbym, zeby skrypt poporcjowal mi rekordy na strony. Stworzylem taki kodzik:
  1. <? php
  2. $id = $HTTP_POST_VARS[&#092;"id\"];
  3.  
  4. $na_stronie = 3;
  5.  
  6. $q = &#092;"SELECT COUNT(id) FROM uzywane\";
  7. $q = mysql_query($q);
  8. $liczba_rekordow = mysql_result($q, 0, &#092;"COUNT(id)\");
  9.  
  10. $liczba_stron = ceil($liczba_rekordow / $na_stronie);
  11.  
  12. for ($i=1; $i<=$liczba_stron; $i++)
  13. {
  14. print &#092;"<a href=\"list.php?page=$i\">\".$i.\"</a>n\";
  15. }
  16. print &#092;"<br>\";
  17. if (!(isset($page)))
  18. $page = 1;
  19.  
  20. $od = ($page * $na_stronie * (-1)) + $liczba_rekordow + $na_stronie;
  21. $do = $na_stronie;
  22.  
  23. $q = &#092;"SELECT * FROM uzywane ORDER BY id DESC LIMIT $od,$do\";
  24. print $q.&#092;"<hr>\";
  25. $q = mysql_query($q);
  26.  
  27. while ($r = mysql_fetch_array($q))
  28. {
  29. print $r[0].&#092;" \".$r[1].\" \".$r[2].\" \".$r[3].\"<br>\";
  30. }
  31. ?>

Oczywiscie to kod testowy, na szybkesa :). I teraz tak:
Ladnie mi sie tworza linki do nastepnych stron (mam 5 rekordow wiec podzielilo mi je na 2 strony - git). I teraz zaczynaja sie klocki. W bazie mam tak zapisane dane (id, marka, rocznik, stan):
Kod
1 Yamaha KZ 1984 1
2 Honda 1977 2
3 Suzuki 2004 1
4 Kawasaki 1989 3
5 Kia 1999 1

Spacjami odzielilem kolejne pola. Czyli wypadaloby zeby na linku $page=1 byla Kia, Kawasaki i Suzuki, a na $page=2 Honda i Yamaha. Ale tak nie jest! Dla 1 zapytanie wyglada tak SELECT * FROM uzywane ORDER BY id DESC LIMIT 5,3 i sie NIC nie pojawia, a dla 2 tak SELECT * FROM uzywane ORDER BY id DESC LIMIT 2,3 i wypisuje Suzuki, Honda, Yamaha (czytajac od gory).
Ki diabel?! Pewno jakas pierdola no ale ja sie poddaje... :( Pomozcie jesli łaska. Ide zapalic... :(

PS: szukalem na forum...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
-Guest-
post
Post #2





Goście







$id => $page oczywiscie :/
Go to the top of the page
+Quote Post
-Guest-
post
Post #3





Goście







sorek za zasmiecanie ale powyzszy temat pisalem ja czyli phpion
Go to the top of the page
+Quote Post
tts
post
Post #4





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 14.02.2005

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


Cytat
Dla 1 zapytanie wyglada tak SELECT * FROM uzywane ORDER BY id DESC LIMIT 5,3 i sie NIC nie pojawia
- i nie ma prawa sie pojawic bo nie ma co zwrocic: pobierasz 3 rekordy zaczynajac od 6, a z tego co widze to nawet 6-tego nie ma.

Cytat
a dla 2 tak SELECT * FROM uzywane ORDER BY id DESC LIMIT 2,3 i wypisuje Suzuki, Honda, Yamaha (czytajac od gory).
- tu analogicznie zaczyna wypisywanie od 3 i wypisuje 3, czyli Suzuki, Honda, Yamaha...

wniosek: zle wybierasz wiersze z bazy


--------------------
"... - Water's wet, the sky is blue and old Satan Claus Jimmy, he's out there and he just gettin' stronger.
- So what do we do about that?
- Be prepared son that's my motto, be prepared..."
Go to the top of the page
+Quote Post
-Gość_phpion-
post
Post #5





Goście







Tak, wiem, juz sie skapnalem :) Ale i tak pojawil sie inny problem. Jezeli usune ktorys id np. z 1, 2, 3, 4, 5 zrobi sie 1, 3, 4, 5 i wtedy przy wypisywaniu wybranych elementow niektore (te z otoczenia 'dziury') sie dubluja :/ I tu juz kompletnie nie wiem co z tym fantem zrobic. Jak sie inaczej nie da to wczytam wszystkie id do tablicy, potem zrobie drugie zapytanie ktore mi wybierze z bazy odpowiednie krotki (tak sie to chyba nazywa :)). Tylko mam dziwne wrazenie ze ten sposob jest lekko nieefektywny hehe. Da sie to zrobic inaczej?
Go to the top of the page
+Quote Post
tts
post
Post #6





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 14.02.2005

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


masz blad w kodzie.
http://www.webdeveloper.pl/porcjowanie_wyn...121,1,1,pl.html - tu masz kod nie pisany na "szybkesa"


--------------------
"... - Water's wet, the sky is blue and old Satan Claus Jimmy, he's out there and he just gettin' stronger.
- So what do we do about that?
- Be prepared son that's my motto, be prepared..."
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 - 21:58