Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] problem z porcjowaniem rekordow
Forum PHP.pl > Forum > Przedszkole
Gość_phpion
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...
Guest
$id => $page oczywiscie :/
Guest
sorek za zasmiecanie ale powyzszy temat pisalem ja czyli phpion
tts
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
Gość_phpion
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?
tts
masz blad w kodzie.
http://www.webdeveloper.pl/porcjowanie_wyn...121,1,1,pl.html - tu masz kod nie pisany na "szybkesa"
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.