Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Produkty w sklepie
Forum PHP.pl > Forum > Przedszkole
Lifo
Witam.

Jak rozwiązać następujący problem.

Chciałbym w swoim sklepie mieć wpływ na kolejność wyświetlania produktów na stronie.
Wprowadziłem sobie dodatkowe pole w bazie (`kolejnosc` INT) i przydzielam poprostu numerek dla poszególnego produktu. To jest jasne i oczywiste.
Ale ilość produktów systematycznie rośnie i powoli staje się to uciążliwe bo trzeba jakoś to ogarniać i pamiętać żeby się nie zdublować lub coś w ten deseń.

Dajmy na to mam produkty:


produkt kolejność
prod1 ............. 1
prod2 ............. 2
prod3 ............. 3
prod4 ............. 4
prod5 ............. 5
prod6 ............. 6

I teraz zamarzy mi się że prod6 ma się wyświetlać jako trzeci

prod1 ............. 1
prod2 ............. 2
prod3 ............. 6
prod4 ............. 4
prod5 ............. 5
prod6 ............. 3

W takim przypadku muszę pamiętać żeby zamienić kolejność dla dwóch produktów.

Czy można w jakiś sposób to zautomatyzować, żeby zmiana w jednym rekordzie automatycznie przeliczyła prawidłowo wszystkie produkty po zmianie ?

Pozdrawiam
sniezny_wilk
Dla mnie to trochę nielogiczne. Czemu nie możesz sortować po ID, po nazwie i używać normalnie np.:

  1. ... ORDER BY `pole` ASC


lub DESC ?
nithajasz
Ja to był zrobił tak :

  1. UPDATE tabela SET kolejnosc = kolejnosc + 1 WHERE kolejnosc >= zmiana;
  2. UPDATE tabela SET kolejnosc = zmiana WHERE id = id_zmienianego;


Zapewne da się to zrobić jednym zapytaniem chociażby przez JOIN..
Lifo
-> sniezny_wilk

Czasami proste rzeczy nie wystarczają smile.gif
A na poważnie chcę mieć wpływ na wyświetlanie kolejności a nie tworzyć potworki znane z ogłoszeń
"Aaaaaaaaaaaabsolutnie tani Lanos powypadkowy"

Czasami kolejność ma znaczenie a przy "nastu" stronach z wynikami smile.gif to jest nawet dość ważne jeżeli chcesz żeby pewne produkty pojawiały się na początku przygody z dajmy na to kategorią produktową.

->nithajasz

Ilość zapytań mnie nie interesuje bo to raczej sporadyczna sprawa będzie (poprostu jest z gatunku uciążliwych dla mnie smile.gif ). Ale dziękuję za podpowiedź - pokombinuje w tym kierunku.
sniezny_wilk
No dobra jak chcesz tak kombinować.. ale powiedz co się stanie jak będą dwie 6 np ? Sortuje po kolumnie z kolejnością i dwie szóstki są pod sobą. Wg mnie trochę przekombinowane.. Do tego możesz sortować po nazwie, po dodanym ID (jeśli masz autoincrementa) itp, jest wiele rozwiązań.
Lifo
--> sniezny_wilk

Wiem że to nie jest "chyba "proste ale mogę załozyć unikalność na to pole co pozwoli mi uniknąć dubli.
Gorzej tylko z tym, że teraz jak się zastanawiam to podany przykład będę musiał chyba przerobbić bo zmiana niekoniecznie musi być o jedną pozycję smile.gif

Może jeszcze ktoś coś podpowie winksmiley.jpg

Pozdrawiam
nithajasz
No ja podałem Ci działający przykład ze zmianą o jedną pozycję ale przerobić go na zmianę o wiele pozycji to nie jest problem smile.gif
Lifo
--> nithajasz
Obiecuje, że posiedze dziś wieczorem nad tym smile.gif i postaram się napisać jak mi to wyszło (o ile coś wymyślę ciekawego i działającego smile.gif )

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