Comment simplifier ce code (question de débutant)?

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 14:34

Ok, je sais je suis vraiment une nouille mais si j'ai bien compris, cela donnerait qqch comme ça :

switch($l) 
{ 
case 'fr': 
    switch($sport) 
     { 
        case 1: 
                switch($sexe) 
                 { 
                   case 1: 
                    include_once('sponsors/fr/articles-de-foot-hommes.php'); //include 
                    break; 
                    case 2: 
                    include_once('sponsors/fr/articles-de-foot-femmes.php'); //include 
                    break; 
                  } 
         break; 
        case 2: 
        include_once('sponsors/fr/articles-de-basket-hommes.php'); //code switch 
         break: 
        case 3: 
        include_once('sponsors/fr/articles-de-basket-femmes.php'); //code switch 
         break; 
break; 

case 'de': 
//code 
break; 

etc..... 

} 
Exact?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 juin 2005, 14:37

heu oui je pense...

mais pourquoi testes tu la langue ?
puisque la valeur de ta variable est la même que celle utilisée dans l'url, donc pourquoi ne pas inclure (au moins celle-là) directement ?

Eléphant du PHP | 128 Messages

15 juin 2005, 14:43

Oui ca ma l'air correct...

En revanche je pense pas que tu puisse faire qq chose comme : case 'fr' || 'default' || ''.

Sinon tu peux utiliser l'option default dans la structure switch

A la fin de tes case :

....
case 'de' :
....
break;

default :
....
break;
}//fin du switch

Le code effectué dans default sera executé si aucune des valeurs precedentes n'a ete trouvée
C'est pas moi qui ai volé l'orange !

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 14:44

En fait il y a qqch de spécial avec la variable fr... elle peut aussi avoir la valeur de "default" ou de " ".

par exemple:

page.php?l=fr
page.php?l=default
page.php?l=

donneront tous la même page (donc en français)

:oops:

Ce que j'aurais aimé, c'est de pouvoir mettre (traduit en français)
au cas ou (case) = fr ou default ou ... alors afficher...


en fait la même chose que

if($l=="fr" || $l=="default" || $l=="") mais avec le case

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 14:46

Oui ca ma l'air correct...

En revanche je pense pas que tu puisse faire qq chose comme : case 'fr' || 'default' || ''.

Sinon tu peux utiliser l'option default dans la structure switch

A la fin de tes case :

....
case 'de' :
....
break;

default :
....
break;
}//fin du switch

Le code effectué dans default sera executé si aucune des valeurs precedentes n'a ete trouvée
Ah mais oui, biensur!

Je mets ma langue fr dans le dafault!

Un immense merci à vous deux... je teste tout ça et vous tiens au courant! Merci, vraiment! :o

Eléphant du PHP | 128 Messages

15 juin 2005, 14:47

Ben ce que je t'explique avec default c'est que tu peux contourner le probleme : En gros si la langue n'est ni 'en', ni 'de', ni 'po' -> ben alors tu affiche ta page par default a savoir en francais :).
C'est pas moi qui ai volé l'orange !

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 14:50

OUi oui, j'ai bien compris :D

Je vous tiens au courant et vous copierai mon code complet avec les VRAIES valeurs de variable (beaucoup plus croustillantes puisque mon site est en fait un site de rencontres pour adulte :shock: )

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 juin 2005, 14:53

j'ai hâte de voir ça... :P

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 17:12

Voilà!

Après m'être débattu quelque peu avec le code, tout fonctionne!
<?

switch($l)
{
case 'de': // PROFIL AFFICHE EN ALLEMAND
    switch($i['gender'])
     {
        case 1: // HOMME
                switch($i['purposes'])
                 {
                   case 1: // Hétéro
                    include_once('sponsors/view/de_heteros.php');
                    break;
                   case 2: // Homosexuel
                    include_once('sponsors/view/de_gays.php');
                    break;
                   case 3: // Bisexuel
                    include_once('sponsors/view/de_gays.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/de_gays.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/de_gays.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/de_gays.php');
                    break;
                  }
         break;
        case 2: // FEMME
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuelle
                    include_once('sponsors/view/de_heteros.php');
                    break;
                   case 2: // Homosexuelle
                    include_once('sponsors/view/de_lesbiennes.php');
                    break;
                   case 3: // Bisexuelle
                    include_once('sponsors/view/de_lesbiennes.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/de_heteros.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/de_heteros.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/de_heteros.php');
                    break;
                  }
         break;
        case 3: // TRANSSEXUEL
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuel
                    include_once('sponsors/view/de_trans.php');
                    break;
                   case 2: // Homosexuel
                    include_once('sponsors/view/de_trans.php');
                    break;
                   case 3: // Bisexuel
                    include_once('sponsors/view/de_trans.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/de_trans.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/de_trans.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/de_trans.php');
                    break;
                  }
         break;
        case 4: // COUPLE
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuels
                    include_once('sponsors/view/de_couples.php');
                    break;
                   case 2: // Homosexuels
                    include_once('sponsors/view/de_gays_lesbiennes.php');
                    break;
                   case 3: // Bisexuels
                    include_once('sponsors/view/de_couples.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/de_couples.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/de_couples.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/de_couples.php');
                    break;
                  }
         break;
     }
break;

case 'en': // PROFIL AFFICHE EN ANGLAIS
    switch($i['gender'])
     {
        case 1: // HOMME
                switch($i['purposes'])
                 {
                   case 1: // Hétéro
                    include_once('sponsors/view/en_heteros.php');
                    break;
                   case 2: // Homosexuel
                    include_once('sponsors/view/en_gays.php');
                    break;
                   case 3: // Bisexuel
                    include_once('sponsors/view/en_gays.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/en_gays.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/en_gays.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/en_gays.php');
                    break;
                  }
         break;
        case 2: // FEMME
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuelle
                    include_once('sponsors/view/en_heteros.php');
                    break;
                   case 2: // Homosexuelle
                    include_once('sponsors/view/en_lesbiennes.php');
                    break;
                   case 3: // Bisexuelle
                    include_once('sponsors/view/en_lesbiennes.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/en_heteros.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/en_heteros.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/en_heteros.php');
                    break;
                  }
         break;
        case 3: // TRANSSEXUEL
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuel
                    include_once('sponsors/view/en_trans.php');
                    break;
                   case 2: // Homosexuel
                    include_once('sponsors/view/en_trans.php');
                    break;
                   case 3: // Bisexuel
                    include_once('sponsors/view/en_trans.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/en_trans.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/en_trans.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/en_trans.php');
                    break;
                  }
         break;
        case 4: // COUPLE
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuels
                    include_once('sponsors/view/en_couples.php');
                    break;
                   case 2: // Homosexuels
                    include_once('sponsors/view/en_gays_lesbiennes.php');
                    break;
                   case 3: // Bisexuels
                    include_once('sponsors/view/en_couples.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/en_couples.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/en_couples.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/en_couples.php');
                    break;
                  }
         break;
     }
break;

default: // PROFIL AFFICHE EN FRANCAIS OU AUTRE
    switch($i['gender'])
     {
        case 1: // HOMME
                switch($i['purposes'])
                 {
                   case 1: // Hétéro
                    include_once('sponsors/view/fr_heteros.php');
                    break;
                   case 2: // Homosexuel
                    include_once('sponsors/view/fr_gays.php');
                    break;
                   case 3: // Bisexuel
                    include_once('sponsors/view/fr_gays.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/fr_gays.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/fr_gays.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/fr_gays.php');
                    break;
                  }
         break;
        case 2: // FEMME
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuelle
                    include_once('sponsors/view/fr_heteros.php');
                    break;
                   case 2: // Homosexuelle
                    include_once('sponsors/view/fr_lesbiennes.php');
                    break;
                   case 3: // Bisexuelle
                    include_once('sponsors/view/fr_lesbiennes.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/fr_heteros.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/fr_heteros.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/fr_heteros.php');
                    break;
                  }
         break;
        case 3: // TRANSSEXUEL
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuel
                    include_once('sponsors/view/fr_trans.php');
                    break;
                   case 2: // Homosexuel
                    include_once('sponsors/view/fr_trans.php');
                    break;
                   case 3: // Bisexuel
                    include_once('sponsors/view/fr_trans.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/fr_trans.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/fr_trans.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/fr_trans.php');
                    break;
                  }
         break;
        case 4: // COUPLE
                switch($i['purposes'])
                 {
                   case 1: // Hétérosexuels
                    include_once('sponsors/view/fr_couples.php');
                    break;
                   case 2: // Homosexuels
                    include_once('sponsors/view/fr_gays_lesbiennes.php');
                    break;
                   case 3: // Bisexuels
                    include_once('sponsors/view/fr_couples.php');
                    break;
                   case 4: // Plaisir tarifé privé
                    include_once('sponsors/view/fr_couples.php');
                    break;
                   case 5: // Plaisir tarifé salon
                    include_once('sponsors/view/fr_couples.php');
                    break;
                   case 6: // Plaisir tarifé escort
                    include_once('sponsors/view/fr_couples.php');
                    break;
                  }
         break;

     }
break;

} // Fin du switch

?>
Je n'ai pas encore inclu de publicité en fonction de toutes les langues car je n'ai pas encore trouvé de bonnes régies pour certaines d'entre-elles.

Mais sinon, ça marche!

POur obtenir l'URL, SI VOUS ETES MAJEUR UNIQUEMENT, envoyez un e-mail vide à l'adresse : [email protected] et vous recevrez automatiquement l'URL en retour. Vous pourrez alors constater la façon dont j'ai mis en place ces publicités.

Vous m'aviez demandé pourquoi je n'incluais pas qu'une seule page qui afficherait dynamiquement les pubs... c'est que chacune des pages appelées par ce script contient elle-même un script (javascript) qui lui est propre et qui permet de générer aléatoirement des bannières avec quelques fonctions supplémentaires. C'est donc assez complexe comme truc :)

J'aime bien la solution du switch car elle me pemret de voir très rapidement les pubs que j'ai configuré. En effet, au fur et à mesure, je ferai de nvlles pages pour des pubs encore ciblées. Par exemple, pour l'instant, c'est le même script de bannières aléatoire qui est appelé pour un profil "Homme homosexuel" ou "Homme bisexuel". On peut imaginer que, plus tard, je réserve un script spécifique à chacun de ces profils afin de cibler encore plus mes pubs.

Et oui, il faut bien ça pour un service 100% gratuit :oops:


Merci encore infiniment à vous qui m'avez aidé!

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 juin 2005, 17:17

tant mieux si ça te convient alors

mais je crois que tu remporte la palme du plus long switch !

je suis persuadé qu'en réfléchissant un peu tu pourrais organiser tes appels de façon à simplifier tout ça, car là c'est super redondant comme code

enfin ravi si on a pu t'aider ;)

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 17:34

Oui c'est clair... mais je n'ai pas l'impression que cela ralentisse bcp la création de la page.

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 17:36

Bon c'est vrai que je pourrais passer la variable langue dans l'include...

mais je n'ai pas vraiment compris comment la sécuriser et n'ai pas totalement saisi non plus comment traiter le cas du 'fr' (= 'default' et ' ')

En fait, je ne vois même pas du tout ce que cela donnerait dans le code :oops:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 juin 2005, 17:49

c'est même pas une histoire de performances mais surtout de simplicité, de lisibilité et de maintenabilité

à sécuriser c'est simple, et je t'ai mis un exemple
tu testes la valeur de la variable, si elle correspond à une valeur autorisée tu acceptes, sinon tu mets une valeur par défaut

Eléphant du PHP | 199 Messages

15 juin 2005, 18:45

if (isset($l) && ($i['sexe']=='1') && ($i['sport_prefere']=='1') ) {include_once('sponsors/$l/articles-de-foot-hommes.php');}
Les 2 font la paire : coder ET commenter :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

15 juin 2005, 19:05

heu je ne veux pas être désagréable mais je ne vois pas bien l'intérêt de ton bout de code après tout ce qui a été dit smarties :lol: