Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Sąsiedztwo, następne/poprzednie ID, Jak pobrać następny i poprzedni numer ID dla rekordów w tabeli?
guilty82
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 31
Dołączył: 26.03.2007

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


Witam.

Tak, wiem że już było z 5 razy na tym forum. Jednak nie udało mi się dopasować żadnego z tych kodów, które już były dla mojego prostego (myślę) przykładu.

Problem jest taki, ze chcę pobrać najbliższe poprzednie/następne ID. Sposób Nospora wygląda obiecująco (chociaż nie wszystko rozumiem w jego zapytaniu), ale jednak nie działa według moich oczekiwań, co jest nie tak?

Oto kod:

  1. <?php
  2. $kid = $_GET['kid'];
  3. $id = $_GET['id'];
  4. $lista = mysql_query("SELECT plik FROM album_pliki WHERE id='$id' AND kid='$kid'");
  5.  
  6. while ($row = mysql_fetch_array($lista)) {
  7.  
  8. $id = $row['id'];
  9.  
  10. $q = "SET @nr=0, @id='$id', @idprev=0, @idprevfound=0, @idnext=0, @idnextfound=0";
  11. $q = "SELECT @nr := @nr +1, IF (id <> @id AND NOT @idprevfound , @idprev := id, 
  12. IF (@idprevfound , NULL , @idprevfound :=1)), 
  13. IF (id = @id , @idnextfound :=1, 
  14. IF (@idnextfound AND NOT @idnext , @idnext := id, NULL)) 
  15. FROM album_pliki WHERE kid='$kid' ORDER BY id DESC";
  16. $q="SELECT @idprev prev, @idnext next";
  17. $wynik = mysql_query($q);
  18. while ($rekord = mysql_fetch_array($wynik)) {
  19. $poprzedni = $rekord['prev'];
  20. $nastepny = $rekord['next']; 
  21. } 
  22.  
  23. echo '<a href="galeria.php?kid='.$kid.'&id='.$poprzedni. '">Poprzedni</a>';
  24. echo ' || ';
  25. echo '<a href="galeria.php?kid='.$kid.'&id='.$nastepny. '">Następny</a><br /><br />';
  26. echo '<img src="img/' .$row['plik']. '"border=0 alt="" />';
  27.  
  28. }
  29. ?>


kid - kategoria id (czyli do którego albumu przynależą dane pliki)

Tabelka wygląda mniej więcej tak:

id kid
1 1
2 2
3 1
4 1

Mając id=1 i kid=1, chcę aby po kliknięciu 'Następny' przeskakiwało z id=1 na id=3, a nie id=2..

Dzięki za jakiekolwiek sugestie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Pozdrawiam

-- EDIT --

Problem rozwiązany.. Dla zainteresowanych przedstawiam kod:

  1. <?php
  2. $kid = $_GET['kid'];
  3. $id = $_GET['id'];
  4. $lista = mysql_query("SELECT plik FROM album_pliki WHERE id='$id' AND kid='$kid'");
  5.  
  6. while ($row = mysql_fetch_array($lista)) {
  7.  
  8. $next = mysql_query("SELECT id 
  9. FROM album_pliki 
  10. WHERE id > '$id'
  11. AND kid='$kid' 
  12. ORDER BY id ASC 
  13. LIMIT 1");
  14. while ($n = mysql_fetch_array($next)) {
  15. $nastepny = $n['id'];
  16. }
  17.  
  18. if ($nastepny == '') {
  19. $nastepny = $_GET['id'];
  20. }
  21.  
  22. $prev = mysql_query("SELECT id 
  23. FROM album_pliki 
  24. WHERE id < '$id'
  25. AND kid='$kid' 
  26. ORDER BY id DESC
  27. LIMIT 1");
  28. while ($p = mysql_fetch_array($prev)) {
  29. $poprzedni = $p['id'];
  30. }
  31.  
  32. if ($poprzedni == '') {
  33. $poprzedni = $_GET['id'];
  34. }
  35.  
  36. echo '<a href="galeria.php?kid='.$kid.'&id='.$poprzedni. '">Poprzedni</a>';
  37. echo ' || ';
  38. echo '<a href="galeria.php?kid='.$kid.'&id='.$nastepny. '">Następny</a><br /><br />';
  39. echo '<img src="img/' .$row['plik']. '"border=0 alt="" />';
  40.  
  41. }
  42. ?>


Ten post edytował guilty82 3.06.2008, 18:16:13
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: 24.08.2025 - 14:43