Pisalem sobie i pisalem, i natrafilem na pewien problem, ktory spedza mi kompletnie sen z powiek. Moze ktos bedzie w stanie pomoc. smile.gif

Postaram sie jasno opisac problem, choc troche to zagmatwane...

Mam tabele modules ktora wyglada tak:


i teraz musze wykasowac (czyli ustawic module_delete na 1) kilka modulow. Zalozmy ze kasuje modul o id: 2
wiec musze ustawic module_delete na 1 wszedzie tam gdzie module_id = 2 oraz module_parentid = 2
module_parentid mowi kto jest "rodzicem" danego modulu. Wiec np. nacl_users jest w nacl_administration.
Wiec zapytanie sql bedzie wygladalo mniej wiecej tak:
  1. <?php
  2. $query = 'UPDATE modules SET `module_deleted` = "1" WHERE ';
  3.  
  4. foreach ($idList as $key => $value)
  5. {
  6.  $query .= "module_id = '".$value."' OR module_parentid = '".$value."'";
  7. }
  8. ?>


idList to poprostu lista tych modulow do wykasowania. przyjmijmy ze ta tablica ma 1 wartosc = 2.

No i do tego momentu wszystko jest latwe. Schody zaczynaja sie teraz...

kazdy modul ma cos takiego jak module_child, czyli czy ten modul ma dziecko (czy ma w sobie jakies inne moduly) czy nie ma. 0 oznacza ze nie ma, a 1 ze ma.

Czyli wracajac do przykladu, jezeli kasuje modul o id 2 to musze ustawic modulowi mng_modules - module_child = 0, bo juz nie ma w sobie zadnych dzieci.

Przy kasowaniu jednego modulu nie ma problemu, ale np. przy kasowaniu 10 ?

Musialbym robic zapytanie dla kazdego id z idList sprawdzac kto jest jego rodzicem, nastepnie w drugim zapytaniu sprawdzac czy ten rodzic ma jeszcze jakies inne dzieci oprocz tego ktore wlasnie skasowalem, jak ma to ustawiam na 1 jak nie ma to ustawiam module_child na 0. tylko ze przy kasowaniu 10 modulow, mam wtedy 20 zapytan.

Bede wdzieczny za wszelka pomoc i rady,
chetnie odpowiem na wszelkie pytania jezeli brakuje jakis informacji

Pozdrawiam,
Tomek