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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Limiter les conditions
    Bonjour,

    Je souhaite savoir si il y a une façon pour éviter de saturer le code avec les if.

    Voici un exemple :

    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
    if((!($code1 == NULL)) and (!($zone1 == NULL)) and(!($values == NULL)) )
    {
     
     
     foreach($mots as $mot)
            {
    $sql.="SELECT * FROM afficher,doc WHERE  afficher.idqrqc = doc.idqrqc and  code='$code1' and zone='$zone1'  $sql_types and titre LIKE '%$mot%' UNION ";
     }
     
    $sql=substr($sql,0,-6);
     
     
    $req = mysql_query($sql, $cnx) 
     		   or 
     		  die("Pb dans la requête : " . mysql_error($cnx));
     
     }
    Evidement c'est pour un formulaire de recherche par critère.

    Si je met pas de conditions, quand la personne ne rempli pas un champ, il y aura aucun résultat qui s'affiche parce que il compare (je pense) avec le vide.

    Merci à vous

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    'Saturer le code avec des if', Je ne vois pas en quoi c'est un problème. Les conditions, comme les boucles, si elles sont utiles, sont l'alpha et l'omega de la programmation !

    Par contre une remarque, moi, pour rendre les choses pratiques et lisibles, je code ainsi cette problématique classique des développements PHP, imaginons qu'aucun champ ne doive rester vierge :
    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
     
    if(isset($_POST){
       $complet=true;
       foreach($_POST as $input){
          if($input==NULL || $input==''){//toujours penser au champ saisi puis effacé
             $complet=false;
          }
       }
       if($complet){
          //je traite
       }
       else{
          //je bloque et je retourne un message en rouge.
       }
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    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
    Oui, mais je n'arrive pas trop à gérer tout ça !

    C'est un formulaire de recherche et je veux rien imposer. Genre dans le cas ou la personne ne coche rien, le résultat est : toutes les données de la BD. etc

    Le problème est que j'ai plusieurs champ et donc si je continue avec cette méthode, pour chaque nouveau champ il faut ajouter d'autres conditions

    nbre de requète = X puissance 2 (X est le nombre de champ)

    je sais pas si c'est claire ou pas

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je t'ai déjà indiqué d'utiliser des AND/OR plutôt que de faire des UNION.
    Ca te ferra une seule requête quelque que soit le nombre de critère.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    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
    La je parle d'autre chose !
    Union concerne la recherche par mot clé


    je parle de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((!($code1 == NULL)) and (!($zone1 == NULL)) and(!($values == NULL)) )

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    En quoi ce if augmente le nombre de requête ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    @Dendrite

    Quelques remarques :

    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
    if(isset($_POST){ // isset inadapté car $_POST toujours définie
       $complet=true;
       foreach($_POST as $input){
          // $input ne vaudra jamais NULL : chaîne de caractère vide ou renseignée
          if($input==NULL || $input==''){//toujours penser au champ saisi puis effacé
             $complet=false;
          }
       }
       if($complet){
          //je traite
       }
       else{
          //je bloque et je retourne un message en rouge.
       }
    }
    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if( ! empty($_POST) ){ // Form soumis ?
       $complet=true;
       foreach($_POST as $input){
          if($input==''){
             $complet=false;
          }
       }
       if($complet){
          //je traite
       } else{
          //je bloque et je retourne un message en rouge.
       }
    }

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Le problème est que j'ai plusieurs champ et donc si je continue avec cette méthode, pour chaque nouveau champ il faut ajouter d'autres conditions

    nbre de requète = X puissance 2 (X est le nombre de champ)
    Un nombre de critères plus élevés ne devrait pas faire augmenter le nombre de requêtes.
    Le nombre de requêtes doit rester ~le même : ~1.

    Donne-nous ton schéma de base de données, un exemple de formulaire et stp présente/indente ton code correctement.

  9. #9
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Merci Seb, c'est noté.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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