Dropdown-Feld mit Daten aus SQL-Datenbank füllen

Davicito

Erfahrenes Mitglied
Hallo, programmiere erst seid kurzem in PHP und habe ein Problem mit dem Befüllen eines Dropdown-Formularelements mit Daten aus einer MySQL-Datenbank.

Folgendes Senario:
In einer Tabelle "Anrede" möchte ich die Informationen "Herr" und "Frau" in das Dropdown-Feld eines HTML-Formulars laden.

Tabelle "Anrede"
________________
|Anrede_ID| Anrede|
| 1 | Frau |
| 2 | Herr |

mein bisheriger Ansatzt dafür:
PHP:
<html>
	<head>
		<title>MA-Eingabe</title>
	</head>
	<body>
			<h3>Mitarbeitereingabe</h3><br/>
			<form action="Eingabe.php" method="post">							
				Anrede:<br>
				<select size="1" maxlength="20" name="anr"><br>
			
	<?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/>";				
			}
			else
			{
				echo "<option> Anrede </option>";
				$sql = "SELECT Anrede FROM anrede"; 
				$result = mysql_query($sql) OR die(mysql_error()); 
				while($row = mysql_fetch_array($result)) 
				{ 		
					echo "<option value="'.$row['Anrede'].'">'.$row['Anrede'].'</option>";
					//echo "<option>".$row["Anrede_ID"]."</option>";					
                }								 
			}
		?>					
			</select>
			
			 <br>Vorname:<br>
			<input type="text" size="24" maxlength="50" name="vn"><br>			
			 Nachname:<br>
			<input type="text" size="24" maxlength="50" name="nn"><br>
			 Straße:<br>
			<input type="text" size="24" maxlength="50" name="str"><br>		
			 PLZ:<br>
			<input type="text" size="24" maxlength="50" name="plz"><br>
			 Ort:<br>
			<input type="text" size="24" maxlength="50" name="ort"><br>		
			 Telefon:<br>
			<input type="text" size="24" maxlength="50" name="tel"><br>
			 Handy:<br>
			<input type="text" size="24" maxlength="50" name="mobi"><br>			
			 Email:<br>
			<input type="text" size="24" maxlength="50" name="mail"><br>
			 Geburtsdatum: Form(JJJJ-MM-TT)<br>
			<input type="text" size="24" maxlength="50" name="geb"><br>
			
			<input type="submit" value="Anlegen">
			<input type="reset" value="Formular leeren">
		</form>
	</body>
</html>

Nur das Ganze klappt nicht. Das Dropdown-Feld wird nicht mit den Daten aus der Tabelle befüllt.
Die Zeilen 41 bis 48 müssen irgendwie anders lauten

Kann mir da jemand weiter helfen?

Liebe Grüße
 
Zuletzt bearbeitet von einem Moderator:
Hi Davicito,

Fehler kommen also keine?
Wie schaut der Teil denn in der HTML-Ausgabe aus (Browserquelltext)?

edit: Einige Anführungszeichenfehler.
Versuchs so:
PHP:
echo '<option value="'.$row['Anrede'].'">'.$row['Anrede'].'</option>';
 
Hi sheel,
beim Öffnen der Seite kommen keine Fehler und auch Hinweise werden keine angezeigt.
Browserquelltex von Eingabe.html hatte ich eigentlich gepostet.
Im Dropdown-Feld wird nur Anrede als Wort und einmal '.$row['Anrede'].' angezeigt.

Hab die Anführungszeichen abgeändert, jedoch bleibt alles beim Alten.
 
Wo ist denn der (von PHP erzeugte) Browser-Quelltext?
Ich seh ihn nicht.

Und bist du dir ganz sicher, alles genau so wie in meiner Zeile zu haben?
Führst du auch die richtige Datei aus, keine alte Kopie oder so?
(das passiert den Leuten gar nicht so selten).
 
Der PHP-Quelltext steht zwischen den Zeilen 11-50 in der Eingabe.html
Ich habe den Code jetzt so abgeändert gehabt:
C:
    echo '<option value="'.$row['Anrede'].'">'.$row['Anrede_ID'].'</option>';
Wobei ich auch schon mal gelesen habe und in zahlreichen Beispielen gesehen habe, dass es wohl egal sein soll, ob ich nun doppelte oder einfache Anführungszeichen setzte.

Zur Ausfürung der Datei steht bei mir im Adressfeld: localhost/eingabe.html
 
Damit wir den Sinn hinter der Anrede-Tabelle überhaupt wirklich ausnutzen, müssen wir die ID wohl auch auslesen.
PHP:
$sql = "SELECT * FROM Anrede"; //überprüf die Groß-/Kleinschreibung !
$result = mysql_query($sql) OR die(mysql_error()); 
while($row = mysql_fetch_object($result)) 
{         
      echo '<option value="'.$row->Anrede_ID.'">'.$row->Anrede.'</option>';
}

Falls das nicht klappen sollte, wobei Sheel dich eh korrigiert hatte, musst du am besten mal die Fehler irgendwo ausgeben lassen. Zum Beispiel in eine Datei.

Edit:
In deinem vorherigen Post sind Anrede und ID vertauscht, value muss der ID entsprechen.

Und die Anführungszeichen machen durchaus einen Unterschied.
PHP:
//funktioniert
echo 'Text';
echo "Text";
echo 'Text mit "Anführungszeichen" und so';
echo "Text mit 'Anführungszeichen' und so";
echo "Text mit $variablen und so";
echo "Text mit {$variablen} und so"; //ergibt selbiges wie die Zeile darüber
echo 'Text mit '.$variablen.' und so';

//funktioniert nicht
echo 'Text";
echo "Text';
echo 'Text mit $variablen und so';
echo 'Text mit {$variablen} und so';
 
Zuletzt bearbeitet:
Hi Lime, hab deine Zeile mal ausprobiert,
PHP:
echo '<option value="'.$row->Anrede_ID.'">'.$row->Anrede.'</option>';
aber das hat auch nicht geholfen
 
Du musst den ganzen Absatz ändern. Ich habe z.B. eine andere Funktion verwendet:
PHP:
while($row = mysql_fetch_object($result)) 

//du hattest
while($row = mysql_fetch_array($result))

Zudem habe ich eigentlich in jeder Zeile etwas geändert. Kopier einfach den ganzen Absatz!
 
jetzt steht bei mir auch
PHP:
$sql = "SELECT * FROM Anrede"; 
	$result = mysql_query($sql) OR die(mysql_error()); 
	while($row = mysql_fetch_object($result)) 
	{ 		
	       echo '<option value="'.$row->Anrede_ID.'"> '.$row->Anrede.'</option>';
   }

geht immer noch nicht.

Eine Frage habe ich schon noch, und zwar meinte sheel ich sollte mir den Quelltext ausgeben lassen. Wie ist das gemeint? Ich hab doch den Quelltext im Editor. Soll ich mir jetzt mit <pre></pre> den selben Quelltext im Browser ausgeben lassen? Was habe ich dafon? Wie gesagt ich bin neu in der Web-Programmierung^^.
 
Zuletzt bearbeitet:
Zurück