Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z funkcją next i previous
Forum PHP.pl > Forum > Przedszkole
arcziustka
Witam, mam mały problem, chce zrobić przycisk previous i next. Temat był wiele razy poruszany na forum, jednak zawsze funkcja była wywoływana względem id a ja chce aby link był id, ponieważ tak u mnie wywołują się linki.

Mam w pliku view.php takie funkcje:
  1. $zapytanie = mysql_query("SELECT * FROM posty WHERE url='$link'" ) or die("ERROR: Post doesn't exist.");
  2. $wynik= mysql_fetch_array($zapytanie);
  3.  
  4. $idnext=$wynik['id'];
  5.  
  6. $zapytanienext = mysql_query("SELECT * FROM posty WHERE id > "$idnext" ORDER BY url ASC LIMIT 1");
  7. $wyniknext = mysql_fetch_array($zapytanienext);


i dalej w tym samym pliku:

  1. echo ' <a href="'.$root_dir.'view/'.$wyniknext['url'].'">Następny post</a>';


Problem jest z tym drugim zapytaniem, ponieważ nie tworzy mi linku do następnego postu. Kiedy wpisze w zapytanienext że id=10 to pojawia się link do postu nr 10, jednak jak chce aby odnosił się tak jak jest w powyżej w funkcji to link nie działa poprawnie. Czy ktoś wie gdzie leży błąd?
sannin
Piszę z głowy:
  1. $zapytanie = mysql_query("SELECT * FROM posty WHERE url='$link';") or die("ERROR: Post doesn't exist.");
  2. $wynik= mysql_fetch_array($zapytanie);
  3.  
  4. $zapytanienext = mysql_query("SELECT * FROM posty WHERE id > {$wynik['id']} ORDER BY id ASC LIMIT 1");
  5. $wyniknext = mysql_fetch_array($zapytanienext);


a najlepiej daj:
  1. echo "SELECT * FROM posty WHERE id > {$wynik['id']} ORDER BY id ASC LIMIT 1";

i zobacz jak w rzeczywistości wygląda zapytanie.
arcziustka
Dzięki Sannin za odpowiedź, nietestowaniem twojego zapytania, ale rozwiązałem już ten problem. Problem okazał się śmieszny, wystarczyło zamienić pobraną tablicę z bazy na liczby rzeczywiste:
  1. $idnext= (int)$wynik['id'];

a w 2 zapytaniu zmienić na:
  1. $id > $idnext

Po prostu mysql_fetch_array pobierał mi tablice znaków z tego id zamiast liczby i trzeba było ją potem zamienić na liczby rzeczywiste. Chociaż nie rozumiem czemu pobierał tablicę znaków skoro w tym polu jest ustawiona wartość liczbowa (integer) a sam mysql_fetch_array może pobierać liczby.
nospor
W pierwszym poście to ty PARSE ERROR mialeś

nie: $zapytanienext = mysql_query("SELECT * FROM posty WHERE id > "$idnext" ORDER BY url ASC LIMIT 1");
a: $zapytanienext = mysql_query("SELECT * FROM posty WHERE id > $idnext ORDER BY url ASC LIMIT 1");
arcziustka
Możliwe że wcześniej nie działało dlatego że użyłem "_" w zapytaniu, tak jak piszesz Nospor. W sumie jak będę miał teraz trochę czasu to się pobawię tymi zapytaniami aby na przyszłość nie popełniać takich głupich i prostych błędów.
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.