Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]System Administracji Stronami, Problem z zapytaniami do aktualizacji drzewa stron
little_MASTER
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 8.12.2008

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


Witam wszystkich!
Pisze prosty system cms dla mojej szkoły.
Struktura tabeli wygląda tak:
(IMG:http://img5.imageshack.us/img5/1420/tabelav.jpg)

Jak widać pola id, id_nadrzednej, kolejnosc. Reszta to już dodatki (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Na stronie prezentuje sie to tak:
(IMG:http://img5.imageshack.us/img5/1994/helpk.jpg)

Dezaktywowanie strony, tzn ustawianie statusu na offline działa dla strony i wszystkich podstron.

Mam problem natomiast z edycją samego położenia stron i ich kolejności.

Przykład:
Chcemy stronę o tytule abc(id=2) przenieść poniżej def (id=4) czyli byśmy musieli zamienić ich kolejności.
Pracuje nad jedną kwerendą która coś takiego zrobi (jako argument będe podawał tylko id strony która ma iść do góry), nie jest to aż tak skomplikowane,
problemem dla mnie jest przestawianie stron w głąb drzewa lub na zewnątrz.
Czyli np stronę Ostatnia (id=14) chcemy wsunąć w DDD (id=11).

Może podpowiecie jak w ogóle rozwiązać tego typy problem. Dopiero co zaczynam przygodę z cms'ami więc wolę uczyć się od najlepszych
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
little_MASTER
post
Post #2





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 8.12.2008

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


Kolumna kolejność jest jak najbardziej, ale poszperam jeszcze po forum, albo sam coś popróbuje.
Będę pokazywał kod, najwyżej dostanę opr za brak optymalizacji i trywialne rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Próbuje zrobić przesuwanie kategorii w głąb drzewa, tzn kategorie której id podaje chce wsunąć w głąb kategorii która jest powyżej

Tabela wyglada tak:

nazwa |id|id_nadrzednej|kolenosc
AAA |1|0 |1
BBB |3|0 |2
ghi |7|3 |1
jkl |8|7 |1
mno |6|8 |1
CCC |5|0 |3
pqr |9|5 |1

A chciałbym aby wyglądała tak:

nazwa |id|id_nadrzednej|kolenosc
AAA |1|0 |1
BBB |3|0 |2
ghi |7|3 |1
jkl |8|7 |1
mno |6|8 |1
CCC |5|3 |3
pqr |9|5 |1


Czyli dla CCC zmieniamy id_nadrzednej i kolejnosc

Dla id=5 (strona CCC) id nadrzędnej muszę ustawić na 3.

Zapytanie które pobiera mi id kategorii nad nią wygląda tak:

  1. SELECT id FROM `ksmisi_strony` WHERE id_nadrzednej=
  2. (SELECT id_nadrzednej FROM `ksmisi_strony` WHERE id=5) AND kolejnosc<
  3. (SELECT kolejnosc FROM `ksmisi_strony` WHERE id=5) ORDER BY kolejnosc DESC LIMIT 1


(proszę o pomoc z optymalizacją)

Zapytanie które zwraca kolejność ostatniego elementu w kategorii do której chce wsunąć moją stronę wygląda tak:

  1. SELECT kolejnosc FROM `ksmisi_strony` WHERE id_nadrzednej =
  2. (SELECT id FROM `ksmisi_strony` WHERE id_nadrzednej=
  3. (SELECT id_nadrzednej FROM `ksmisi_strony` WHERE id=5) AND kolejnosc<
  4. (SELECT kolejnosc FROM `ksmisi_strony` WHERE id=5) ORDER BY kolejnosc DESC LIMIT 1 )
  5. ORDER BY kolejnosc DESC LIMIT 1


kiedy próbuje to zmontować do jednego update'a wyskakuje mi błąd że nei mogę w update wstawić select from.

Pomóżcie jakoś to złożyć w całość (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif)

Doczytałem przed chwilą że w update nie można robić selecta z tej samej tabeli :/

Ten post edytował little_MASTER 29.05.2009, 17:13:47
Go to the top of the page
+Quote Post

Posty w temacie


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: 16.10.2025 - 06:56