Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kolejność..., pozycja w menu
Domin
post
Post #1





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 17.11.2004
Skąd: Warszawa

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


Cześć...

Mam problem ze zmianą pozycji zarówno kategorii jak i podkategorii menu.
Przedstawię to na przykłądzie:

Kategoria 1 | W dół
Podkategoria 2 | W dół
Podkategoria 1 W górę | W dół
Podkategoria 3 W górę |

Kategoria 3 W górę | W dół
Podkategoria 1 | W dół
Podkategoria 2 W górę |

Kategoria 2 W górę |
Podkategoria 1 | W dół

Za pozycję w menu kategorii odpowiada wartość w komórce "kat_order" a podkategorii "podkate_order". Tak więc w przedstawionym przykłądzie wartosci wygladają następująco:

Kategoria 1 - kat_order = 10
Kategoria 3 - kta_order = 20
Kategoria 2 - kat_order = 30

W Kategorii 1:
Podkategoria 2 - podkat_order = 10
Podkategoria 1 - podkat_order = 20
Podkategoria 3 - podkat_order = 30

dlatego kolejność tak wygląda! Jednak gdy chcę zamienić pozycję np. Kategorię 3 przenieść wyzej aby wygladało to tak:

Kategoria 3
Kategoria 1
Kategoria 2

muszę zmienić wartość kat_order w obydwóch pozycjach za pomocą jednego zapytania poprzez kliknięcie w link " W górę" przy kategorii 3.

Można to było by zrobić w bardzo łatwy sposób gdyby były znane id dwóch pozycji, jednak jeden może mieć 10 a drugi 3, ale tego nie wiemy, bo mamy tylko id pozycji któą chcemy zmienić, a nie posiadamy id drugie pozycji znajdujacej się niżej lub wyzej od naszej. Tak więc w zwiazku iż mamy id tej pozycji mozemy zmienioć kat_order odjąć 10, jednak nie możemy dodać 10 przy pozycji znajdujacej się wyżej, gdyz nie znamy jego id. :/

Gdybym posiadał obydwa id, to stworzył bym dwa zapytania jedno dodające drugie odejmujące i złączył w jedno za poomoca funkcji której nie pamiętam... a o niej czytałem... Wiec moze ktoś mi przy okazji przypomni...

Ja przedstawiłęm jakl bym to rozwiazał, tylko nie wiem jak znaleźć id pozycji znajdujacej się wyżej lub nizej... Może ktoś z Was wie jak to zrobić?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

A moze macie inne sposóby na roziwązanie tego problemu?? Jednak prosiłbym o dokładne przedstawienie swojego sposóbu, jeśli takowy macie.

Z góry wielkie dzięki:)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
AxZx
post
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


do przesuniecia kategorii w gore
moze cos z tego zrozumiesz (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. $dane1 = $this->sql->getone_assoc('SELECT MIN(kat_kolejnosc) AS min_k, MAX(kat_kolejnosc) AS max_k FROM '.$this->table_kategoria);
  3. $dane2 = $this->sql->getone_assoc('SELECT kat_kolejnosc as k FROM '.$this->table_kategoria.' WHERE kat_id='.$kat_id);
  4.  
  5. if($dane1['min_k'] < $dane2['k']){
  6.  
  7. $this->sql->query('UPDATE '.$this->table_kategoria.' SET kat_kolejnosc = '.($dane2['k']).' WHERE kat_kolejnosc = '.($dane2['k']-1));
  8. $this->sql->query('UPDATE '.$this->table_kategoria.' SET kat_kolejnosc = '.($dane2['k'] - 1).' WHERE kat_id = '.$kat_id);
  9. }
  10.  
  11. ?>


Ten post edytował AxZx 2.06.2006, 22:24:39
Go to the top of the page
+Quote Post
chomiczek
post
Post #3





Grupa: Zarejestrowani
Postów: 271
Pomógł: 4
Dołączył: 5.01.2005

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


Czasem wystarczy poszukać.. tutaj mój identyczny problem i moja odpowiedź http://forum.php.pl/index.php?showtopic=42...1&st=&p=&#entry
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 00:11