Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyświetlanie poprzedniego i następnego rekordu/użytkownika/strony/zdjęcia/postu PRZYKŁAD
Forum PHP.pl > Forum > PHP
vodkon
Witam chciałbym pokazać najlepszy sposób wyświetlania następnego i poprzedniego rekordu z bazy
najpierw wyświetlamy rekord
  1. $zap_MySQL = mysql_query("SELECT * FROM galeria WHERE id = '6' ORDER BY id");$MySQL = mysql_fetch_array($zap_MySQL);

to był przykładowy kod który wyświetlamy np. po wejściu w profil użytkownika czy też zdjęcie i załóżmy że ma adres /zdjęcie/6
teraz chcemy wyświetlić poprzednie i następne zdjęcie mogli byśmy pobrać id i zrobić $MySQL["id"]-1; i dało by nam poprzednią stronę ale co jeśli usunęliśmy jakiś rekord z bazy i jest 1,2,3,6,9,10,11... w tym przypadku powyższy pomysł nie wypali więc trzeba zrobić zapytanie przez mysql żeby pokazało o jeden do przodu robimy to w następujący sposób:
  1. $idnxpr = $MySQL["id"]; // Pobiera indykator rekordu (id)
  2. $mynext = mysql_query("SELECT * FROM galeria WHERE id > '$idnxpr' LIMIT 1"); //wykonujemy zapytanie żeby pokazał 1 (LIMIT 1) rekord który jest większy od naszego obecnego id (id > '$idnxpr')
  3. $nextnum = mysql_num_rows($mynext); // Sprawdzamy czy rekord istniej np. jeśli jest to pierwszy lub ostatni rekord to następnego lub poprzedniego już nie będzie
  4. $myprev = mysql_query("SELECT * FROM galeria WHERE id < '$idnxpr' ORDER BY `id` DESC LIMIT 1"); //teraz sprawa się skomplikuje ale trochę bo trzeba wyświetlić poprzedni rekord i robimy zapytanie żeby pokazało rekord z mniejszym id od naszego (id < '$idnxpr') lecz trzeba kazać mu wyświetlić od najnowszego rekordu czyli (ORDER BY `id` DESC LIMIT 1) i wyświetla poprzedni rekord
  5. $prevnum = mysql_num_rows($myprev); // to samo jak w lini 3
  6.  
  7. if($prevnum == 1){ // sprawdzanie warunku czy rekord poprzedni istnieje
  8. $MySQLqws = mysql_fetch_array($myprev); // pobiera dane z rekordu
  9. echo '<a href="/Zdjęcie/'.$MySQLqws['id'].','.$MySQLqws['size'].'" class="back" title="Przejdź do poprzedniego zdjęcia"><i></i></a>'; // link który przenosi do poprzedniego rekordu
  10. }
  11. if($nextnum == 1){ // sprawdzanie warunku czy rekord następny istnieje
  12. $MySQLqws2 = mysql_fetch_array($mynext); // pobiera dane z rekordu
  13. echo '<a href="/Zdjęcie/'.$MySQLqws2['id'].','.$MySQLqws2['size'].'" class="next" title="Przejdź do następnego zdjęcia"><i></i></a>'; // link który przenosi do następnego rekordu
  14. }


ten sposób jest najlepszy przykład zastosowania [zmoderowane] Napisałem taki poradnik jakby komuś było trudno napisać samemu
memory
kolego poradnik napisałeś o 14 lat za późno
vodkon
wiem ale to jakby ktoś miał z tym problem bo sam znaleźć nic porządnego nie mogłem
nospor
Cytat
bo sam znaleźć nic porządnego nie mogłem

Wpisujesz w google: mysql następny rekord
i już na pierwszej stronie masz
http://nospor.pl/mysql-faq.html#faq-4
Innych pozycji z wyników wyszukiwania nie sprawdzałem.


edit: przejrzałem jednak parę pozycji z wyników google co ci podałem i o dziwo większość zawiera to czego szukamy... zamiast więc pisać poradniki z informacją, która jest banalnie dostępna w necie, zacznij od przeczytania poradnika "Jak korzystać z google" smile.gif
c1chy
  1. $idnxpr = $MySQL["id"];


rzutuj to na int bo później będziesz szukał jak baza mogła wyciec do sieci.
widmo_91
Cytat(c1chy @ 23.06.2013, 12:27:50 ) *
  1. $idnxpr = $MySQL["id"];


rzutuj to na int bo później będziesz szukał jak baza mogła wyciec do sieci.


nie rozumiem
c1chy
hmm w sumie to ja też smile.gif sorry założyłem że $MySQL['id'] pochodzi od użytkownika. Chodziło mi o podatność na SQL Injection i raczej z pośpiechu przeczytałem $_GET['id'] (nie pytaj jak smile.gif )
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.