tsunami
Goto Top

Ticketsystem mit Meldung über mehrere Ebenen

Hallo,
ich brauche bitte einen Ansatz:
Gegeben sei eine Abteilungshierachie.

1. Chef
2. Techische Leitung | EInkaufsleitung | Verkaufsleitung | Produktion
3. Elektriker, Sanitär, Hausmeister ... | Sekretärin, Einkaufsleiter, Mitarbeiter 1,2,3... | Sekretärin, Einkaufsleiter, Mitarbeiter 1,2,3... | Produktionsleiter | Mitarbeiter 1,2,3... |

Dazu habe ich eine Tabelle Abteilungen angelegt mit
id | name | chef_id | chefabteilung_id |

Chef_id ist halt der Abteilungsleiter und chefabteilung_id die übergeordnete Abteilung,name der Name der Abteilung. Bei bestimmten Ereignissen soll halt eine Meldung an die Übergeordneten Stellen erfolgen.
Das heißt die Technische Leitung empfängt die Meldung von Elektro, Sanitär und Hausmeister. Also von allen Abteilungen die chefabteilung_id =11 (id der Abteilung technikleitung) haben.

Wie mache ich es bei der Geschäftsführung? Weil die müssten alle Meldungen von der direkt untergeodneten Abteilung bekommen (chefabteilung_id=1), aber auch von Technischer Leitung, Einkauf, Verkauf usw. und deren untergeordnete Stellen.
Bsp: Elektro (id=1)
id | name | chef_id | chefabteilung_id |
1 | Elektro | 4 | 11 |

Techische Leitung (id=2)
2 | Technische Leitung | 5 | 1 |

1 ist die Id der Abteilung Geschäftsführung. Die Geschäftsführung müsste also alle meldungen von den Abteilungen bekommen die als chefabteilung_id=1 haben und von den Abteilungen die wiederherum den Abteilungen der Ebene 2 untergeordnet sind.


Das heißt ich müsste irgendwie schachteln, oder? Also alle direkt untergeordneten Abteilungen in ein Array, Das Array durchlaufen und davon wieder die untergeorneten Abteilungen suchen usw.
Nur könen das ja durchaus mehrere Ebenen sein und nicht nur 3. Ich könnte sowas machen mit mysql_num_row(....) und wenn != 0 in ein Array packen. Die Arrays nachher zusammen fügen und mit foreach durchlaufen...
Ist das eine Lösung oder bin ich auf dem Holzweg?
Danke für Anregungen
tsunami

Content-ID: 314746

Url: https://administrator.de/contentid/314746

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

multi10
multi10 09.09.2016 um 13:01:26 Uhr
Goto Top
Falls du gerade selbst ein Ticketsystem erstellen willst dann schau dir doch einfach mal OTRS an.
Das kann alles was du willst und noch viel mehr.

Grüße multi10
FehlerMax
FehlerMax 09.09.2016 um 15:35:46 Uhr
Goto Top
OTRS ist für sowas Top geeignet.
Vorgefertigte Baussteine + Du kannst es Dir individuell zusammenstellen

Gruß
FehlerMax
tsunami
tsunami 10.09.2016 um 11:04:09 Uhr
Goto Top
Das war nicht die Art von Ansatz. Eigendlich meinte ich einen PHP-Ansatz. ..
tsunami
tsunami 20.09.2016 um 17:22:49 Uhr
Goto Top
   function getMenu($oberkat,$z) {
         
//       echo " z1:".$z; 
    $einlesen = mysql_query("SELECT id,name FROM abteilungen WHERE chefabteilung_id='".$oberkat."' ORDER BY name");  
//      echo "SELECT id,name FROM abteilungen WHERE chefabteilung_id=".$oberkat." ORDER BY name"; 
//     $menu = "";  
// if(!isset($array_abteilungen))
// $array_abteilungen=""; 
    while($einzeln = mysql_fetch_assoc($einlesen)) {       
//      if($z%8==0)
// echo "</tr><tr>" ;  
      $z.= "<td class='datenzelle'>".$einzeln['name']."</td><td class='datenzelle'><input type='checkbox' name='".$einzeln['name']."' value='".$einzeln['id']."' onclick='javascript:vonmirzumir_waehlen();'></td>";   
//     if(isset($_POST[$einzeln['name']])) {$abteilung_string.="checked='checked'";;} 
// echo " z3:".$z; 
    getMenu($einzeln['id'],$z);  
//       $z++;
    echo "peep".count($z)." - ";       
}    

 
  }
  
  echo '<center><table class="datentabelle" cellspacing="0"><tr>';  
  $abteilungarray=array();
     $text=getMenu($_SESSION['abteilung_id'],$abteilungarray);  
     echo "</table></center>";  
ist nun erstmal ein Ansatz. Nun habe ich allerdings noch das Problem, dass mir das Array $z nach jedem Durchlauf leer ist.
Warum ein Array? Weil ich das Ganze nachher als tabelle ausgeben möchte und die Zeilen alle 10 Zellen einfügen möchte. Aufgrund der Subroutine klappt das nicht mit nem Zähler. Das komische ist, dass der Zähler auch zurückgesetzt wird. Nach jeden while und nach jedem Funktionsaufruf müsst eigendlich ein +1 rein und dann if($x%5=0) echo "</tr><tr>"; ABer der Zähler geht verloren...