Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Wyświetlanie poprzedniego i następnego rekordu
sebekzosw
post 13.08.2010, 13:15:37
Post #1





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Witam!
Mam takie zapytanie:

Kod
(SELECT *, 'prev' AS `typ` FROM `sp_cms_zdjecia` WHERE `id` < 4 AND `album`=1 AND `status`='1' ORDER BY `id` DESC LIMIT 1)
UNION (SELECT *, 'selected' AS `typ` FROM `sp_cms_zdjecia` WHERE `id` = 4 AND `album`=1 AND `status`='1' LIMIT 1)
UNION (SELECT *, 'next' AS `typ` FROM `sp_cms_zdjecia` WHERE `id` > 4 AND `album`=1 AND `status`='1' ORDER BY `id` ASC LIMIT 1);


Potrzebne mi to będzie do galerii - będzie mi wyświetlało wybrane zdjęcie, następne i poprzednie. Jednak potrzebuje dorobić jeszcze wyświetlanie nr zdjęcia, np.: "Zdjęcie 15/100" - Jak mogę to zrobić?

Widziałem takie coś: http://nospor.pl/mysql-faq.html#faq-8 , jednak po wpięciu to do mojego kodu wywalało mi jakieś błędy ;/
Go to the top of the page
+Quote Post
nospor
post 14.08.2010, 14:58:28
Post #2





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




Cytat
jednak po wpięciu to do mojego kodu wywalało mi jakieś błędy ;/
warto by więc kod co zrobiles oraz pokazać te bledy bysmy mogli ci pomóc - pewnie coś źle zrobiłeś.


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

"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
sebekzosw
post 14.08.2010, 15:56:47
Post #3





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


Kod
set @id=4,@nr = 0,  @idnr = 0;

(SELECT *, 'prev' AS `typ`, '' AS `nr` FROM `sp_cms_zdjecia` WHERE `id` < 4 AND `album`=1 AND `status`='1' ORDER BY `id` DESC LIMIT 1)
UNION (SELECT *, 'selected' AS `typ`, @idnr AS `nr` FROM `sp_cms_zdjecia`, (SELECT @nr:=@nr+1, if(`id`=@id, @idnr := @nr,@idnr=@idnr)) WHERE `id` = 4 AND `album`=1 AND `status`='1' LIMIT 1)
UNION (SELECT *, 'next' AS `typ`, '' AS `nr` FROM `sp_cms_zdjecia` WHERE `id` > 4 AND `album`=1 AND `status`='1' ORDER BY `id` ASC LIMIT 1);


proszę

Ten post edytował sebekzosw 14.08.2010, 15:57:19
Go to the top of the page
+Quote Post
nospor
post 14.08.2010, 16:00:24
Post #4





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




1) Jak mowilem bys pokazał tez i bledy co dostajesz to wiesz co mialem na mysli?? Tak, zgadles, bys pokazał bledy co dostajesz. Czemu wiec ich nie podales?

2) Ty to do php wkladasz? To pokaz jak


Cytat
'prev' AS `typ`, '' AS `nr`

tekst prev jako nazwa kolumny typ..... pusty tekst jako nazwa kolumny nr.... co piles? winksmiley.jpg


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

"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
sebekzosw
post 14.08.2010, 16:07:18
Post #5





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


wywala mi takie błędy:
Kod
MySQL zwrócił komunikat:

#1248 - Every derived table must have its own alias



a co do `tekst prev jako nazwa kolumny typ`
źródło: http://nospor.pl/mysql-faq.html#faq-4 - robiłem z twojego poradnika

P.S.: Piłem 4 lechy
Go to the top of the page
+Quote Post
nospor
post 14.08.2010, 16:11:15
Post #6





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




Cytat
a co do `tekst prev jako nazwa kolumny typ`
źródło: http://nospor.pl/mysql-faq.html#faq-4 - robiłem z twojego poradnika
jasne..... pokaż mi proszę w którym miejscu robię alias dla tekstu z kolumny? Jestem bardzo tego ciekaw, bo ja jakos tego nie widzę. smile.gif

Cytat
P.S.: Piłem 4 lechy
jak wytrzeźwiejesz i zaczniesz ciut jasniej myslec to wróc do postowania. do tego czasu krótki spacer dobrze ci zrobi winksmiley.jpg


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

"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
sebekzosw
post 14.08.2010, 16:13:27
Post #7





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

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


dobra, rzeczywiście - pomyliłem się może... a w takim razie mógłbyś jakoś pomóc w tym zapytaniu?
Go to the top of the page
+Quote Post
nospor
post 14.08.2010, 16:19:00
Post #8





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




Cytat
pomyliłem się może...
waleczny do konca... nie może a na pewno.
Ty mój kod:
'prev' kol
zamieniles na:
'prev' AS `typ`
no troszę źle winksmiley.jpg

  1. SET @nr = 0, @id=5, @idprev = 0,@idprevfound=0, @idnext=0,@idnextfound=0;
  2. SELECT @nr:=@nr+1,
  3. IF(id<>@id AND NOT @idprevfound, @idprev := id,IF(@idprevfound,NULL,@idprevfound:=1)),
  4. IF(id=@id, @idnextfound := 1,IF(@idnextfound AND NOT @idnext,@idnext := id, NULL)) FROM tabela1 ORDER BY pole;
  5. SELECT @idprev prev, @idnext next;

To są 3 oddzielne zapytania dla php. Kazdy musi przejsc przez oddzielne mysql_query.
  1. SET @nr = 0, @id=5, @idprev = 0,@idprevfound=0, @idnext=0,@idnextfound=0;

  1. SELECT @nr:=@nr+1,
  2. IF(id<>@id AND NOT @idprevfound, @idprev := id,IF(@idprevfound,NULL,@idprevfound:=1)),
  3. IF(id=@id, @idnextfound := 1,IF(@idnextfound AND NOT @idnext,@idnext := id, NULL)) FROM tabela1 ORDER BY pole;

  1. SELECT @idprev prev, @idnext next

Twoje dodatkowe zadanie to wstawic tylko nazwe swojej tabeli, warunków, sortowania i rekordu którego szukasz.


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

"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

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: 19.07.2025 - 02:54