• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

php-Formular mit MySQL-Daten

MarkOH

Newbie
Hallo, ich habe da ein Problem, bei dem ich momentan nicht weiter komme und auch keine Hilfe in den einschlägigen PHP-Foren gefunden habe.
Ich möchte Daten aus einer MySQL-Datenbank die ich per Select hole in ein PHP-Formular stecken genauer gesagt in eine Auswahlbox. Und genau da liegt mein Problem. Ich bekomm die Daten schön aus Mysql geliefert, bin aber nicht in der Lage diese in die Auswahlbox reinzupacken. Ich bekomm es einfach nicht hin.

Bitte bitte helft mir :cry:
 

nobbiew

Hacker
Code:
foreach ( $datenarray as $value) {
     echo "<option>$value</option>\n"
}
bzw.
Code:
while (list( $key, $value ) = each($datenarray)) {
   echo "<option>$val</option>";
}
sollte dir weiterhelfen
 
OP
M

MarkOH

Newbie
Erstmal danke für den Tipp, aber ich bekomm nun ständig nen Parse Error und finde den Fehler nicht, hier mal der gesamte Code
Code:
<?php 

$verbindung = mysql_connect("$DB_HOST", "$DB_USER", "$DB_PASS") or die ("Keine Verbindung zur Datenbank möglich<P>");
$result = mysql_select_db("$DB_NAME") or die ("Datenbank konnte nicht gewählt werden<P>");
$SQL = ("Select `klasse` from user WHERE `group` like 'schueler' group by klasse");
$result = mysql_query($SQL) or die ("Select konnte nicht ausgeführt werden<br>");
	
//$fach = Param('fach');
//$lehrer = Param('vorname');
//if (!isset($fach)) 
{
echo("<form action=klausuren.php method=post>\n"); 
echo("<table border=1 cellpadding=0 cellspacing=0>\n"); 
echo("<tr>\n"); 
        echo("<td><select name=Klasse> 
        	foreach ($result as $value) {
        		echo "<option>$value</option>\n"
        	}
        	</td>\n");
echo("</tr>\n"); 
echo("/table>");
}
mysql_close($verbindung);

Noch ne Idee?
 

nobbiew

Hacker
Code:
<?php 

$verbindung = mysql_connect("$DB_HOST", "$DB_USER", "$DB_PASS") or die ("Keine Verbindung zur Datenbank möglich<P>");
$result = mysql_select_db("$DB_NAME") or die ("Datenbank konnte nicht gewählt werden<P>");
$SQL = ("Select `klasse` from user WHERE `group` like 'schueler' group by klasse");
$result = mysql_query($SQL) or die ("Select konnte nicht ausgeführt werden<br>");
	
//$fach = Param('fach');
//$lehrer = Param('vorname');
//if (!isset($fach)) 
{
echo("<form action=klausuren.php method=post>\n"); 
echo("<table border=1 cellpadding=0 cellspacing=0>\n"); 
echo("<tr>\n"); 
        echo("<td><select name=Klasse>\n"); 
        	foreach ($result as $value) {
        		echo "<option>$value</option>\n"
        	}
        	echo ("</select></td>\n");
echo("</tr>\n"); 
echo("/table>");
}
mysql_close($verbindung);

Sollte gehen. Ich konnte es leider nur nicht testen. Du musst den echo abschließen bevor du die foreach anfängst. Zudem muss in html der select mit </select/ beendet werden
 
OP
M

MarkOH

Newbie
warum bin ich da nicht selbst dahinter gestiegen, naja sch... geistige aussetzer :shock:

Aber: Die Auswahlbox bleibt leer, die wird nicht gefüllt :cry:
 

nobbiew

Hacker
Nimm die foreach-Schleife mal aus dem ausgabeblock und setz sie ans ende. Innerhalb der HTML-ausgabe wird oft mal eine evtl. Fehlermeldung nicht weitergereicht.

Hast du schon geprüft ob in $result überhaupt daten stehen? Bzw. ist $result als array definiert?
 

nobbiew

Hacker
Also ich bin nicht der php-Freak, ich programmiere mehr in perl, aber soweit ich die Doku verstanden habe, liefert mysql_query kein Array, sonder ein Objekt zurück, das die Daten cached. Wenn du nun die Daten selbst als Array haben willst - und die brauchst du hier - dann musst du noch mit anderen funktionen (z.B. mysql_fetch_array) die Daten selbst holen.

Schau dir mal http://www.php.net/manual/de/function.mysql-fetch-array.php an. Das sollte helfen.
 

/home/lino

Newbie
guten abend,
ich würde das ganze per 'while' lösen. erstmal der ganze code:
Code:
<?php

$verbindung = mysql_connect("$DB_HOST", "$DB_USER", "$DB_PASS") or die ("Keine Verbindung zur Datenbank möglich<P>");
$result = mysql_select_db("$DB_NAME") or die ("Datenbank konnte nicht gewählt werden<P>");
$SQL = ("Select `klasse` from user WHERE `group` like 'schueler' group by klasse");
$result = mysql_query($SQL) or die ("Select konnte nicht ausgeführt werden<br>");
   
//$fach = Param('fach');
//$lehrer = Param('vorname');
//if (!isset($fach))
{
echo("<form action=klausuren.php method=post>\n");
echo("<table border=1 cellpadding=0 cellspacing=0>\n");
echo("<tr>\n");
        echo("<td><select name=Klasse>\n";)
           while($r=mysql_fetch_array($result)) {
              echo "<option>". $r['FELD'] ."</option>\n"
           }
echo "</select>";
echo "</td>\n";
echo("</tr>\n");
echo("/table>\n");
}
mysql_close($verbindung);

hab mich erstmal nur um das db prob gekümmert, das sollte so laufen, in der zeile
Code:
while($r=mysql_fetch_array($result)) {
wird in die das was du aus der db ausliest in das array '$r' geladen und kann einfach eingefügt werden.
'FELD' steht dabei für das jeweilige feld das du ausgelesen hast...
falls du nicht weisst was ein array ist guck in der doku nach ;)
ansonsten frag wenn du was nicht verstanden hast.
gruss, lino

edit:
wenn das in ne auswahlbox kommt könnte die mäglcihkeit bestehen das das ganze den rahmen sprengt, daher versehe ich meine sql-querys immer mit nem LIMIT "$limit" hinten dran... ich weiss ja nicht wie viel da rauskommt, is nur ärgerlich wenn dann in ner listbox z.b. auf einmal 19382 einträge stehn ;)
 
OP
M

MarkOH

Newbie
Danke für die Hilfe, habe gestern abend das Problem durch das phpforum lösen können, sieht nun genauso aus, wie der vorschlag, den du mir gemacht hast.

Zum Limit, wenn es so viele Werte wären, ist es ja unsinnig das in ne Auswahlbox reinzupacken, nein nein, das ist alles im Rahmen.

Danke dir für deine Hilfe!
 

/home/lino

Newbie
ich weiss ja nicht wie viele werte das sind... hätte ja sein können das es möglich ist das da ziemlich viel bei rauskommt, deswegen.
war ja auch nur ein hinweis ;)
ansonsten kein problem, man hilft wo man kann...
havaniceday 8)
 
Oben