Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Przeskok do następnego istniejącego rekordu
Forum PHP.pl > Forum > Przedszkole
mercs600
Witam mam coś takiego
  1. $id_wstecz = $r['id']-1;
  2. $id_dalej = $r['id']+1;

gdzie
  1. $r['id']
to aktualnie pobrany rekord z bazy, teraz chciałem sobie utworzyć link wstecz (czyli do poprzedniego ISTNIEJĄCEGO rekordu) i link dalej. Ogólnie jest ok, problem w tym, że jak poprzedni lub następny rekord nie istnieje to już jest czapa. Da radę jakoś to napisać zeby wracał lub leciał do ISTNIEJĄCEGO rekordu ?
b4x
można np.

  1. SELECT `id` FROM `costam` WHERE `id` < "'.$r['id'].'" LIMIT 1
- dla np. poprzedniego i analogicznie dla 'następnego'

  1. SELECT `id` FROM `costam` WHERE `id` > "'.$r['id'].'" LIMIT 1
mercs600
Dzięki a jak to sklepać z czymś takim

  1.  
  2. $id = !empty($_POST['a']) ? trim($_POST['id']) : trim($_GET['id']);
  3.  
  4. if(!empty($id)) {
  5. /* zapytanie do tabeli */
  6. $wynik = mysql_query("SELECT * FROM formularze WHERE
  7. id='$id'")
  8. or die('Błąd zapytania');
  9.  
  10. /*
  11.   wyświetlamy wyniki, sprawdzamy,
  12.   czy zapytanie zwróciło wartość większą od 0
  13.   */
  14. if(mysql_num_rows($wynik) > 0) {
  15. /* odczytujemy zawartość wiersza z tabeli */
  16. $r = mysql_fetch_assoc($wynik);
  17. /* wczytujemy dane do formularza */
  18. /*
  19.   w formularz znajdują się ukryte pola "a"
  20.   z wartością "save" i pole "id" z wartością
  21.   zmiennej id */
  22. echo ' <i> '.$r['imie'].' '.$r['nazwisko'].' Podanie nr: '.$r['id'].' </i> ';
  23.  
  24. $id_wstecz = $r['id']-1;
  25. $id_dalej = $r['id']+1;
  26.  
  27. //i tutaj wywolywalem linki
  28. //itd...
  29. ?>


Bo skrypt to id ogólnie pobiera z linku np. show.php?id=1
b4x
Coś w ten deseń:

  1. <?php
  2. $id = !empty($_POST['a']) ? trim($_POST['id']) : trim($_GET['id']);
  3.  
  4. if(!empty($id)) {
  5. /* zapytanie do tabeli */
  6. $wynik = mysql_query("SELECT * FROM formularze WHERE
  7. id='$id'")
  8. or die('Błąd zapytania');
  9.  
  10. /*
  11.   wyświetlamy wyniki, sprawdzamy,
  12.   czy zapytanie zwróciło wartość większą od 0
  13.   */
  14. if(mysql_num_rows($wynik) > 0) {
  15. /* odczytujemy zawartość wiersza z tabeli */
  16. $r = mysql_fetch_assoc($wynik);
  17. /* wczytujemy dane do formularza */
  18. /*
  19.   w formularz znajdują się ukryte pola "a"
  20.   z wartością "save" i pole "id" z wartością
  21.   zmiennej id */
  22. echo ' <i> '.$r['imie'].' '.$r['nazwisko'].' Podanie nr: '.$r['id'].' </i> ';
  23.  
  24. $q1 = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` WHERE `id` > "'.$r['id'].'" LIMIT 1'));
  25. $q2 = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` WHERE `id` < "'.$r['id'].'" LIMIT 1'));
  26.  
  27.  
  28. $id_dalej = $q1['id'];
  29. $id_wstecz = $q2['id'];
  30.  
  31. //i tutaj wywolywalem linki
  32. //itd...
  33. ?>
mercs600
Dzięki, buja! Tylko jak jesteś w ostatnim id i on chce jechać dalej to wtedy ta sama czapa, tak samo jak jesteś w id pierwszym i chce jecać wstecz
b4x
To zrób tak samo, trochę dużo zapytań co prawda dałoby się mniej zrobić ale tak żebyś "zrozumiał" masz:

  1. <?php
  2. $id = !empty($_POST['a']) ? trim($_POST['id']) : trim($_GET['id']);
  3.  
  4. if(!empty($id)) {
  5. /* zapytanie do tabeli */
  6. $wynik = mysql_query("SELECT * FROM formularze WHERE
  7. id='$id'")
  8. or die('Błąd zapytania');
  9.  
  10. /*
  11.   wyświetlamy wyniki, sprawdzamy,
  12.   czy zapytanie zwróciło wartość większą od 0
  13.   */
  14. if(mysql_num_rows($wynik) > 0) {
  15. /* odczytujemy zawartość wiersza z tabeli */
  16. $r = mysql_fetch_assoc($wynik);
  17. /* wczytujemy dane do formularza */
  18. /*
  19.   w formularz znajdują się ukryte pola "a"
  20.   z wartością "save" i pole "id" z wartością
  21.   zmiennej id */
  22. echo ' <i> '.$r['imie'].' '.$r['nazwisko'].' Podanie nr: '.$r['id'].' </i> ';
  23.  
  24. $first = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` ORDER BY `id` ASC LIMIT 1'));
  25. $last = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` ORDER BY `id` DESC LIMIT 1'));
  26.  
  27. if($id !== $first['id'] OR $id !== $last['id'])
  28. {
  29. $q1 = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` WHERE `id` > "'.$r['id'].'" LIMIT 1'));
  30. $q2 = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` WHERE `id` < "'.$r['id'].'" LIMIT 1'));
  31. }
  32.  
  33. $id_dalej = ($id === $last['id']) ? $last['id'] : $q1['id'];
  34. $id_wstecz = ($id === $first['id']) ? $first['id'] : $q2['id'];
  35.  
  36. //i tutaj wywolywalem linki
  37. //itd...
  38. ?>


Tak z palca pisane tongue.gif
mercs600
Dzięki masz odemnie punkta, wszystko buja tylko taka jest sprawa, bo jak klikasz dalej idzie co istniejacy rekord do przodu a jak klikniesz wstecz to powroci do pierwszego istniejacego a nie poprzedniego...
b4x
Sorki zapomniałem tongue.gif

  1. <?php
  2. $id = !empty($_POST['a']) ? trim($_POST['id']) : trim($_GET['id']);
  3.  
  4. if(!empty($id)) {
  5. /* zapytanie do tabeli */
  6. $wynik = mysql_query("SELECT * FROM formularze WHERE
  7. id='$id'")
  8. or die('Błąd zapytania');
  9.  
  10. /*
  11.   wyświetlamy wyniki, sprawdzamy,
  12.   czy zapytanie zwróciło wartość większą od 0
  13.   */
  14. if(mysql_num_rows($wynik) > 0) {
  15. /* odczytujemy zawartość wiersza z tabeli */
  16. $r = mysql_fetch_assoc($wynik);
  17. /* wczytujemy dane do formularza */
  18. /*
  19.   w formularz znajdują się ukryte pola "a"
  20.   z wartością "save" i pole "id" z wartością
  21.   zmiennej id */
  22. echo ' <i> '.$r['imie'].' '.$r['nazwisko'].' Podanie nr: '.$r['id'].' </i> ';
  23.  
  24. $first = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` ORDER BY `id` ASC LIMIT 1'));
  25. $last = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` ORDER BY `id` DESC LIMIT 1'));
  26.  
  27. if($id !== $first['id'] OR $id !== $last['id'])
  28. {
  29. $q1 = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` WHERE `id` > "'.$r['id'].'" LIMIT 1'));
  30. $q2 = mysql_fetch_assoc(mysql_query('SELECT `id` FROM `formularze` WHERE `id` < "'.$r['id'].'" ORDER BY `id` DESC LIMIT 1'));
  31. }
  32.  
  33. $id_dalej = ($id === $last['id']) ? $last['id'] : $q1['id'];
  34. $id_wstecz = ($id === $first['id']) ? $first['id'] : $q2['id'];
  35.  
  36. //i tutaj wywolywalem linki
  37. //itd...
  38. ?>
mercs600
Dzięki kolego za pomoc, z mojej strony oczywiście punkcik smile.gif jutro to przeanalizuje bo dzisiaj już za późno biggrin.gif pozdrawiam, temat można zamknąć.
Crozin
http://nospor.pl/mysql-faq-n25.html#faq-4
A to czy jesteś na pierwszej podstronie, czyli czy zablokować "< Poprzednie" możesz określić sprawdzając czy wynik dla "prev" w ogóle istnieje.
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.