PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Selektiertes Elelment aus ComboBox wird nicht übergeben


evian
27.06.2008, 14:54:38
Hallo, ich hab grad ein paar Schwierigkeiten beim erstellen eines Formulars. ich habe dieverse Textfelder udn Komboboxen in meinem Formular.
in einer liste (select) sind alle objekte einer Datenbank zu sehen. man kann nun in der liste ein objekt auswählen und sich diverse eigenschaften dazu anzeigen lassen. diese werde in Textfelden oder Comboboxen angezeigt.
wenn nun aber kein objekt aus der lsute ausgewählt ist, dass kann man ein neues objekt anlegen und in diedatenbank schreiben (mit samt den eigenschaften des Objektes). Die Angaben zum Objekt erfolgen wieder in Textfeldern oder ComboBoxen.
Das klappt soweit auch gut. Nun möchte ich das neue objekt in der liste auswählen. ich habe dann nur in den Text-feldern die richtigen daten zum objekt. die angaben in den comboboxen werden nicht richtig übergeben (in der datenbank ist alles richtig gepeichert)
ich hab mal ein apar Codeschnipsel.

1. sie Objektauswahl in einer Liste

$db = getDB();
$sql = "SELECT * FROM projekt";
$result = mysqli_query($db,$sql);

/*Assoziativer Index nach dem das Array aufgebaut wird*/
/*Assoziative Felder lassen die Refferenzierung mit hilfe eines String-Index zu*/
$index = "pr_ID";

/*Funktion zum Aufbau des assoziativen Ergebnisarrays*/
/*solange eine Zeile mit Daten existiert, schreibe diese in die entsprechende Zeile des assoziativen Arrays*/
function getProjekteArray($result, $index){
while ($zeile = mysqli_fetch_assoc($result)){
$projekte[$zeile[$index]] = $zeile;
}
return($projekte);
}
/*assoziativen Ergebnisarrays*/
$projekte_array = getProjekteArray($result, $index);

/*Speicherung des ausgewählten Values*/
/*Verwendung von $_POST statt $_POST weil sicherer ($_POST verwendet URL)*/
/*wenn kein Feld existiert oder dieses leer ist, dann nimm Spalte 'pr_Name' aus dem assoziativen Feld*/
if (!isset($selection) || $selection == ''){
$selection = $_POST['pr_Name'];
}

echo "<form name='pr_Name' method='post' action='".htmlspecialchars($_SERVER['PHP_SELF'])."'>\n";
echo "<select name='projekte' size='40' style='width:175px' onChange = 'this.form.submit();'>\n";
foreach (array_keys($projekte_array) as $key ){
echo "<option value='".$projekte_array[$key]['pr_ID']."' ".($selection==$projekte_array[$key]?"selected":"").">".$projekte_array[$key]['pr_Name']."</option>\n";
}
echo "</select>\n";


2. die anzeige von dazugehörigen Eigenschaften in einem Text-feld...


echo "<td colspan='0'><input name='".$selProjekt_array[$_POST['projekte']]['pr_ID']."' size='100' value='".$selProjekt_array[$_POST['projekte']]['pr_Name']."'></input></td>\n";


3. ... und in einer ComboBox


echo "<td><select name='ku_Domaene' size='1' style='width:150px'>\n";
echo "<option selected value='".$selProjekt_array[$_POST['projekte']]['ku_Domaene']."' ".($_selection==$selProjekt_array[$_POST['projekte']]['ku_Domaene']?"selected":"").">".$selProjekt_array[$_POST['projekte']]['ku_Domaene']."</option>\n";
foreach(array_keys($werteDomaene) as $key){
echo "<option value='".$werteDomaene[$key]."' ".($_POST["to_sel_Domaene"]==$key?"selected":"").">".$werteDomaene[$key]."</option>";
}
echo "</select></td>\n";


4. wenn ich ein neues Objekt anlege schreibe ich die eigenschaften folgendermaßen in die Datenbank:
-mit einem Textfeld:


echo "<td colspan='0'><input name='pr_Name' SIZE=100px value='".$_SESSION[pr_Name]."'></input></td>";


-mit eienr Combobox:


echo "<select name='ku_Domaene' size='1' style='width:150px' value='".$_SESSION['ku_Domaene']."'>";
foreach(array_keys($werteDomaene) as $key){
echo "<option value='".$werteDomaene[$key]."' ".($_POST['to_sel_Domaene']==$key?"selected":"").">".$werteDomaene[$key]."</option>";
$_POST['to_sel_Domaene'] = $_POST['ku_Domaene'];
}
echo "</select>";


also meiner meinung nach ist alles identisch verarbeitet, ob textfeld ode rcombo, aber trotzdem scheint es nciht zu funktionieren.
ich hoffe ich habe es einigermaßen vernünftig erklären können.