If et else dans boucle while

Résolu/Fermé
joncavidulienne Messages postés 13 Date d'inscription jeudi 15 mai 2014 Statut Membre Dernière intervention 1 juin 2014 - 27 mai 2014 à 08:29
joncavidulienne Messages postés 13 Date d'inscription jeudi 15 mai 2014 Statut Membre Dernière intervention 1 juin 2014 - 27 mai 2014 à 16:33
Bonjour,

J'ai un moteur de recherche de plantes par critères et je voudrais afficher un message d'erreur quand il n'y a pas de résultat mais je n'y arrive pas

Voici mon code:
<?php

include("connect_bdd.php");


$types ="";
$couleur="";
$duree="";
$feuillage="";
$exposition="";


if(isset($_POST['types']))
{
$types = htmlentities($_POST['types']);
$couleur = htmlentities($_POST['couleur']);
$duree= htmlentities($_POST['duree']);
$feuillage = htmlentities($_POST['feuillage']);
$exposition = htmlentities($_POST['exposition']);



$req=$bdd->query( "SELECT nom FROM VEGETAUX WHERE codetype=$types AND codeduree=$duree AND codecouleur=$couleur AND codefeuillage=$feuillage AND codeexposition=$exposition");


while($data=$req->fetch())

{
if(!empty($data['nom']))
{
echo "<span class=\"affiche\" style=\"color:green;font-weight:bold;font-size:20px;position:relative;left:250px;top:450px;\"><br><br><a href=\"plantes.php?nom=".$data['nom']."\">".$data['nom']."</a></span><br><br>";
}
else
{
echo "<span class=\"affiche\" style=\"color:red;font-weight:bold;font-size:20px;position:relative;left:250px;top:450px;\"><br><br>Aucune plante ne correspond aux critères choisis</span><br><br>";
}
}
}
?>

Quelqu'un pourrait-il m'aider?
Merci
A voir également:

2 réponses

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
Modifié par Pitet le 27/05/2014 à 12:51
Salut,

Si tu n'utilises pas mysql ou que tu souhaites que ton code soit compatible avec d'autres SGBD :

if ($data = $req->fetch()) {
    do {
        echo "<span class=\"affiche\" style=\"color:green;font-weight:bold;font-size:20px;position:relative;left:250px;top:450px;\"><br><br><a href=\"plantes.php?nom=".$data['nom']."\">".$data['nom']."</a></span><br><br>";
    } while ($data = $req->fetch());
} else {
    echo "<span class=\"affiche\" style=\"color:red;font-weight:bold;font-size:20px;position:relative;left:250px;top:450px;\"><br><br>Aucune plante ne correspond aux critères choisis</span><br><br>";
}


Au passage, htmlentities doit être utilisé pour afficher des données en html et surtout pas pour protéger tes données avant de les utiliser en sql.

Bonne journée
0
joncavidulienne Messages postés 13 Date d'inscription jeudi 15 mai 2014 Statut Membre Dernière intervention 1 juin 2014
27 mai 2014 à 16:33
Merci beaucoup pour votre aide . ça marche!!
0
Nhay Messages postés 838 Date d'inscription vendredi 2 novembre 2012 Statut Membre Dernière intervention 17 décembre 2015 126
27 mai 2014 à 12:31
Si tu utilise mysql, et que tu te moque de la compatibilité avec les autres moteur, tu peut utiliser
if($req->rowCount()){
//Mets ici le reste de ton code
}else{
//ici ton message d'erreur
}

Sinon, l'autre solution est de faire une requête count avec les même paramètre.
-1