Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kolejność...
Forum PHP.pl > Forum > PHP
Domin
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ć?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:)
AxZx
do przesuniecia kategorii w gore
moze cos z tego zrozumiesz 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. ?>
chomiczek
Czasem wystarczy poszukać.. tutaj mój identyczny problem i moja odpowiedź http://forum.php.pl/index.php?showtopic=42...1&st=&p=&#entry
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.