Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Przeskok do następnego istniejącego rekordu
mercs600
post 26.11.2009, 23:52:36
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.11.2009

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


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 ?
Go to the top of the page
+Quote Post
b4x
post 26.11.2009, 23:58:45
Post #2





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


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


--------------------
Go to the top of the page
+Quote Post
mercs600
post 27.11.2009, 00:29:15
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.11.2009

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


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
Go to the top of the page
+Quote Post
b4x
post 27.11.2009, 00:34:24
Post #4





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


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


--------------------
Go to the top of the page
+Quote Post
mercs600
post 27.11.2009, 01:07:57
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.11.2009

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


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

Ten post edytował mercs600 27.11.2009, 01:09:57
Go to the top of the page
+Quote Post
b4x
post 27.11.2009, 01:19:44
Post #6





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


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


--------------------
Go to the top of the page
+Quote Post
mercs600
post 27.11.2009, 01:23:43
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.11.2009

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


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...
Go to the top of the page
+Quote Post
b4x
post 27.11.2009, 01:26:12
Post #8





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


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


--------------------
Go to the top of the page
+Quote Post
mercs600
post 27.11.2009, 01:29:32
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.11.2009

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


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ąć.
Go to the top of the page
+Quote Post
Crozin
post 27.11.2009, 02:13:45
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 16:42