Einen Datensatz aus SQL-Datenbank in Formular laden für späteren Ändern des Datensat

Davicito

Erfahrenes Mitglied
Hallo, hab da mal ein weiteres Problem, mit dem ich mich nun schon den ganzen Tag rumschlage. In Büchern und im Internet gibt es nichts brauchbares.

Ich möchte aus einer MySQL-DB einen Datensatz in ein Formular laden und abändern können. Es scheitert schon daran, dass ich einen Datensatz nicht in das Formular geladen bekomme. Was mache ich hier falsch?

PHP-Datei
PHP:
<?php
			session_start();  // nochmal bearbeiten
			// Verbindung zur Datenbank
			$link = mysql_connect('localhost','root','');	
	
			if (!$link)
			{
    			die('Die Verbindung zum Server schlug fehl!: ' . mysql_error());
			}
			else echo "Mit dem Server erfolgreich verbunden <br/>"; 
	
			// Datenbank auswählen
			$db = mysql_select_db("IR",$link);
	
			if (!$db)
			{
    				die('Die Verbindung zur Datenbank schlug fehl: ' . mysql_error()."<br/>");
			}
			else echo "Mit der Datenbank erfolgreich verbunden <br/><br/>";
	
	
			// SQL-Abfrage auswählen $res = Array
			$res = mysql_query("select * from Mitarbeiter");

			if(!$res)
			{
				echo "Datenbankzugriffsfehler! <br/>";
				//echo $res;
			}
			else
			{	
				if(isset($_POST["vn"]) && isset($_POST["nn"]))
				{
				
					$Datensatz = "SELECT 	
										ma.*,
										anr.*
									FROM 
										mitarbeiter AS ma,
										anrede AS anr
									WHERE
										ma.Anrede_ID = anr.Anrede_ID 
									AND
										ma.Vorname = "'.$_POST[vn].'" ";

					$result = mysql_query($Datensatz) OR die("Error: $Datensatz <br>".mysql_error());						
					$row = mysql_fetch_object($result);
					
	                                        echo'<form  action='MA-Uptate.php' method='POST'>';		
						echo'<br>Vorname:<br>';
						echo'<input type="text" name="vn" value="$row->Vorname"><br>';			
						echo'Nachname:<br>';
						echo'<input type="text" name="nn" value="$row->Nachname"><br>';
						echo'Straße:<br>';
						echo'<input type="text"  name="str" value="$row->Straße"><br>';		
						echo'PLZ:<br>';
						echo'<input type="text" name="plz" value="$row->PLZ"><br>';
						echo'Ort:<br>';
						echo'<input type="text"  name="ort" value="$row->Ort"><br>';		
						echo'Telefon:<br>';
						echo'<input type="text"  name="tel" value="$row->Telefon"><br>';
						echo'Handy:<br>';
						echo'<input type="text" name="mobi" value="$row->Handy"><br>';			
						echo'Email:<br>';
						echo'<input type="text" name="mail" value="$row->Email"><br>';
						echo'Geburtsdatum: Form(JJJJ-MM-TT)<br>';
						echo'<input type="text" name="geb" value="$row->Geburtsdatum"><br>';
			
						echo'<input type="submit" value="Ändern">';						
			
						echo'</form>';												
						
						/*
                                                      Für spätere Update-Funktion........
                                                 */
					
					echo "<a href=\"menu.html\">Zurück</a>";					
				}
				else echo"Fehler!";				
			}
		?>
 
Mach dich mal schlau über den Unterscheid von ' und ". Texte in ' werden NICHT geparst
PHP:
echo'<input type="text" name="vn" value="$row->Vorname"><br>';
Dieser Code parst $row->Vorname NICHT. Sondern gibt ihn als genau den Text aus.
Du hast die folgende Möglichkeiten:
PHP:
echo'<input type="text" name="vn" value="' . $row->Vorname . '"><br>'; 

echo "<input type='text' name='vn' value='{$row->Vorname}'><br>"; 

echo "<input type=\"text\" name=\"vn\" value=\"{$row->Vorname}\"><br>";

printf('<input type="text" name="vn" value="%s"><br>', $row->Vorname);
etc
 
hi,
es sind einige Fehler drin, vor allem Fehler bei den Anführungszeichen. Aber es fängt schon beim SELECT an, dort ist ein semantischer Fehler, du vergisst bei der Abfrage das Feld 'nn', gibst also alle mit demselben Vornamen aus. Dies muss also noch dazu
PHP:
"SELECT
...
AND ma.Nachname = ".$_POST[nn]
und ich frage mich, warum du in dem SELECT die Felder anr.* ausgibst, wenn du sie gar nicht benutzt.

Dann geht das nicht
PHP:
"SELECT 
...
ma.Vorname = "'.$_POST[vn].'" ";
Lass die einfachen VZ ' vor und hinter .$_POST[vn]. weg.

Nur innerhalb von doppelten Hochkommas werden Variablen ersetzt, innerhalb von einfachen nicht.
hier wird die Variable nicht ersetzt
PHP:
echo'<input type="text" name="vn" value="$row->Vorname"><br>';
in deinem Outpt steht einfach
PHP:
<input type="text" name="vn" value="$row->Vorname"><br>
Hier wird sie ersetzt:
PHP:
echo"<input type=\"text\" name=\"vn\" value=\"$row->Vorname\"><br>";
output:
PHP:
<input type="text" name="vn" value="Willi"><br>
Besser ist allerdings (mit dem selben output):
PHP:
echo'<input type="text" name="vn" value="'.$row->Vorname.'"><br>';
Gruß
Peter
 
Zuletzt bearbeitet:
Hallo RavenOnJ,
ja ich habe wirklich nicht so die Ahnung mit den einfachen und doppelten Anführungszeichen. Hab mir dazu einige Beispiele aus einigen Foren angesehen, und auch alles ausprobiert und immer wieder umgesetzt.
Dank Deiner Erläuterung ist mir jetzt einiges viel klarer geworden.

Warum ich jetzt in der SELECT-Abfrage anr.* mit rein genommen habe, hat folgenden Hintergrund.
-Im Formular soll aus einer Untertabelle "Anrede" die Anrede im Dropdown-Element - über die SchlüsselID "Anrede_ID"- mit geladen werden. daher also die Zeilen:

PHP:
"SELECT 	
		ma.*,
		anr.*
	FROM 
		mitarbeiter AS ma,
		anrede AS anr
	WHERE
		ma.Anrede_ID = anr.Anrede_ID 
	AND
		ma.Vorname = ".$_POST["vn"]." ";

Jetzt wird auch das erste Feldelement mit einem Namen befüllt, wenn ich statt ".$_POST["va"]." einen Namen Otto hinschreibe.

Also so:
PHP:
SELECT
...
ma.Vorname = 'Otto' ";

Aber mit ".$_POST["vn"]." kommt dann die Fehlermeldung mit der ich nicht viel anfangen kann. Unbestimmte Spalte, die doch aber in meiner DA vorhanden ist:

Error: SELECT ma.*, anr.* FROM mitarbeiter AS ma, anrede AS anr WHERE ma.Anrede_ID = anr.Anrede_ID AND ma.Vorname = Otto
Unknown column 'Otto' in 'where clause'
 
Zuletzt bearbeitet:
Anführungszeichen :)
PHP:
"SELECT     
        ma.*,
        anr.*
    FROM 
        mitarbeiter AS ma,
        anrede AS anr
    WHERE
        ma.Anrede_ID = anr.Anrede_ID 
    AND
        ma.Vorname = \"".$_POST["vn"]."\"";
 
Na super****** :-) Vielen Dank sheel!!

Wer hat sich den so etwas kompliziertes einfallen lassen. Habt ihr da vielleicht ne gute Seite wo ich das mit den Anführungszeichen nachlesen kann? Ansonsten schau ich mal selber.

Gruß.
 
du hast du einfachen Anführungszeichen um Otto herum vergessen. So wie bei dir wird Otto als Tabellenspalte interpretiert. Ich nehme an, du hast in deinem SELECT-String einfach $_POST["vn"] durch 'Otto' ersetzt. Diese Anführungszeichen tauchen aber nicht mehr in dem zusammengesetzten String auf. Wenn schon, hättest du es durch .'\'Otto\' '. ersetzen müssen.

Gruß
Peter
 

Neue Beiträge

Zurück