ma page php génère des informations sur des voitures en fonctions des critères rentrés dans des listes de sélection (on choisit le type et/ou la marque et/ou le fabricant et/ou le modele).
La page apparaissant fonctionne bien (d'ailleurs elle liste tous les premiers modèles qu'elle trouve), mais lorsque je sélectionne un ou plusieurs critères, j'ai droit à un joli :
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in E:\Program Files\wamp\www\Formation PHP - Anaska\projet\site\inc_php\catalogue.inc.php on line 103
Je ne sais pas trop si le pb vient de php ou mysql, je pencherais plus sur mysql car c'est depuis que j'ai changé des paramètres dans les AND que ça n'affiche carrément plus rien.
Voici mon code :
<form method="post" action="index.php?page=catalogue" name="catalogue">
Type :
<select name="type">
<option value="">-Type-</option>
<?php $sql = '
SELECT nom, id
FROM type_voiture
ORDER BY nom';//mettre dans l'ordre alphabétique
$resultat_type = mysqli_query($link, $sql);
while ($row_type = mysqli_fetch_assoc($resultat_type))//tant qu'on trouve une réponse dans $resultat_type...
{
echo '<option value="'.$row_type['id'].'">'.$row_type['nom'].'</option>';//...afficher cette réponse et recommencer la boucle
}?>
</select>
Marque :
<select name="marque">
<option value="">-Marque-</option>
<?php $sql = '
SELECT nom, id
FROM marque_voiture
ORDER BY nom';//mettre dans l'ordre alphabétique
$resultat_marque = mysqli_query($link, $sql);
while ($row_marque = mysqli_fetch_assoc($resultat_marque))//tant qu'on trouve une réponse dans $resultat_marque...
{
echo '<option value="'.$row_marque['id'].'">'.$row_marque['nom'].'</option>';//...afficher cette réponse et recommencer la boucle
}?>
</select>
Fabricant :
<select name="fabricant">
<option value="">-Fabricant-</option>
<?php $sql = '
SELECT nom, id
FROM fabricant
ORDER BY nom';//mettre dans l'ordre alphabétique
$resultat_fabricant = mysqli_query($link, $sql);
while ($row_fabricant = mysqli_fetch_assoc($resultat_fabricant))//tant qu'on trouve une réponse dans $resultat_marque...
{
echo '<option value="'.$row_fabricant['id'].'">'.$row_fabricant['nom'].'</option>';//...afficher cette réponse et recommencer la boucle
}?>
</select>
<br />Modèle :
<select name="modele">
<option value="">-Modèle-</option>
<?php $sql = '
SELECT nom_modele, id
FROM voiture
ORDER BY nom_modele';//mettre dans l'ordre alphabétique
$resultat_modele = mysqli_query($link, $sql);
while ($row_modele = mysqli_fetch_assoc($resultat_modele))//tant qu'on trouve une réponse dans $resultat_marque...
{
echo '<option value="'.$row_modele['id'].'">'.$row_modele['nom_modele'].'</option>';//...afficher cette réponse et recommencer la boucle
}?>
</select>
<br />
<input type="submit" name="rechercher" value="rechercher"> <br /><br />
<?php
$type = $_POST['type'];
echo $type;
$sql = '
SELECT couleur, annee, echelle, url_photo_thumb, prix_ttc,
marque_voiture.nom AS nom_marque,
type_voiture.nom AS nom_type_voiture,
fabricant.nom AS fab,
voiture.nom_modele AS nom_modele
FROM voiture, marque_voiture, type_voiture, fabricant
WHERE voiture.id_type = type_voiture.'.$_POST['type'].'
AND voiture.id_marque = marque_voiture.'.$_POST['marque'].'
AND voiture.id_fabricant = fabricant.'.$_POST['fabricant'].'
ORDER BY nom_modele';
$resultat = mysqli_query($link, $sql);
||||||||Ligne n°103 while ($row = mysqli_fetch_assoc($resultat))
{
if ($row['annee'] == 0)//si l'année n'est pas présente, alors ne rien afficher plutot que d'afficher 0000
{
$row['annee'] = '';
}
echo '<div class="voiture"><div class="voiture_infos"><img src="'.$row['url_photo_thumb'].'" /><br />
<i>'.$row['nom_marque'].'</i> '.$row['nom_modele'].'<br />'.$row['annee'].', '.$row['prix_ttc'].'€</div>
<div class="voiture_options">
<a href=""><img src="./images/panier.jpg" /></a>
<a href=""><img src="./images/zoom.jpg" /></a>
<a href=""><img src="./images/commande.jpg" /></a> </div></div>';
}
?>
Je n'ai pas trouvé d'infos pertinente, et ai testé la requete mysql dans phpmyadmin avec succès (en remplacant les $_POST par "ID".Merci