Drop-Down Menue mit Daten aus MS SQL fuellen

Sylan

Mitglied
Hallo Leute!

Ich habe hier ein Problem, zu dem ich bisher nirgendwo eine Loesung finden konnte:
Ich baue ein Webinterface, in dem ich aus einer MS SQL Datenbank Daten auslesen muss. Alles klappt wunderbar, bis der HTML Teil dazu kommt. Hier der Code der funktioniert:

Code:
mssql_select_db($database, $con);
$query="select * from users";
$result = mssql_query($query, $con);

while($row=mssql_fetch_row($result)){
	print $row[1];
}


Wenn ich das nun aber in einer Dropdownliste ausgeben lassen will, funktioniert das nicht, die Dropdownliste bleibt leer. Hier der Code der nicht funktioniert:

Code:
<select name="Referred" size="1">
	<? while($row=mssql_fetch_row($result)){	?>
	     
                     <option value="<?=$row[1] ?>"><?=$row[1]?></option><?			
	    }?>
</select>]

Ich habe das mit einer MySQL Datenbank ausprobiert, da hats einwandfrei geklappt. Aber hier seh ich nicht, wo der Fehler liegen soll :confused:
Kann mir da jemand helfen?

LG
Sylan
 
Hast du schon mal einen Blick in den HTML-Quellcode geworfen? Was wird dort beim <select> ausgegeben? Keine daten?
 
PHP:
<select name="Referred" size="1">
	<? while($row=mssql_fetch_row($result)){	?>
	     
                     <option value="<? echo $row[1];  ?>"><? echo $row[1]; ?></option><?			
	    } ?>
</select>

So sollte das hin hauen
 
Recht hat er! Fehler war, dass du im Select-Feld bei den einzelnen Options das "print" vergessen hast und somit einfach nichts ausgegeben wird - daher entweder "print" oder wie mein Vorredner "echo" davor ...
 
Das war leider nicht die Loesung :( Zum einen habe ich nun herrausgefunden, dass IIS es nicht mag, wenn man php skripte nur mit <? anfaengt, er moechte bei mir <?php haben. Bei Apache war das nie das Problem... aber naja.
Mein Code fuer MySQL und Apache sah genauso aus wie fuer mssql, nur dass statt mssql_fetch_row natuerlich mysql_fetch_row eingesetzt wird - und das funktioniert einwandfrei.

Einen Schritt bin ich also weiter gekommen: wenn ich <?php einsetze, iteriert er auf jedenfall richtig durch, sprich er liest alle Datensaetze, die in der DB stehen, da das Dropdown Menue 10 Eintraege beinhaltet (kann man an der Laenge sehen) und 10 Eintraege stehen auch in der DB... aber das Menue ist halt immer noch leer. Wenn ich den Source Code anschaue, steht mein PHP Code drin, also

<select size="1"><option value="<?PHP=$row[1]?>"><?PHP=$row[1]?>

obwohl ich das als PHP Code kennzeichne :confused:
 
Hi,

DAS hier ist ja auch verkehrt:
<select size="1"><option value="<?PHP=$row[1]?>"><?PHP=$row[1]?>

RICHTIG muss es heissen
<select size="1"><option value="<?php echo $row[1]; ?>"><?php echo $row[1];?>

LG
Andy
 
@andy72
Wunderbar, danke, das war die Loesung!
Ich frage mich jedoch, weshalb folgender Code funktioniert:
Code:
<select name="Referred" size="1">

<? while($row = mysql_fetch_row($result)) {
?>
<option value="<?=$row[1] ?>"><?=$row[1]?></option>
<? } 
?>
</select>
Da brauche ich auch kein echo mit einzubauen. Ist das wieder eine Eigenheit von MS?

LG und danke an alle,
Sylan
 
Du solltest die Ausgabewerte noch maskieren:
PHP:
echo '<select name="Referred" size="1">';
while( $row = mysql_fetch_row($result) ) {
	echo '<option value="'.htmlspecialchars($row[1]).'">'.htmlspecialchars($row[1]).'</option>';
}
echo '</select>';
Auch ist es sinnvoll bei der Abfrage nur die wirklich benötigten Spalten auszuwählen und nicht alle.
 
@Gumbo:
Das ist grad ja auch nur ein Versuch, in der Tabelle ist nur eine Spalte mit 10 Eintraegen enthalten, deshalb macht es nichts wenn ich select * schreibe. Will erst einmal sehen, wie das funktioniert, bevor ich mich an das echte Webinterface heranwage :)

Aber das mit dem maskieren kapier ich nicht ganz - warum ist
echo '<select name="Referred" size="1">';
besser als
?> <select name="referred" size="1"> <?
 
Zurück