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 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. ?>