Requêtes conditionnelles

Résolu
margChamo Messages postés 32 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 4 février 2011 - 11 juin 2009 à 09:48
margChamo Messages postés 32 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 4 février 2011 - 11 juin 2009 à 10:41
Bonjour tout le monde,
je sollicite votre aide aujourd'hui car j'ai une requête avec de condition qui ne fonctionne pas.
J'explique : j'ai une page php appeler "liste.php" qui est relier à une base de données sous wamp, cette page affiche tous les champs qui vont être projeté et sous chaques champs, il a des cases ou l'utilisateur peut rentrer des informations lui permettant de faire des restrictions. Tout ce ci est dans un formulaire dont le résultat s'affiche sur une page nommée "imprim.php". Lorsqu'il n'y a pas de restriction tous les champs s'affichent bien, mais dès que l'utilisateur rentre une restriction ce la ne fonctionne plus et m'affiche les erreur suivantes :

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\NouveauDossier\imprim.php on line 140

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\NouveauDossier\imprim.php on line 159

Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\NouveauDossier\imprim.php on line 163

Voici le morceau de code correspondant :
imprim.php

// établissement de la requête à afficher
    $req = "SELECT * FROM personnel" ;
    $whereok = false;                                                                        //initialisation de la variable whereok

    if ($_POST["civilite"] != NULL){                                                        //si civilite est différent de null        $req $req."WHERE civilite'".$_POST['civilite']."'";                                //rajouter un where
        $whereok = true;                                                                    //et mettre whereok a true sinon rien faire
    }

    if ($_POST["nom"] != NULL){                                                                //si nom est différent de null
        if ($whereok == true){                                                                //si whereok existe            $req $req."AND nom'".$_POST['nom%']."'";                                    //alors rajouter un AND a la requête
        }
        else{            $req $req."WHERE nom '".$_POST['nom%']."'";                                    //si whereok n'existe pas alors rajouter un where
            $whereok = true;                                                                //et mettre whereok a true sinon rien faire
        }
    }

    if ($_POST["prenom"] != NULL){                                                            //si nom est différent de null
        if ($whereok == true){                                                                //si whereok existe            $req $req."AND prenom '".$_POST['prenom%']."'";                                //alors rajouter un AND a la requête
        }
        else{            $req $req."WHERE prenom '".$_POST['prenom%']."'";                            //si whereok n'existe pas alors rajouter un where
            $whereok = true;                                                                //et mettre whereok a true sinon rien faire
        }
    }

liste.php :

Civilité
<SELECT NAME = "civilite" >
                                                                <option value = "" >  </option>
                                                                <option value = "M" > M </option>
                                                                <option value = "MME" > MME </option>
                                                                <option value = "MELLE" > MELLE </option>
                                                            </SELECT>

Nom


Prénom

merci d'avance pour votre aide
cordialement

MargChamo

3 réponses

syndrael Messages postés 2378 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 29 décembre 2012 20
11 juin 2009 à 10:00
Et si tu fais un echo $req et que tu teste la requete sur MySQL directement ? via PHPMyAdmin ou en ligne de commande ou autre..
S.
3
margChamo Messages postés 32 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 4 février 2011
11 juin 2009 à 10:10
j'ai déjà testé ma requête sur PHPMyAdmin et elle fonctionne mais dès que je rajoute les if cela ne fonctionne plus et quand je fais un echo $req cela me renvoi bien la bonne requête.

MargChamo
3
margChamo Messages postés 32 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 4 février 2011
11 juin 2009 à 10:41
c'est bon j'ai trouver mon erreur, je suis trop conne, j'avais oublier de mettre un espace avant le where qui était donc collé au nom de la table.

merci a tous

MargChamo
3
Rejoignez-nous