Bonjour,
ça fait maintenant deux jours que je bloque sur mon problème et je ne comprend vraiment pas pourquoi ça ne marche pas ....
Mon but est de créer un système de filtre de colonnes d'un tableau à l'aide de requêtes SQL.
Mon formulaire:

<form method="post" action="verif.php">

            <p><label for="nom">Nom :</label>
            <input type="text" name="nom" id="nom"></p>   

            <p><label for="nom">Prénom :</label>
            <input type="text" name="prenom" id="prenom"></p>   

            <p><label for="nom">Date de naissance :</label>
            <input type="text" name="ddn" id="ddn"></p> 

            <p><label for="nom">Responsable légal 1 :</label>
            <input type="text" name="resp1" id="resp1"></p> 

            <p><label for="nom">Responsable légal 2 :</label>
            <input type="text" name="resp2" id="resp2"></p> 

            <p><label for="nom">Cours :</label>
            <input type="text" name="cours" id="cours"></p> 

            <p><label for="nom">Adresse  :</label>
            <input type="text" name="adresse" id="adresse"></p> 

            <p><label for="nom">Numéro de téléphone :</label>
            <input type="text" name="tel" id="tel"></p> 

            <p><label for="nom">Adresse e-mail :</label>
            <input type="text" name="mail" id="mail"></p> 

            <p><label for="nom">Numéro de dossier :</label>
            <input type="text" name="dossier" id="dossier"></p> 

            <input type="submit" name="envoyer" value="Envoyer">

        </form>

Le formualire renvoie à la page verif.php qui s'occupe de concaténer le requêtes SQL en fonction des champs remplis:

$sql = 'SELECT

                    nom_membre  AS "Nom",
                    prenom_membre AS "Prénom",
                    ddn_membre AS "Date de naissance",
                    tel_membre AS "Téléphone",
                    mail_membre AS "E-mail",
                    resp_legal1 AS "resp 1",
                    resp_legal2 AS "resp 2",
                    CONCAT(adresse_membre, cp_membre, ville_membre)  AS "Adresse",
                    cours1_membre AS "Cours 1",
                    cours2_membre AS "Cours 2",
                    cours3_membre AS "Cours 3",
                    numero_dossier AS "Numéro de dossier"
            FROM infos_membres
            WHERE id_membre < 1999 ';

if(!empty($_POST['nom'])){
    $nom = $_POST['nom'];
         $sql .= '&nbsp;AND nom_membre LIKE "%'.$nom.'%"';

}

if(!empty($_POST['prenom'])){
    $prenom = $_POST['prenom'];
         $sql .= '&nbsp;AND prenom_membre LIKE "%'.$prenom.'%"';

}

if(!empty($_POST['ddn'])){
    $ddn = $_POST['ddn'];
         $sql .= '&nbsp;AND ddn_membre LIKE "%'.$ddn.'%"';

}

if(!empty($_POST['tel'])){
    $tel = $_POST['tel'];
         $sql .= '&nbsp;AND tel_membre LIKE "%'.$tel.'%"';

}

if(!empty($_POST['mail'])){
    $mail = $_POST['mail'];
         $sql .= '&nbsp;AND mail_membre LIKE "%'.$mail.'%"';

}

if(!empty($_POST['resp1'])){
    $resp1 = $_POST['resp1'];
         $sql .= '&nbsp;AND resp_legal1  LIKE "%'.$resp1.'%"';

}

if(!empty($_POST['resp2'])){
    $resp2 = $_POST['resp2'];
         $sql .= '&nbsp;AND resp_legal2  LIKE "%'.$resp2.'%"';

}

if(!empty($_POST['adresse'])){
    $adresse = $_POST['adresse'];
         $sql .= '&nbsp;AND CONCAT(adresse_membre, cp_membre, ville_membre) LIKE "%'.$adresse.'%"';

}

if(!empty($_POST['cours'])){
    $cours = $_POST['cours'];
         $sql .= '&nbsp;AND cours1_membre LIKE "%'.$cours.'%" OR cours2_membre LIKE "%'.$cours.'%" OR cours3_membre LIKE "%'.$cours.'%"';

}

if(!empty($_POST['dossier'])){
    $dossier = $_POST['dossier'];
         $sql .= '&nbsp;AND numero_dossier LIKE "%'.$dossier.'%"';

}

Mon problème est le suivant: quand j'envoie le formulaire sans aucune entrée, mon tableau des membres s'affiche (donc le problème ne vient pas de ma requête de base) mais si je rentre le nom par exemple, j'ai un erreur qui me dit que j'ai pas la bonne syntaxe:

SELECT nom_membre AS "Nom", prenom_membre AS "Prénom", ddn_membre AS "Date de naissance", tel_membre AS "Téléphone", mail_membre AS "E-mail", resp_legal1 AS "resp 1", resp_legal2 AS "resp 2", CONCAT(adresse_membre, cp_membre, ville_membre) AS "Adresse", cours1_membre AS "Cours 1", cours2_membre AS "Cours 2", cours3_membre AS "Cours 3", numero_dossier AS "Numéro de dossier" FROM infos_membres WHERE id_membre < 1999 AND nom_membre LIKE "%dupont%";

Pourtant je ne comprend pas, la syntaxe est bonne parce que si je fais un copié-collé de cette erreur et que je la met à la place de $sql, le tableau s'affiche bien avec les bons filtres ... C'est pour ça que je viens vers vous car je ne comprend vraiment pas pourquoi ça ne marche pas ... Peut-être qu'il est simplement pas possible de concaténer des requêtes sql ? si c'est le cas merci de me le dire :p

En tout cas j’espère que vous aurez une réponse à m'apporter car je suis vraiment désespéré :(

Je vous remercie d'avance d'avoir pris le temps de regarder mon post ! :D

4 réponses


bugland
Réponse acceptée

Essaye d'enlever les nbsp; et de mettre un espace à la place.

maagiix
Auteur

Ah ben oui c'était ça ^^'
Merci beaucoup de ta répons en tout cas !! :D

De rien :) Met le post en résolu. Bon courage

par contre rajoute htmlentities ou htmlspecialchars quand tu attribue t'est variable