Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Poprzedni rekord
Forum PHP.pl > Forum > Przedszkole
radziowie
Mam zmienną która zawiera id_kategorii i id_zdjecia. Chciałbym pobrac poprzedni i następny rekord z danej kategorii. Tzn. mam np tabele:
id|xxx|id_kat
1|x|1
3|x|1
4|x|1
5|x|2
....
Jak widzimy dla id 3, poprzedni rekord który należy do tego id_kat jest id 1 natomiast następny to 4. Jak mogę rozwiazać ten problem?
sadistic_son
  1. $poprzednie_id=mysql_result(mysql_query("SELECT id FROM tabela WHERE id < $obecne_id AND id_kat = $id_kat ORDER BY id DESC LIMIT 1"),0);
  2.  
  3. $nastepne_id=mysql_result(mysql_query("SELECT id FROM tabela WHERE id > $obecne_id AND id_kat = $id_kat ORDER BY id ASC LIMIT 1"),0);
radziowie
Napisałem kod:
  1. $poprzednie_id=mysql_query("SELECT * FROM zdjecia z, kategorie k WHERE z.id_zdjecia < ".$id_zdjecia." AND z.id_kat = k.id_kat
  2. AND z.id_kat = '".$id_kat."' ORDER BY k.id_kat DESC LIMIT 1");
  3. $poprzednie=mysql_result($poprzednie_id, 0);
  4. if (mysql_num_rows($poprzednie_id)>0)
  5. {
  6. echo '<a href="galeria.php?kat='.$id_kat.'&amp;zdjecie='.$poprzednie.'" border="0" alt="Poprzednie zdjęcie" title="Poprzednie zdjęcie">
  7. <img src="./upload/galeria/mini/'.$zdjecie.'" border="0"></a>';
  8. }

Ale teraz pojawia się problem, gdy nie ma niższego rekordu spełniającego zapytanie. Pojawia sie komunikat:
Kod
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 8...
Jak można ominąć ten problem?
kabzun
prosto. musisz sprawdzić czy istnieje.
radziowie
Mam sprawdzone, przez:
if (mysql_num_rows($poprzednie_id)>0)
I niestety nic

Czy ktoś wie jak można to sprawdzić?
tehaha
wydaje mi się, że wydajniej będzie pobrać wszystkie numery ID zdjęć z danej kategorii i zapisać w tablicy, wtedy możesz bardzo łatwo pobrać następny/poprzedni numer ID zwiększając lub zmniejszając klucz tablicy o 1, taką tablicę zapisujesz do sesji, żeby to zapytanie wykonać tylko raz
radziowie
Tzn. jak takie coś można by zrobić? Nie jestem za dobry jeszcze w tablicach nie mówiąc o sesjach.
marcio
  1. // zapytanie
  2. $select = 'select id from zdjecia where z.id_kat = '".$id_kat."' order by id desc';
  3. //potem robisz mysql_query()
  4. //po czym petle while() z mysql_fetch_assoc() gdzie dane przypisujesz do jakiejs tablicy czyli:

I w tablicy bedziesz mial wszystkie rekordy
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.