Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Problem z funkcją next i previous, Raczej nie skompikowany
arcziustka
post 13.11.2011, 21:57:51
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 11.11.2011

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


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
sannin
post 13.11.2011, 23:11:01
Post #2





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

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


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.

Ten post edytował sannin 13.11.2011, 23:12:10
Go to the top of the page
+Quote Post
arcziustka
post 14.11.2011, 00:58:38
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 11.11.2011

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


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.
Go to the top of the page
+Quote Post
nospor
post 14.11.2011, 07:29:04
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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");


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
arcziustka
post 24.11.2011, 01:27:52
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 1
Dołączył: 11.11.2011

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


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.
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: 14.08.2025 - 04:08