Liste déroulante à partir d'une BDD avec Mysqli en procédural
Bonjour,
Passant de Mysql à Mysqli, mon nouveau script ne fonctionne +
L'ancien script est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| echo ("<form action='suite.php' method='post'>");
echo ("<select name = 'ChoixFamille'>");
$SQL = "SELECT DISTINCT family FROM plant ORDER by family ASC";
$req1 = mysql_query($SQL);
$Familles_Nbre =mysql_num_rows($req1);
echo '<option value="Aucune famille sélectionnée">sélectionnez parmi les '.$Familles_Nbre.' familles</option>';
while($val=mysql_fetch_array($req1))
{
echo "<option value=\"".$val["family"]."\">".$val["family"]."</option>\n";
}
echo ("</select>");
echo "<input type= 'submit' name= 'SelFamille' value= 'Valider'>";
echo ("</form>"); |
Tandis que le nouveau est
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <?php
// Afficher les erreurs à l'écran
ini_set('display_errors', 1);
// Enregistrer les erreurs dans un fichier de log
ini_set('log_errors', 1);
// Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
ini_set('error_log', dirname(__file__) . '/log_error_php.txt');
// Afficher les erreurs et les avertissements
error_reporting(e_all);
echo ("<form action='suite.php' method='post'>");
echo ("<select name = 'ChoixFamille'>");
$SQL = "SELECT DISTINCT family FROM plant ORDER by family ASC";
if ($req = mysqli_prepare($link, $SQL))
{
mysqli_stmt_execute($req);
mysqli_stmt_store_result($req);
mysqli_stmt_bind_result($req, $family);
$rows = mysqli_stmt_num_rows($req);
}
if ($rows>0)
{
echo '<option value="Aucune famille sélectionnée">sélectionnez une famille parmi les '.$rows.' référencées</option>';
while($tuple=mysqli_fetch_assoc($req))
{
echo "<option value=\"".$tuple["family"]."\">".$family."</option>\n";
}
}
echo ("</select>");
echo "<input type= 'submit' name= 'SelFamille' value= 'Valider'>";
echo ("</form>");
?> |
Dans le 1er cas, la liste déroulante apparait bien mais pas dans le second (le formulaire est présent mais sans aucune ligne en dessous). J'ajoute qu'aucun message d'erreur ne s'affiche.
Merci de votre aide future.