Comment éviter la répétition de variable?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par tryan, 4 Février 2009.

  1. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Supposons :
    Code:
    if ($variable1 == AA){
    echo 'aa';
    }
    if ($variable1 == SS){
    echo 'ss ';
    }
    if ($variable1 == ZZ){
    echo 'zz';
    }
    if ($variable1 == DD){
    echo 'dd';
    }
    
    ..répété X fois dans une page .

    Y a t'il moyen de faire autrement pour éviter la répétition et donc alléger le code?
    Si oui, comment ?
    Merci
     
  2. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    avec un tableau sans aucun doute.

    au hasard : -http://www.vulgarisation-informatique.com/tableaux-php.php
     
  3. OTP
    OTP WRInaute accro
    Inscrit:
    16 Décembre 2005
    Messages:
    14 581
    J'aime reçus:
    3
    Case ou un truc dans le genre ?
     
  4. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    oki, merci .
    Je pensais plutôt à une fonction mis à part dans un autre fichier:
    Code:
    <?php
    $teste = "AA";
    
    function Remplacetout($chaine)
    { 
        $grand = Array("/AA/", "/ZZ/", "/EE/");
        $petit = Array("aa", "zz", "ee");
        
        $chaine = preg_replace($grand, $petit, $chaine);  
        
        return $chaine;
    }
    
    echo Remplacetout($teste);
    //retourne aa
    
    ?>
    
    Sa vous semble correcte et plus rapide?
     
  5. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 975
    J'aime reçus:
    121
    +1 OTP. Le

    Code:
    switch 
    {
        case 'AA':
        break;
        case 'BB':
        break;
        default:
        break;
    }
    est ton ami.
     
  6. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Chiote, je n'en comprend pas le fonctionnement ^^.

    Je ne capte pas comment ton code remplace "AA" en "aa" partant du principe que $teste = "AA"; :?:

    Une petite explication please.
     
  7. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 975
    J'aime reçus:
    121
    Je viens de VRAIMENT comprendre ce que tu cherches à faire (je crois). Ton idée est la bonne dans ce cas. preg_replace en utilisant des tableaux pour définir les éléments recherchés et les éléments par lesquels ils doivent être remplacés.
     
  8. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    En gros, je récupère mes données en bdd qui sont enregistrées sous la forme "Camping_car", "Mobil_home",etc...

    Pour le moment je fais un truc du style:
    Si ma variable = Camping_car alors j'affiche "Loue Camping car"
    Si ma variable = Mobil_home alors j'affiche "Loue Mobil home"

    Donc à la finale je me retrouve avec beaucoup de if() parfois répété plusieurs fois. Moi je veux écrire le code ou fonction faisant appel à cette série de if() une seule fois pour pouvoir ensuite appelé plus facilement et plus rapidement ce même code 8O (pas simple à expliqué ^^).

    Ps: Je crois avoir comprit ton code:
    Code:
    <?php
    $teste = "AA";
    
    switch ($teste) {
        case AA:
            echo "teste égal aa";
            break;
        case ZZ:
            echo "teste égal zz";
            break;
        case EE:
            echo "teste égal ee";
            break;
    }
    ?>
    
     
  9. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 735
    J'aime reçus:
    177
    La solution pour ton système c'est

    $affiche = array ("aa" => "affiche aa", "bb" => "affiche bb") ;

    echo $affiche[lavariable]

    Ou si tu en as beaucoup tu fais une petite requete dans ta base, genre select ID, affiche que tu stockes dans une variable tableau
     
  10. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    Dans ce cas tu peux (aussi peut-être) ajouter un champ "variable_a_afficher" par exemple, voir une table style "variable","variable_a_afficher"

    ça te permettrait d'en ajouter d'autres sans devoir revenir dans le code à chaque fois
     
  11. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 735
    J'aime reçus:
    177
    Sinon il y a un truc qui fait ça tout seul et très bien, c'est gettext :)
     
  12. dadovb
    dadovb WRInaute passionné
    Inscrit:
    22 Novembre 2005
    Messages:
    1 653
    J'aime reçus:
    0
    Tu peux pas juste faire :
    Code:
    echo "Loue ".str_replace("_"," ",$variable);
    
    :?:
     
  13. moktoipas
    moktoipas WRInaute passionné
    Inscrit:
    29 Juin 2004
    Messages:
    1 495
    J'aime reçus:
    0
    Code:
    $bdd[]="Camping_car"; $html[]="Loue Camping car";
    $bdd[]="Mobil_home"; $html[]="Loue Mobil home";
    
    echo str_replace($bdd,$html,$variable);
    
    
    ?
     
  14. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Arfff, du coup je ne sais plus quelle code adapter ^^.
    Une fonction (debut de poste par moi), switch (proposé par OTP) ou array (proposé par Marie-Aude) .. :?:
     
  15. moktoipas
    moktoipas WRInaute passionné
    Inscrit:
    29 Juin 2004
    Messages:
    1 495
    J'aime reçus:
    0
    Et ma solution, elle pue? :D

    LOL

    mais tu peu mettre dans une fonction toutes les solutions proposées...
     
  16. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 024
    J'aime reçus:
    1
    c'est le plus simple et le moins gourmand.
     
  17. moktoipas
    moktoipas WRInaute passionné
    Inscrit:
    29 Juin 2004
    Messages:
    1 495
    J'aime reçus:
    0
    Mais peu évolutif si il a d'autre variable qu'il doit nommer differement.
     
  18. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 024
    J'aime reçus:
    1
    Mouais ... le côté évolutif du code c'est pas trop le problème, un coup de FTP et c'est réglé en revanche des expressions régulières ou des dizaine de conditionnelles ça fait vite évoluer le serveur vers ses limites.

    en fait l'énoncé est pas forcement très clair (pour moi) faudrait plus de détails.

    ps : moktoipas ton filtre anti spam sur les commentaires de ton blog est il tjs aussi violent ?
     
  19. moktoipas
    moktoipas WRInaute passionné
    Inscrit:
    29 Juin 2004
    Messages:
    1 495
    J'aime reçus:
    0
    Non j'ai corrigé le filtre, j'avais fait une erreur et tout les message qui contenaient "tit" (meme dans "petit") étaient jetés par accident :p
     
  20. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    Mheuuu non :D , je cherche juste la plus simple à mon gout ^^.

    Pour :
    Code:
    echo "Loue ".str_replace("_"," ",$variable);
    $variable commence par une majuscule et peut comporter un (_) ou pas.
    Moi je la ressort tout en minuscule.

    J'ai opté pour un array:
    Code:
    $teste = array (
    "AA" => "blabla aa", 
    "ZZ" => "blabla zz", 
    "EE" => "blabla ee "
    ) ; 
    ..mais je me retrouve confronté à un soucis .. on ne peut pas mettre de variable dans un array !?
    Genre:
    Code:
    ...
    "AA" => "blabla '.Optimise($mavariable).'", 
    ...
    
    zeb :
    En gros pour mieux t'expliquer, sa fait un truc du genre:
    Code:
    <title><?php
    if ($variable1 == AA){
    echo 'aa';
    }
    if ($variable1 == SS){
    echo 'ss ';
    }
    if ($variable1 == ZZ){
    echo 'zz';
    }
    if ($variable1 == DD){
    echo 'dd';
    }
    ?></title>
    
    <meta name="description" lang="fr" content=" blabla <?php
    if ($variable1 == AA){
    echo 'aa';
    }
    if ($variable1 == SS){
    echo 'ss ';
    }
    if ($variable1 == ZZ){
    echo 'zz';
    }
    if ($variable1 == DD){
    echo 'dd';
    }
    ?>" />
    ...
    etc
    
    La je répète 2 fois le même code ... et ce que j'aimerais éviter.
     
  21. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 024
    J'aime reçus:
    1
    Code:
    echo "Loue ".strtolower(str_replace("_"," ",$variable));
    en résumé.

    PS moktoipas -> passé le mauvais jours alors (ça date un peu)
     
  22. tryan
    tryan WRInaute passionné
    Inscrit:
    20 Février 2005
    Messages:
    2 229
    J'aime reçus:
    0
    sauf que $variable peut également contenir (é,è,ê,',ô)etc.. et que la partie ( echo "Loue ".) varie en fonction du type de loc.
     
  23. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    il reste la solution de la table :)
     
  24. Marie-Aude
    Marie-Aude WRInaute accro
    Inscrit:
    5 Juin 2006
    Messages:
    16 735
    J'aime reçus:
    177
    Mais si on peut, mais il faut quoter correctement

    "AA" => "blabla ".Optimise($mavariable),
     
  25. screuscreu
    screuscreu WRInaute impliqué
    Inscrit:
    14 Janvier 2008
    Messages:
    687
    J'aime reçus:
    0
    Qui je pense est la meilleure solution, même d'un point de vue rapidité. Rajouter une colonne avec ce qu'il faut vraiment afficher me semble "simple" et facile à mettre en place
     
Chargement...
Similar Threads - éviter répétition variable Forum Date
Comment éviter une repetition de mots clés inévitable ? Problèmes de référencement spécifiques à vos sites 26 Mai 2008
faut-il activer les URL image ou éviter pour économiser le crawl Référencement Google 21 Juin 2021
Comment éviter les no-cors sur une PWA ? Développement d'un site Web ou d'une appli mobile 8 Mai 2021
Comment éviter un piège à bots avec un crawler ? Crawl et indexation Google, sitemaps 3 Décembre 2020
Les très grosses erreurs à éviter en référencement Débuter en référencement 1 Décembre 2020
Obfuscation de lien pour éviter de disperser le jus ? Netlinking, backlinks, liens et redirections 25 Mai 2020
Comment est ce que vous éviter l'adsense limit? AdSense 7 Mai 2020
WordPress Cloner mon site, les erreurs à éviter Développement d'un site Web ou d'une appli mobile 3 Mars 2020
Erreur 404 perso : comment éviter qu'elle soit indexée ? Administration d'un site Web 1 Décembre 2019
Un contenu serait publié deux endroits/URLs différents, comment éviter le duplicated content ? Référencement Google 2 Octobre 2019
Résolu Souci de redirection censées éviter contenu dupliqué Débuter en référencement 31 Juillet 2019
WordPress Peut-on éviter les redirections 301 multiples ? URL Rewriting et .htaccess 20 Mai 2019
Comment éviter le duplicate content entre 2 sites ? Référencement Google 2 Avril 2019
Actualités courtes : éviter la mauvaise note SEO Débuter en référencement 18 Février 2019
Google semble éviter l'accueil mais pas les pages internes Crawl et indexation Google, sitemaps 18 Février 2019
[Prestashop] Comment éviter duplicate sur marketplaces ? e-commerce 16 Juillet 2018
10 erreurs à éviter avant l’arrivée du Mobile-First Index de Google Crawl et indexation Google, sitemaps 19 Janvier 2018
Google va se plier aux exigences de l'Europe pour éviter d'autres amendes Google : l'entreprise, les sites web, les services 30 Août 2017
Eviter l'indexation de site mobile en sous domaine sur Google Desktop Crawl et indexation Google, sitemaps 6 Juillet 2017
Faut-il éviter la Redirection 301 sur son site ? Référencement Google 9 Mai 2017