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 :

Limiter les conditions


Sujet :

PHP & Base de données

  1. #21
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 82
    Par défaut
    code1, zone1, et le checkbox ($values)

    la table contient une colonne code, zone, defaut (voir la requète)

  2. #22
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Je ne vois pas comment tu pourrais avoir beaucoup plus de 3 if avec 3 champs à vérifier. Déjà ce que je t'ai donné plus haut raccourci pas mal ton script.
    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
    $sql = 'SELECT ... FROM ... WHERE 1 = 1 ' ;
     
    if ( critère saisi sur 1er champ ) {
        $sql .= ' AND champ1 = "(filtre)"' ;
    }
     
    if ( critère saisi sur 2e champ ) {
        $sql .= ' AND champ2 = "(filtre)"' ;
    }
     
    if ( ! empty($_POST['checkbox']) ) { // Critère sur 3e champ
        $defauts = implode('\', \'', $_POST['checkbox']) ;
        $sql .= " AND defaut IN('$defauts')" ;
    }
     
    echo $sql ;

  3. #23
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 82
    Par défaut
    merci pour l'astuce des checkbox

    pour les if j'aurai bien 9 et pas 3
    1  1  1
    1  1  0
    1  0  1
    0  1  1
    1  0  0
    0  1  0
    0  0  1
    0  0  0

  4. #24
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Pourquoi ? Quelles requêtes veux-tu obtenir au final ?

  5. #25
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 82
    Par défaut
    une requète pour chaque if

    exmple 1

    code : 12457
    Zone : décor
    defaut : " "

    la requète est
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM afficher,doc WHERE  afficher.idqrqc = doc.idqrqc and  code='$code1' and zone='$zone1' and titre LIKE '%$mot%' UNION ";

    exmple 2

    code : " "
    Zone : décor
    defaut : " manques, empâtés"

    la requète est
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM afficher,doc WHERE  afficher.idqrqc = doc.idqrqc  and zone='$zone1'  $sql_types and titre LIKE '%$mot%' UNION ";

    exmple 3

    code : " "
    Zone : " "
    defaut : " manques, empâtés"

    la requète est
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM afficher,doc WHERE  afficher.idqrqc = doc.idqrqc  and  $sql_types and titre LIKE '%$mot%' UNION ";

    etc

    si je fais pas sa, il va comparer le vide et il me renvoi rien

  6. #26
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    une requète pour chaque if
    Non. Tu as une requête de base à laquelle tu rajoutes des filtres dans le WHERE, comme montré plus haut.
    Au final 1 seule requête construite dynamiquement selon les saisies.

    PS : les jointures sont opérées avec INNER JOIN et pas dans le WHERE ( http://dev.mysql.com/doc/refman/5.0/fr/join.html ).

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/09/2005, 10h53
  2. Composant pour limiter les décimales à deux
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 20/08/2005, 12h00
  3. Limiter les déplacement de la souris a la fenetre
    Par Mathieu.J dans le forum OpenGL
    Réponses: 22
    Dernier message: 11/06/2004, 12h55
  4. Limiter les 30dernière liste de données?
    Par SkyDev dans le forum Langage SQL
    Réponses: 11
    Dernier message: 08/03/2004, 17h01
  5. Comment limiter les mouvements du curseur??
    Par scorpiwolf dans le forum C++Builder
    Réponses: 9
    Dernier message: 07/07/2002, 22h09

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