2010-12-10 22 views
0

J'ai une requête qui ressemble à quelque chose comme ça (je sais que vulnérable à l'injection sql, juste un modèle):Accès aux informations à partir de SQL Alors que l'intérieur d'une forme

$db = mysql_connect("host","un", "pw"); 
mysql_select_db("db", $db); 

$sql = "SELECT *" 
    . " FROM Student" ; 
$result = mysql_query($sql); 
$students = mysql_fetch_assoc($result); 
$numRows = mysql_num_rows($result); 

Puis-je avoir cette forme:

<form name="form" id="form" method="post" action="page"> 
<select name="student" id="student"> 

<? 
for ($i=0;$i<=$numRows;$i++){ 
    echo "<option>" . $students['StudentID'] . "</option>"; 

} 

?> 


    <option selected="selected">Please select a student</option> 
    </select> 

Cela devrait imprimer quelque chose comme un menu déroulant avec toutes les valeurs de la table que des articles. Cependant, je reçois une boîte déroulante avec 6 des mêmes éléments, dans ce cas, je reçois 6 Id d'étudiant, mais ils sont tous les mêmes ID. J'ai six étudiants dans le db, et je voudrais afficher chacun d'entre eux comme une option. Qu'est-ce que je fais mal?

TIA

Répondre

4

Jetez un oeil aux exemples de mysql_fetch_assoc. Il ne retournera que un enregistrement. Afin d'obtenir tous, vous devez l'utiliser dans une boucle, par exemple:

$students = array(); 

while(($student = mysql_fetch_assoc($result))) { 
    $students[] = student; 
} 

et plus tard:

<?php foreach($students as $student): ?> 
    <option><?php echo $student['StudentID']; ?></option> 
<?php endforeach; ?> 

ou avec une boucle for (mais il ne faut pas si vous ne « t ont besoin d'un compteur):

<?php for($i = 0; $i < numRows; $i++): ?> 
    <option><?php echo $students[$i]['StudentID']; ?></option> 
<?php endfor; ?> 

(Note: J'utilise le alternative syntax for control structures qui IMHO est beaucoup plus lisible lors du mélange HTML et PHP)

+0

travaillé comme un charme! Merci beaucoup! – Ryan