IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] recherche multicritère [Débutant(e)]


Sujet :

PHP & Base de données

  1. #1
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut [SQL] recherche multicritère
    Bonjour,

    Je débute en php et cherche à réaliser un moteur de recherche à partir d'un formulaire à menu déroulant qui permette à la fois la recherche sur un seul critère ou sur plusieurs critères combinés si le checkbox
    "obligatoirement tout les critères" est activé.
    Pour ça j'ai adapté un script qui fonctionnait bien pour un formulaire par recherche en texte libre mais qui doit être adapté à un formulaire à menu déroulant
    Quelqu'un pourrait-il m'aider à adapter le script ci-dessous à mon formulaire à menu déroulant: si quelqu'un voit où ça coinçe?? Merci par avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $choix1 = $_POST['communes']; 
    $choix2 = $_POST['sites']; 
    $choix3 = $_POST['themes']; 
    $choix4 = $_POST['allcriteres']; 
     
    if ( $choix4 == "oui") 
     
    $operateur="AND"; 
    else 
    $operateur="OR"; 
    if ($choix1 != "") 
    $finrequete .= " Nom_commune LIKE '%$choix1%'"; 
    if ($choix2 != "") 
    if ($finrequete != "") 
    $finrequete .= " $operateur (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')"; 
    else 
    $finrequete .= " (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')"; 
    if ($choix3 != "") 
    if ($finrequete != "") 
    $finrequete .= " $operateur (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3%')"; 
    else 
    $finrequete .= " (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3')"; 
    if ($finrequete != "") 
    $sql="SELECT * FROM Cartes_postales WHERE $finrequete"; 
    else 
    $sql="SELECT * FROM Cartes_postales";

  2. #2
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    salut j'ai pas tré bien saisie c quoi ton probleme?

  3. #3
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut [Débutant]recherche multicritère
    J'avais d'abord fait un formulaire pour une recherche de cartes postales qui proposait 3 critères de recherche par commune, site et thème mais où les champs étaient en texte libre.
    Le script ci-dessous fonctionnait mais maintentant je voudrais l'adapter à un formulaire dont les choix de chacun des 3 critères dans le formulaire se trouvent dans 3 menus déroulant, et où chacun des critères peut être choisi soit séparement soit combiné avec les autres, (avec le checkbox allcriteres)du coup le script ci-dessous ne marche plus et j'arrive pas l'adapter, peut-être pourrais-tu me dire où ça cloche?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $choix1 = $_POST['communes'];
    $choix2 = $_POST['sites'];
    $choix3 = $_POST['themes'];
    $choix4 = $_POST['allcriteres']; 
     
    if ( $choix4 == "oui")
     
    $operateur="AND";
    else
    $operateur="OR";
    if ($choix1 != "")
    $finrequete .= " Nom_commune LIKE '%$choix1%'";
    if ($choix2 != "")
    if ($finrequete != "")
    $finrequete .= " $operateur (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
    else
    $finrequete .= " (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
    if ($choix3 != "")
    if ($finrequete != "")
    $finrequete .= " $operateur (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3%')";
    else
    $finrequete .= " (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3')";
    if ($finrequete != "")
    $sql="SELECT * FROM Cartes_postales WHERE $finrequete";
    else
    $sql="SELECT * FROM Cartes_postales";

  4. #4
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    je suis désolé je vai etre chiant mais c koi l'erreur?

  5. #5
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut [débutant]recherche multicritères
    ça me dit:
    Notice: Undefined index: allcriteres in E:\Sites\gestion\archives\testbdd-archives\reponse_cartes_postales_multi.php on line 39

    Notice: Undefined variable: finrequete in E:\Sites\gestion\archives\testbdd-archives\reponse_cartes_postales_multi.php on line 47

  6. #6
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    tu di que ce script fonctionnait le probleme vien d'ailleur, mais ta requète et un peu bizzard je ne connai pas se formalisme (du moin a certain endroi)

  7. #7
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    montre ton code de la page sur lesquelles il y a tes menu deroulant, a priori sa vien d'ailleur

  8. #8
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut
    La ligne 47 correpond à
    $finrequete .= " Nom_commune LIKE '%$choix1%'";
    Pour ça en enlevant le point après $finrequete ça marche

    mais le problème semble venir de la variable allcritères du checkbox

    Au cas où voilà mon formulaire de recherche:
    <html>
    <p>Recherche par commune </font>: <form action="reponse_cartes_postales_multi.php" method="POST" name="" id="">
    <select name="communes" id="communes"> <option value="Albere">Albere (L')</option>
    <option value="Alenya">Alenya</option> <option value="Amélie les Bains">Am&eacute;lie-les-Bains</option> <option value="Prats-de-Mollo">Prats de Mollo</option> </select> </p>

    <p>Recherche par sites naturels et édifices</font>:
    <select name="sites" id="sites">
    <option value="Eglise (Albère)">Eglise (Albère)</option>
    <option value="Fontaine (Albère)">Fontaine (Albère)</option>
    </select></p>

    <p>Recherche par thème </font>: <select name="themes" id="themes">
    <option value="Bois">Bois</option> <option value="Calvaire">Calvaire</option>
    <option value="Cheval">Cheval</option>
    <option value="Côte">C&ocirc;te</option> </select> </p>

    <p><input name="valider" type="submit" value="valider"> <input name="effacer" type="reset" value="effacer">
    </p>
    <p><input type="checkbox" name="allcriteres" value="oui">Obligatoirement tous les critères</p>


    </p>
    </form>

    </html>

  9. #9
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut [débutant]recherche multicritères
    Ce scrit fonctionnait quand le formulaire ne proposait pas les choix dans 3 menus déroulant mais en texte libre.

  10. #10
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Pour le $finrequete commence par l'initialiser à "" avant de construire la chaîne.
    Et pour le allcriteres je pense qu'il faut tester son existence avec un isset car je ne sais pas si sa valeur est transmise si la case est décochée.

  11. #11
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    quan tu ne coche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" name="allcriteres" value="oui">
    sa marche pas et sa te met se message d'erreur tu a 2 solution :
    soit tu met boutton radio, oui, non

    soi dans ta page qui recoi les information tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (issest($_POST['allcriteres']))
                //tu peut faire le traitement
    j'avai le meme probleme c a toi de choissir!!!
    mais je me trompe peu etre, je suis un debutant moi aussi

  12. #12
    Membre actif Avatar de funckfot
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 221
    Points : 211
    Points
    211
    Par défaut
    mais comme je suis debutant aussi je voudrai savoir a quoi sert le point avnt le = dans un ligne de code comme sa
    merci

  13. #13
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut
    Merci, je vais essayer

  14. #14
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut
    Pour le point j'avoue ne pas trop savoir à quoi ça peut servir j'expérimente un peu sur le tas : parfois ça marche si je l'enlève....

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par funckfot
    mais comme je suis debutant aussi je voudrai savoir a quoi sert le point avnt le = dans un ligne de code comme sa
    merci
    <=>

  16. #16
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut [débtant]recherche multicritères
    Pour le isset ça me dit
    Fatal error: Call to undefined function: issest() in E:\Sites\gestion\archives\testbdd-archives\scriptrecherche.php on line 41

    mon code de reponse est le suivant:

    $choix1 = $_POST['communes'];

    $choix2 = $_POST['sites'];
    $choix3 = $_POST['themes'];


    if (issest($_POST['allcriteres']))


    $operateur="AND";
    else
    $operateur="OR";
    if ($choix1 !=[""])
    $finrequete = " Nom_commune LIKE '%$choix1%'";
    if ($choix2 !=[""])
    if ($finrequete != "")
    $finrequete .= " $operateur (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
    else
    $finrequete .= " (Site1 LIKE '%$choix2%' OR Site2 LIKE '%$choix2%')";
    if ($choix3 != "")
    if ($finrequete != "")
    $finrequete .= " $operateur (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3%')";
    else
    $finrequete .= " (Theme1 LIKE '%$choix3%' OR Theme2 LIKE '%$choix3')";
    if ($finrequete != "")
    $sql="SELECT * FROM Cartes_postales WHERE $finrequete";
    else
    $sql="SELECT * FROM Cartes_postales";

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 26
    Points
    26
    Par défaut
    isset et pas issest

  18. #18
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut [débutant]recherche multicritères
    oui merci ça marche

  19. #19
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut [débutant] recherche multicriteres
    Par contre du coup il me vient un autre problème c'est que dans le formulaire à 3 critères et à menu déroulant dans les choix des menu déroulant y jamais le choix aucun(e) (pour la cherche sur 3 critères par commune, par site, par thème)
    Donc si on veut isoler les critères un à un , peut-être faut-il mettre un checkbox devant chaque critère?

  20. #20
    nal
    nal est déconnecté
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 129
    Points : 56
    Points
    56
    Par défaut
    En fait j'ai juste mis dans le formulaire des option vide du genre <option>Aucune</option> et ça a l'air de marcher

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Recherche multicritère avec C# & Sql server 2k5
    Par Invité dans le forum Accès aux données
    Réponses: 3
    Dernier message: 27/05/2008, 00h50
  2. [SQL] recherche multicritère SQL et checkbox
    Par berti dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/03/2008, 18h34
  3. Réponses: 13
    Dernier message: 22/05/2007, 10h44
  4. [SQL] Recherche multicritères
    Par denn dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/05/2006, 18h42
  5. [SQL] Recherche multicritères genération de la requête
    Par primus dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/02/2006, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo