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 :

Répétition abusif de test " if " [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 80
    Par défaut Répétition abusif de test " if "
    BOnjour, voilà j'ai un code qui est très répétitif et qui s'avère long quand j'ai beaucoup de cas différents , quelqu'un pourrait il me dire comment l'optimiser svp
    Voici le 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
    26
    27
    28
    29
    30
    31
    32
    if($l==1){
    		echo"accueil";
    		$query='SELECT nom_zone, id_rubrique_zone
    				FROM zone
    				INNER JOIN rubrique_zone
    				ON zone.id = rubrique_zone.id_zone
    				WHERE rubrique_zone.id_rubrique = '.$l.'';
    	}
      else if($l==2){
    		echo 'actu';
    		$query='SELECT nom_zone, id_rubrique_zone
    				FROM zone
    				INNER JOIN rubrique_zone
    				ON zone.id = rubrique_zone.id_zone
    				WHERE rubrique_zone.id_rubrique = '.$l.'';
    	}
      else if($l==3){
    		echo 'actu';
    		$query='SELECT nom_zone 
    				FROM zone
    				INNER JOIN rubrique_zone
    				ON zone.id = rubrique_zone.id_zone
    				WHERE rubrique_zone.id_rubrique = '.$l.'';
    	}
      else if($l==4){
    		echo 'sport';
    		$query='SELECT nom_zone 
    				FROM zone
    				INNER JOIN rubrique_zone
    				ON zone.id = rubrique_zone.id_zone
    				WHERE rubrique_zone.id_rubrique ='.$l.'';
    	}

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pas besoin de répéter la requete c'est la même, met la après la condition

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    factoriser tout ça n'est pas très compliqué quand même, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $rubriques = array(1 => 'accueil', 'actu', 'actu', 'sport');
    echo $rubriques[$l];
    $query='SELECT nom_zone 
                FROM zone
                INNER JOIN rubrique_zone
                ON zone.id = rubrique_zone.id_zone
                WHERE rubrique_zone.id_rubrique ='.$l;
    ?>

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Et pour le cas où tu aurais réellement besoin d'une structure type if ($n==1){} elseif ($n==2){} elseif ($n==3){}..., tu as le switch qui est prévu pour
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2009
    Messages : 53
    Par défaut
    raswrc pour la factorisation sur un code basique comme celui là ça passe mais si ce qu'il voulais faire était vraiment à base de if avec des traitements complexes autres que echo un switch serait meilleur.
    Une solution serait:
    <?php
    function r($p1, $p2){
    return "MA REQUETE AVEC PARAMETRE $p1, $p2";
    }
    switch($v){
    case : --- $req = r(...)
    }
    ?>

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2011
    Messages : 80
    Par défaut
    merci pour vos réponse j'avais aussi penser au switch mais il s'avère que j'ai une soixantaine de cas à traiter et c'était toujours aussi long qu'avec plein de "if" mais j'avais pas penser au tableau donc merci à rawsrc

+ Répondre à la discussion
Cette discussion est résolue.

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