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

Langage PHP Discussion :

Recherche multicritères PDO


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webdesigner
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut Recherche multicritères PDO
    Bonjour,

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    if($lieu == 'no' AND $nomroche == 'no' AND $cartegeologique == 'no' AND $natureroche == 'no')
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges');
        $result->execute();
    }
     
    elseif($nomroche=="no")
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges where lieu = :lieu
        AND cartegeologique = :cartegeologique AND natureroche = :natureroche
        OR (cartegeologique = :cartegeologique AND natureroche = :natureroche)');
        $result->execute(array(':lieu'=>$lieu, ':cartegeologique'=>$cartegeologique, ':natureroche'=>$natureroche));
    }
     
    elseif($lieu=="no")
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges where cartegeologique = :cartegeologique
        AND nomroche = :nomroche AND natureroche = :natureroche
        OR (nomroche = :nomroche AND natureroche = :natureroche)');
        $result->execute(array(':nomroche'=>$nomroche, ':cartegeologique'=>$cartegeologique, ':natureroche'=>$natureroche));
    }
     
    elseif($cartegeologique=="no")
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges where natureroche = :natureroche
        AND lieu = :lieu AND nomroche = :nomroche
        OR (lieu = :lieu AND nomroche = :nomroche)');
        $result->execute(array(':nomroche'=>$nomroche, ':lieu'=>$lieu, ':natureroche'=>$natureroche));
    }
     
    elseif($natureroche=="no")
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges where nomroche = :nomroche
        AND lieu = :lieu AND cartegeologique = :cartegeologique
        OR (lieu = :lieu AND cartegeologique = :cartegeologique)');
        $result->execute(array(':nomroche'=>$nomroche, ':lieu'=>$lieu, ':cartegeologique'=>$cartegeologique));
    }
     
    else
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges where lieu = :lieu and nomroche = :nomroche and cartegeologique = :cartegeologique and natureroche = :natureroche');
        $result->execute(array(':lieu' => $lieu, ':nomroche' => $nomroche, ':cartegeologique' => $cartegeologique, ':natureroche' => $natureroche));
    }
    Ma requête fonctionne uniquement lorsque 3 champs (sur 4 au total) possèdent une valeur, mais dans le cas ou 3 champs possèdent une valeur il me donne toute les données correspondantes présente dans la table.

    Mais ce n'est pas ce que je veux, il me faudrait une requête croisée me permettant de faire des recherches sur 1, 2, 3 ou 4 champs tout en m'affichant la totalité de ma table si je ne remplis aucun champ.

    Merci à tous !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    tu peux t'inspirer de la méthode que j'ai exposée dans cette discussion.

  3. #3
    Membre averti
    Homme Profil pro
    Webdesigner
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut
    J'ai bien utilisé ta méthode mais mon problème est le même.

    Quand je veux faire une recherche sur un seul champ je n'ai aucun résultat

    Merci de vos réponses

  4. #4
    Invité
    Invité(e)
    Par défaut
    On veut bien te répondre, mais le minimum est que tu postes ton code.

  5. #5
    Membre averti
    Homme Profil pro
    Webdesigner
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut
    Voila mon code

    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
    if($lieu == 'no' AND $nomroche == 'no' AND $cartegeologique == 'no' AND $natureroche == 'no')
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges');
        $result->execute();
    }
    elseif($nomroche == 'no')
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges WHERE lieu = :lieu OR natureroche = :natureroche OR cartegeologique = :cartegeologique');
        $result->execute(array(':lieu' => $lieu, ':cartegeologique' => $cartegeologique, ':natureroche' => $natureroche));
    }
    elseif($lieu == 'no')
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges WHERE nomroche = :nomroche');
        $result->execute(array(':nomroche' => $nomroche));
    }
    elseif($lieu == 'no')
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges WHERE nomroche = :nomroche AND natureroche = :natureroche AND cartegeologique = :cartegeologique');
        $result->execute(array(':natureroche' => $natureroche, ':cartegeologique' => $cartegeologique, ':nomroche' => $nomroche));
    }
    else
    {
        $result = $bdd->prepare('SELECT * FROM rochesvosges WHERE nomroche = :nomroche AND lieu = :lieu AND cartegeologique = :cartegeologique');
        $result->execute(array(':lieu' => $lieu, ':cartegeologique' => $cartegeologique, ':nomroche' => $nomroche));
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    Tu n'as pas appliqué ma méthode.
    Ni rien changé depuis ton 1er message/code...

Discussions similaires

  1. Problème résultat dans recherche multicritères
    Par MAMANHOU dans le forum IHM
    Réponses: 36
    Dernier message: 12/06/2010, 20h14
  2. Probléme recherche multicritére
    Par chahinaz21 dans le forum VB.NET
    Réponses: 1
    Dernier message: 31/01/2010, 21h48
  3. Réponses: 2
    Dernier message: 03/07/2008, 12h36
  4. Problème de recherche multicritère
    Par darkann dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 11/07/2007, 20h02
  5. problème recherche multicritère
    Par emma07 dans le forum Access
    Réponses: 1
    Dernier message: 15/09/2006, 17h55

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