Formularproblem: Felder mit Werten füllen und anschliessend updaten

ptolein

Erfahrenes Mitglied
Wie viel Probleme kann man eigentlich auf einer Site haben?

Mein Anliegen:
Ändern von vorhandenen Userdaten mit anschl. updaten der geänderten Daten. Der Admin soll in einem Formular alle bereits eingetragenen Daten des Users sehen. So weit so gut, klappt auch.

Wenn ich jetzt aber das Formular per Submit absende und die Daten in SQL updaten will, dann erkennt er nicht mehr die Werte der Listenfelder. (Die eingetragenen Werte sollen nämlich auch als SELECTED dargestellt werden.) Upgedatet werden nur die normalen Textfelder. D.h. der Fehler muss in den dyn. Listenfeldern liegen, denn hier sind die Werte jetzt alle NULL bzw. ARRAY.

Kann jemand helfen? (PHP 5, MYSQL)

Kurzform (Listenfeld Titel):
PHP:
     $dbabfragesql="SELECT personaldaten_allgemein.personalnr, 
     personaldaten_allgemein.vorname, personaldaten_allgemein.zweiterVorname, 
     personaldaten_allgemein.nachname, personaldaten_allgemein.titel 
     FROM personaldaten_allgemein ";
     $dbabfrage=mysql_query($dbabfragesql);
     $db=mysql_fetch_row($dbabfrage);
     
     echo"<td>Titel</td>";
     		echo "<td><select name=\"titel\" size=\"1\" >";
     		echo "<option value=\"$db[4]\" selected>$db[4]</option>";
 		echo "<option value=\"Frau\">Frau</option>";	
     		echo "<option value=\"Herr\">Herr</option>";
     		echo " <option value=\"Frau Dr.\">Frau Dr.</option>";
     		echo " <option value=\"Herr Dr.\">Herr Dr.</option>";
      echo"</select></td>";
 
Ich habs jetzt zwar nicht getestet, es sollte aber so ungefähr funktionieren

PHP:
$dbabfragesql="SELECT personaldaten_allgemein.personalnr, 
	 personaldaten_allgemein.vorname, personaldaten_allgemein.zweiterVorname, 
	 personaldaten_allgemein.nachname, personaldaten_allgemein.titel 
	 FROM personaldaten_allgemein ";
	 $dbabfrage=mysql_query($dbabfragesql);
	 $db=mysql_fetch_row($dbabfrage);
	 $title = array("Frau", "Herr", "Frau Dr.", "Herr Dr.");
 
	 echo"<td>Titel</td>";
			 echo "<td><select name=\"titel\" size=\"1\" >";
			 for($i=0; $i<count($title); $i++)
			 {
				 if($title[$i] == $db[4])
						echo "<option value=\"".$db[4]."\" selected>".$db[4]."</option>";	
				 else
					 echo "<option value=\"".$db[4]."\">".$db[4]."</option>";	
			 }
	 echo"</select></td>";
 
mmmhhh, das geht so leider nicht. (Jetzt steht 4x Fra da)

Ich kann den Wert ja als ausgewählt darstellen, aber danach hapert es. Ich kann nicht den Wert weiterübertragen.

Beispiel:
1 der eingetragene Wert ist "Frau"
2 beim Aufruf der Seit wird "Frau" im Listenfeld als ausgewählt (selected) dargestellt (es erfolgt eine Abfrage aud der DB, der darin enthaltene Wert wird als selected eingetragen)
3 dann will ich die Daten in SQL übertragen
auf der nächsten Seite ist der Wert "Array" und er trägt NULL in die DB ein (bei der Übertragung nimmt er" $db[4]" anstelle von "FRAU")

Ich weiß halt nicht, wie ich den Wert "Frau" als gesetzt beibehalten kann ohne jedesmal die Listenfelder anklicken zu müssen.
 
wenn du das Formular wieder abschickst (editierst) müsstest du je nach Methode unter $_GET["titel"] oder $_POST["titel"] bekommen.

am besten frägst du ab:
PHP:
if(isset($_GET["titel"]) || isset($_POST["titel"]))
{
....
 
ja, das mach ich doch. Es geht doch um den Inhalt....
Ich kann nicht den Inhalt aus $db[4] ein zweites Mal weitergeben.

Ich weiss nicht ganz wie ich das noch ausdrücken kann :(

Sitze grade an einer Lösung: will den Inhalt in einer temporären Variable abspeichern. Wenn sich der Ausgangswert ändert, dann wird sie überschrieben, falls nicht bleibt sie und kommt in die DB. Mal sehen, ob das klappt.

Aber danke für die Hilfe, ich meld mich, wenn meine Variante klappen sollte. Wenn nicht, heul ich einfach drauf los ;)
 
du brauchst den Inhalt nicht in einer temporären Variable abspeichern. Du hast den Inhalt. Allerdings nicht als $db[4] sondern als $_GET["titel"] oder $_POST["titel"].
 
Habe es jetzt so gelöst (zwar nicht fein, aber funktioniert):
PHP:
  $in_titel=$_POST['titel'];
  $titel1  =$_REQUEST['titeldb'];
  			  if  ($titel1==$in_titel)  {$in_titel=$titel1;}
  			  else  {$in_titel=$in_titel;}
  
  ...
  
  echo"  <form name=\"form1\" method=\"post\" action=\"index.php?bereich=aendernmaseite2&titeldb=$db[4]\">";
 
ptolein hat gesagt.:
Man kann eine gepostete Variable nur einmal per POST weiterreichen! Daran liegt es nicht.

Indem du wieder den Submit butten drückst, schickst du ja nochmal ein Formular ab...
Dann kannst du es wieder abfragen oO
 
Glaube mir doch bitte, dass die Post-Variablen aus den Listenfeldern leer sind. Wenn ich Sie mit var_dump() und print_r() überprüfe, steht " " drin. Ich weiß, dass ich normalerweise per GET oder REQUEST die Werte abrufen kann, in diesem Fall geht es aber nicht so einfach. So blond bin ich nun wirklich nicht ;)

Trotzdem vielen Dank für die Hilfe, ich kann es mir halt auch nicht erklären...

PS. Habe Dir zuliebe nochmal alles per $_GET["titel"] oder $_POST["titel"] abgerufen, das Ergebnis bleibt das gleiche: " " :( Aber jetzt geht es ja erstmal, wenn es auch keine Musterlösung ist.
 
Zurück