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%)
-----


Zrobiłem podnoszenie stron o jeden do góry i na dół.
Bazowałem się na http://forum.php.pl/index.php?showtopic=80...rt=#entry410773
Może komuś się przyda (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

  1. <?php
  2. function SitesOneUp($id)
  3.    {
  4.        $query = "UPDATE ksmisi_strony c, ( (SELECT id, ord.kolejnosc
  5.                    FROM ksmisi_strony, ((SELECT kolejnosc
  6.                    FROM ksmisi_strony WHERE kolejnosc < (SELECT kolejnosc
  7.                    FROM ksmisi_strony WHERE id = " . $id . " LIMIT 1 )
  8.                    AND id_nadrzednej=(SELECT id_nadrzednej FROM ksmisi_strony WHERE id = " . $id . " LIMIT 1))
  9.                    ORDER BY kolejnosc DESC LIMIT 1 ) AS ord
  10.                    WHERE id = " . $id . ")
  11.                    UNION
  12.                    (SELECT c1.id, ord.kolejnosc FROM ksmisi_strony c1,
  13.                    (SELECT kolejnosc FROM ksmisi_strony WHERE id = " . $id . ") as ord
  14.                       WHERE c1.kolejnosc < ord.kolejnosc
  15.                       AND c1.id_nadrzednej=(SELECT id_nadrzednej FROM ksmisi_strony WHERE id = " . $id . ")
  16.                      ORDER BY c1.kolejnosc DESC LIMIT 1 )) AS nowe_dane
  17.                    SET c.kolejnosc = nowe_dane.kolejnosc
  18.                    WHERE c.id = nowe_dane.id ";
  19.        $result = mysql_query($query) or die('Error');
  20.    }
  21.    function SitesOneDown($id)
  22.    {
  23.        $query = "UPDATE ksmisi_strony c, ( (SELECT id, ord.kolejnosc
  24.                    FROM ksmisi_strony, ((SELECT kolejnosc
  25.                    FROM ksmisi_strony WHERE kolejnosc > (SELECT kolejnosc
  26.                    FROM ksmisi_strony WHERE id = " . $id . " LIMIT 1 )
  27.                    AND id_nadrzednej=(SELECT id_nadrzednej FROM ksmisi_strony WHERE id = " . $id . " LIMIT 1))
  28.                    ORDER BY kolejnosc ASC LIMIT 1 ) AS ord
  29.                    WHERE id = " . $id . ")
  30.                    UNION
  31.                    (SELECT c1.id, ord.kolejnosc FROM ksmisi_strony c1,
  32.                    (SELECT kolejnosc FROM ksmisi_strony WHERE id = " . $id . ") as ord
  33.                       WHERE c1.kolejnosc > ord.kolejnosc
  34.                       AND c1.id_nadrzednej=(SELECT id_nadrzednej FROM ksmisi_strony WHERE id = " . $id . ")
  35.                       ORDER BY c1.kolejnosc ASC LIMIT 1 )) AS nowe_dane
  36.                    SET c.kolejnosc = nowe_dane.kolejnosc
  37.                    WHERE c.id = nowe_dane.id";
  38.        $result = mysql_query($query) or die('Error');
  39.    }
  40. ?>


Jako atrybut podajemy id strony która ma mieć zmienioną kolejność.

Jeśli jakaś optymalizacja byłaby mozliwa to proszę o podpowiedzi.
U mnie działa jak najbardziej.
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: 7.10.2025 - 08:40