Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak zrobić sortowanie produktów w php
krzychu106
post 27.07.2009, 18:09:41
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.04.2007

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


Witam
Robię małą stronkę i potrebuję porady jak zrobić sortowanie produktów w php. Dokładnie chodzi o to aby produkty, które są dodawane w panelu do bazy danych można byłko sortować wg uznania - zmieniać ich kolejność wyświetlania na stronie.

pozdrawiam
Powód edycji: [Spawnm] Przeniosłem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
Fifi209
post 27.07.2009, 18:11:30
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


W get podajesz odpowiednią zmienną skrypt ją odczytuje i wysyła odpowiednie zapytanie do bazy.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
krzychu106
post 27.07.2009, 18:36:56
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.04.2007

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


Można troszkę jaśniej ? smile.gif Nie biegam w php tylko chodze więc niektóre sprawy trafiają do mnie wolniej i potrzebuje je troszke bardziej wyjaśnione.

pozdr
Go to the top of the page
+Quote Post
kfc4
post 27.07.2009, 18:39:15
Post #4





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

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


Pobierasz w zmiennej get czy mają być sortowanie rosnące czy malejąco. Później jak masz już tę informację to do zapytania dodajesz orderby costam /decs/.
Go to the top of the page
+Quote Post
krzychu106
post 27.07.2009, 18:49:03
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.04.2007

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


Na chwile obecną wyciągam z bazy informację o produktach tak:

  1. <?php
  2. $qur_prod = mysql_query("SELECT id, name, alias, mini1, short_desc, pdf FROM products WHERE cid = '$id'");
  3. while($rprod = mysql_fetch_array($qur_prod))
  4. ?>


wiem, że mogę je posortować ORDER BY ASC lub DESC.
Ja potrzebuję posortować to w taki sposób np:
1234567 - posortowane produkty i dokładam 8 produkt i chce aby był na pozycji 3 wyswietlany a nie zgodnie z id na pozycji 8.
Go to the top of the page
+Quote Post
kfc4
post 27.07.2009, 18:53:02
Post #6





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

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


Po czym chcesz sortować jak nie po ID? Po nazwie? Po aliasie? Po czym? Bez tej informacji niewiele uzyskasz.
Go to the top of the page
+Quote Post
krzychu106
post 27.07.2009, 19:01:07
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.04.2007

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


Właśnie tutaj mam styki jak to zrobic. Sortując po id jak zmieniałbym kolejność produktów musiałbym zmieniać ich id, a nie mam pojęcia jak to zrobić. A jak nie sortować po id to po czym? i jak to zroibić aby zmieniać sobie dowolnie kolejność produktów?
Go to the top of the page
+Quote Post
kfc4
post 27.07.2009, 19:26:54
Post #8





Grupa: Zarejestrowani
Postów: 195
Pomógł: 18
Dołączył: 7.10.2007

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


questionmark.gif To teraz nie mam pojęcia co chcesz zrobić. Ustawić te dane tak Ci się podoba czy posortować je jakoś ze składem. Jak się zdecydujesz co chcesz - wróć.
Go to the top of the page
+Quote Post
krowal
post 27.07.2009, 20:28:44
Post #9





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


Jeśli chcesz mieć możliwość zmiany pozycji wyświetlanego elementu to przydało by się dodatkowe pole w tabeli produktów, np position, później musiałbyś sobie napisać skrypt do zmiany tej pozycji. Taki skrypt może obejmować możliwość zmiany pozycji w górę/dół, przesunięcie na początek/koniec, przesunięcie +-10 itp.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
krzychu106
post 27.07.2009, 23:08:55
Post #10





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.04.2007

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


Właśnie Krowal o to mi chodzi ale nie mam pomysłu jak zabrac się do skryptu. Będę wdzięczny za jakieś sugestie.

-----------------------
pozdr
Go to the top of the page
+Quote Post
z3L
post 27.07.2009, 23:59:17
Post #11





Grupa: Zarejestrowani
Postów: 54
Pomógł: 4
Dołączył: 22.08.2006

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


Cytat(krzychu106 @ 28.07.2009, 00:08:55 ) *
Właśnie Krowal o to mi chodzi ale nie mam pomysłu jak zabrac się do skryptu. Będę wdzięczny za jakieś sugestie.

-----------------------
pozdr


Stwórz sobie dodatkowe pole w bazie , przykladowo `order`, wartosc w tym polu wpisuj wg. `id` . I nastepnie podczas edytowania danego produktu daj mozliwosc ustawienia wartosci pola order i sortuj po order. Mozesz dodac dodatkowy mechanizm zamiany miejscami pozycji podczas edycji. ( Zmieniasz order w produkcie na 3, to produkt z orderem 3 ustawiasz na wartosc , ktora byla w polu zmienianym ) . Pewnie sa jakies lepsze rozwiazania, ale nie mam aktualnie glowy do myslenia.

Pozdrawiam.


--------------------
...
Go to the top of the page
+Quote Post
krzychu106
post 28.07.2009, 16:28:40
Post #12





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.04.2007

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


Cytat
...Zmieniasz order w produkcie na 3, to produkt z orderem 3 ustawiasz na wartosc , ktora byla w polu zmienianym...

Pomysł dobry ale co jak produktów będzie 200 i zajdzie potrzeba za 2 produkt podstawić ten z nr 169. Zamienią się miejscami i produkt 2 wyląduje na 169 miejscu (aby dać go na miejsce 3 to trzeba będzie powtarzać operację zmiany miejsca kilkaset razy)- to nie zda egzaminu przy tej ilości produktów.

Może jakieś inne pomysły, a może się mylę.

pozdr
Go to the top of the page
+Quote Post
erix
post 28.07.2009, 17:06:43
Post #13





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
(aby dać go na miejsce 3 to trzeba będzie powtarzać operację zmiany miejsca kilkaset razy)- to nie zda egzaminu przy tej ilości produktów.

Dla mnie, to max trzy zapyania:
  1. z pozycji drugiej wędruje na gdzieś poza zakresem
  2. zamieniający element wędruje na drugą pozycję
  3. tamten pozostały na 169


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
krzychu106
post 29.07.2009, 08:45:45
Post #14





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.04.2007

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


Max 3 zapytania aby ten z pozycji 169 wylądował na pozycji 2. Ale potrzeba jest taka żeby ten co był na pozycji 2 nie leciał na 169 tylko przesunął się na 3, ten co był na 3 na 4 itd.

pozdr.
Go to the top of the page
+Quote Post
erix
post 29.07.2009, 10:41:32
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




no to wtedy dla rekordów 3-168 dajesz update z position = position+1.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
krzychu106
post 3.08.2009, 07:10:27
Post #16





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 2.04.2007

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


Nie widzę tego - możesz przybliżyć na przykładzie ?

Ten post edytował krzychu106 3.08.2009, 07:10:46
Go to the top of the page
+Quote Post
Pawel_W
post 3.08.2009, 07:13:08
Post #17





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


zwiększasz pozostałym pozycję o 1, tak jak chciałes...

  1. UPDATE jakas_tabela SET position = position + 1 WHERE position >= 3 AND position <= 168


chyba o ot chodzi winksmiley.jpg
Go to the top of the page
+Quote Post
krowal
post 3.08.2009, 11:48:07
Post #18





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


No lol... a jak masz 200000000 rekordów to im wszystkim też będziesz zmieniał pozycję ? biggrin.gif

Np. przesunięcie w górę:
1. Pobierasz rekord przesuwany i rekord następny po nim.
2. W rekordzie przesuwanym zmieniasz pozycję na pozycję następnego rekordu (tego drugiego który pobrałeś) i na odwrót
3. Zapisujesz oba rekordy.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
Pawel_W
post 3.08.2009, 11:49:34
Post #19





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


a czytałeś jego posty wyżej?

no właśnie...

takie rozwiązanie jak ty podałeś już było
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:24