Jonny F.: Merkwürdiges Problem ungelöst

Beitrag lesen

Also ich werde jetzt nochmal explizit das Problem und mein Vorhaben schildern + die Lösung die jetzt funktioniert.

Also ich habe eine Weboberfläche gebastelt die mir Werte aus einer SQL Datenbank lieft.

In der Oberfläche kann man nun Spalten hinzufügen wie auch Spalten entfernen(Spalten aus der SQL Datenbank). Nun habe ich per Get-Parameter den Spaltennamen wie er im Array vorhanden war an ein Script geschickt der den Wert aus dem Array löschen soll. Nun gut.

Hier ist die Funktion die mir ein Listenfeld generiert die mir die noch auswählbaren Spalten anzeigt die ich Fest in ein Array geschrieben habe.

  
// Hier sind alle Spalten die ich ausgeben kann  
$_SESSION['allcol'] = array("Computername", "Benutzername", "Abteilung", "Inventarnummer", "Aktuelle Kostenstelle", "Alte Kostenstelle", "Seriennummer", "Anschaffungsdatum", "Bemerkung", "letzte aenderung", "MAC Adresse", "Netzwerkdose", "Seriennummer OCs", "Telefondose", "Telefonverteiler", "IP Adresse", "VM", "TC", "manueller Eintrag");  
  
//Es gibt ein Reset Button mit dem ich einen Ursprungszustand generieren kan  
if(isset($_GET['resetcol'])){  
 unset($_SESSION['tablecolallpc']);  //Sind alle Spalten die ausgegeben werden  
 unset($_SESSION['availcol']);       //Sind alle Spalten die noch ausgegeben werden können  
}  
  
//Das ist der Ursprungszustand (Standardwerte)  
if(!isset($_SESSION['tablecolallpc'])){  
 $_SESSION['tablecolallpc'] = array("Computername", "Benutzername", "Abteilung", "Inventarnummer", "Aktuelle Kostenstelle", "Alte Kostenstelle", "Seriennummer");  
}  
  
//Hier kann ich per Post also aus dem Listenfeld Spalten hinzufügen  
if(array_search($_POST['setcol'], $_SESSION['availcol'])) {  
//Tabelle bekommt ausgewaehlten wert aus dem Listenfeld (alle Computer)  
 $_SESSION['tablecolallpc'][] = $_POST['setcol'];  
}  
  
//Hier kann ich nun wieder Spalten ausblenden, sprich die Spalten werden nicht mehr angezeigt  
if(false !== ($key = array_search($_GET['suppcol'], $_SESSION['tablecolallpc']))){  
 unset($_SESSION['tablecolallpc'][$key]);  
}  
  
//Nun leite ich von allen Spalten und den Spalten wo angezeigt werden das Array für die noch verfügbaren Spalten ein  
 $_SESSION['availcol'] = $_SESSION['allcol'];  
 //angezeigte Columns werden aus dem Listenfeld geloescht  
 foreach($_SESSION['tablecolallpc'] AS $delcol){  
  unset($_SESSION['availcol'][array_search($delcol,$_SESSION['availcol'])]);  
 }  
  
//Sicherheitshalber werden hier noch doppelte Einträge gelöscht  
$_SESSION['availcol'] = array_unique ($_SESSION['availcol']);  
$_SESSION['tablecolallpcs'] = array_unique ($_SESSION['tablecolallpcs']);  
  
//Array wird nach dem Alphabet sortiert  
sort($_SESSION['availcol']);  
//Ausgabe des Listenfelds  
foreach($_SESSION['availcol'] AS $avcol){  
 $countHl++;  
 echo "<option".($countHl%2==1?" class='newcolumnoptiona'":"").">$avcol</option>";  
}  
  
echo "</select>";  
  
//Der Button zum Ursprungszustand  
//Reset Listfield  
echo "<a href=".( $_SERVER['PHP_SELF'])."?resetcol=true id='resetbutton'>Reset</a>";  

Die Ausgabe erfolgt bei mir via Casefelder die durch das Array $_SESSION['tablecolallpcs'] eingeleitet wird.

Im ersten Casekonstrukt werden werden die Zellen ausgegeben + ein Strinkonstrukt gebildet der das SQL Select statement beinhaltet, im zweiten Casekonstrukt werden dann die Zellen ausgegeben die dann den Inhalt beinhalten. Aber diesen Quellcode noch zu Posten wäre dann schon zu viel.

Ich hoffe das ist jetzt ein wenig verständlich.

Gruß Jonny F.