Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] Poprzedni rekord
radziowie
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 1.11.2010

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


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?
Go to the top of the page
+Quote Post
ohm
post
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

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


http://codecalm.pl/blog/21,nawigacja-miedz...ie-danych-mysql
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


  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);


Ten post edytował sadistic_son 23.12.2010, 22:54:24
Go to the top of the page
+Quote Post
radziowie
post
Post #4





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 1.11.2010

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


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?
Go to the top of the page
+Quote Post
kabzun
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 24.12.2010

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


prosto. musisz sprawdzić czy istnieje.
Go to the top of the page
+Quote Post
radziowie
post
Post #6





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 1.11.2010

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


Mam sprawdzone, przez:
if (mysql_num_rows($poprzednie_id)>0)
I niestety nic

Czy ktoś wie jak można to sprawdzić?

Ten post edytował radziowie 24.12.2010, 14:22:54
Go to the top of the page
+Quote Post
tehaha
post
Post #7





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


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
Go to the top of the page
+Quote Post
radziowie
post
Post #8





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 1.11.2010

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


Tzn. jak takie coś można by zrobić? Nie jestem za dobry jeszcze w tablicach nie mówiąc o sesjach.
Go to the top of the page
+Quote Post
marcio
post
Post #9





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


  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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:55