switch pas pris en compte dans un if

Ramon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 28
Inscription: 22 Juil 2004

switch pas pris en compte dans un if

Message le Mar Juil 12, 2011 10:44

Bonjour,
j'ai un switch classique sur une variable pour affecter le mois en lettre plutôt qu'en chiffre qui fonctionne bien
Code: Tout sélectionner
   
$nommois = date('n', mktime(0,0,0,$_month, 1, $_year));
   $mois = $nommois;
        switch ($mois)
        {
         case "1":
         $mois = "Janvier";
         break;
         case "2":
         $mois = "Février";
         break;
}

je voudrai afficher les mois en fonction de la langue avec if
Code: Tout sélectionner
$nommois = date('n', mktime(0,0,0,$_month, 1, $_year));
   $mois = $nommois;
if($langue == 1)
{
        switch ($mois)
        {
         case "1":
         $mois = "Janvier";
         break;
         case "2":
         $mois = "Février";
         break;
}
}

là le mois se retrouve affiché en chiffre !
de même si je met le if dans case ou un autre switch imbriqué dans case.
Ça fait depuis hier que cherche sans résultat !

Merci pour votre aide.
Raymond


Marie-Aude
Modérateur
Modérateur
 
Messages: 11900
Inscription: 5 Juin 2006

Re: switch pas pris en compte dans un if

Message le Mar Juil 12, 2011 10:54

Fais des dump de variable à chaque étape, déjà. Et vérifie $langue en particulier :D


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: switch pas pris en compte dans un if

Message le Mar Juil 12, 2011 11:00

N'oublie pas un default: à ton switch, sinon il risque de tourner en boucle.

Ramon a écrit:je voudrai afficher les mois en fonction de la langue avec if

Pourquoi vouloir traduire à la mano ?
setlocale() + strftime() c'est pas bon ?


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: switch pas pris en compte dans un if

Message le Mar Juil 12, 2011 11:09

spout a écrit:setlocale() + strftime() c'est pas bon ?


+1. Y'a pas mieux

Ramon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 28
Inscription: 22 Juil 2004

Re: switch pas pris en compte dans un if

Message le Mar Juil 12, 2011 13:26

Merci pour vos réponses.
Précision, mes connaissance PHP sont limités.
Dur a comprendre pour moi " Fais des dump de variable à chaque étape ".

setlocale() + strftime() semble pas adapté à ce que je recherche.

Mais vos remarques on été productive.
Ma variable déclaré en début de page X :
<?php $langue = 1; ?>
n'est pas prise en compte en l'intérieur de mon script inséré en include plus bas dans la page,
alors qu'elle fonctionne après l'include !


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Re: switch pas pris en compte dans un if

Message le Mar Juil 12, 2011 13:32

tu fais un echo $langue à toutes les lignes pour voir quelle valeur elle a, et quand elle change


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: switch pas pris en compte dans un if

Message le Mar Juil 12, 2011 13:36

Si ce que tu veux faire c'est afficher le nom du mois en toute lettre, en fonction de son numéro (ce qui semble être le cas), alors setlocale et strftime sont au contraire tout à fait indiqué : http://www.formation-cakephp.com/25/afficher-les-dates-en-francais

Ou alors on ne comprend aps ce que tu veux faire, auquel cas tu devrais clarifier.

Ramon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 28
Inscription: 22 Juil 2004

Re: switch pas pris en compte dans un if

Message le Mar Juil 12, 2011 14:31

UsagiYojimbo, merci d'avoir insisté.
J'ai mieux regardé et modifié mon code en fonction.
C'est super, tout est plus simple comme tu l'as dit.

e-kiwi, j'ai justement fait des echo $langue, comme je l'expliquais plus haut, $langue ne s'affiche pas dans le fichier inclu mais s'affiche bien en dehors de l'inclu.
Bon, je n'en ai plus besoin, mais j'aurai voulu savoir pourquoi, c'est vraiment étonnant pour moi.

Merci pour votre aide

Raymond


Blount
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 430
Inscription: 18 Nov 2010

Re: switch pas pris en compte dans un if

Message le Mer Juil 13, 2011 0:08

Attention à la fonction « setlocale ». Des problèmes peuvent survenir lors de l'utilisation de PHP en multi processus.
http://php.net/manual/fr/function.setlocale.php

En gros, si deux personnes visitent le site simultanément dans une langue différente, la dernière personne effectuant le « setlocale » impactera sur la première (dans certain cas, si deux processus différents travaillent). Une sorte de franglais :D

À oublier dans un site à fort trafic.


Marie-Aude
Modérateur
Modérateur
 
Messages: 11900
Inscription: 5 Juin 2006

Re: switch pas pris en compte dans un if

Message le Mer Juil 13, 2011 2:13

Blount a écrit:Attention à la fonction « setlocale ». Des problèmes peuvent survenir lors de l'utilisation de PHP en multi processus.
http://php.net/manual/fr/function.setlocale.php

En gros, si deux personnes visitent le site simultanément dans une langue différente, la dernière personne effectuant le « setlocale » impactera sur la première (dans certain cas, si deux processus différents travaillent). Une sorte de franglais :D

À oublier dans un site à fort trafic.


Le site ou la page ?
Si c'est la page, un système correct d'adressage devrait réduire quasiment à zéro le risque que deux personnes visitent simultanément la même page avec un paramétrage de langue différent, non ?


Blount
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 430
Inscription: 18 Nov 2010

Re: switch pas pris en compte dans un if

Message le Mer Juil 13, 2011 8:25

Marie-Aude a écrit:
Blount a écrit:Attention à la fonction « setlocale ». Des problèmes peuvent survenir lors de l'utilisation de PHP en multi processus.
http://php.net/manual/fr/function.setlocale.php

En gros, si deux personnes visitent le site simultanément dans une langue différente, la dernière personne effectuant le « setlocale » impactera sur la première (dans certain cas, si deux processus différents travaillent). Une sorte de franglais :D

À oublier dans un site à fort trafic.


Le site ou la page ?
Si c'est la page, un système correct d'adressage devrait réduire quasiment à zéro le risque que deux personnes visitent simultanément la même page avec un paramétrage de langue différent, non ?


Cela va même au delà du site.
Si Apache est utilisé, il lance plusieurs processus pour traiter les requêtes.
Cela concerne tous les sites du serveur.

Maintenant ça mérite quelques testes.

Mais toutes les installations ne sont pas concernée. Par exemple, dans mes dépôts :
Code: Tout sélectionner
apache2-mpm-prefork            - Serveur HTTP Apache - modèle traditionnel « non-threaded »                     
apache2-mpm-worker            - Apache HTTP Server - high speed threaded model                                 


Ici, apache2-mpm-worker sera concerné par le problème.

S'il y a des personnes qui s'y connaisse un peu plus, ce serait bien de donner votre avis ;)

Pour ma part, je travail régulièrement avec Zend Framework. Il corrige justement certain de ces problème (gettext par exemple, utilisant setlocale dans PHP, dans ZF, il doit être récrit).


e-kiwi
Modérateur
Modérateur
 
Messages: 15618
Inscription: 23 Déc 2003

Re: switch pas pris en compte dans un if

Message le Mer Juil 13, 2011 9:14

tu colles que des bouts de scripts, impossible de déterminer le problème. si il faut tu es dans une fonction, tu remet à zéro quelquepart la variable, etc ...

Ramon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 28
Inscription: 22 Juil 2004

Re: switch pas pris en compte dans un if

Message le Mer Juil 13, 2011 15:13

e-kiwi a écrit:tu colles que des bouts de scripts, impossible de déterminer le problème. si il faut tu es dans une fonction, tu remet à zéro quelquepart la variable, etc ...

Tu as raison, hier je me suis rendu compte que mon problème venais du fait que j'appelais la variable à l'intérieur d'une fonction :?
Y a t il un moyen de récupérer le résultat d'une variable à l'intérieur d'une fonction, ou c'est pas possible ?

Pour setlocale, ce n'ai pas pour le site en entier, je vais mettre <?php setlocale(LC_ALL, 'nl_NL'); ?> dans 4 pages en langue différente qui va appeler le fichier ou il y a strftime().
Quand ça sera en place, je vous dirai si ça rentre en conflit.
Raymond

Ramon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 28
Inscription: 22 Juil 2004

Re: switch pas pris en compte dans un if

Message le Mer Juil 13, 2011 15:44

Marie-Aude a écrit:
Blount a écrit:Attention à la fonction « setlocale ». Des problèmes peuvent survenir lors de l'utilisation de PHP en multi processus.
http://php.net/manual/fr/function.setlocale.php

En gros, si deux personnes visitent le site simultanément dans une langue différente, la dernière personne effectuant le « setlocale » impactera sur la première (dans certain cas, si deux processus différents travaillent). Une sorte de franglais :D

À oublier dans un site à fort trafic.


Le site ou la page ?
Si c'est la page, un système correct d'adressage devrait réduire quasiment à zéro le risque que deux personnes visitent simultanément la même page avec un paramétrage de langue différent, non ?


Après test, 2 connexions simultané n'a pas causé de souci.

Ramon
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 28
Inscription: 22 Juil 2004

Re: switch pas pris en compte dans un if

Message le Mer Juil 13, 2011 17:34

Ramon a écrit:Tu as raison, hier je me suis rendu compte que mon problème venais du fait que j'appelais la variable à l'intérieur d'une fonction :?
Y a t il un moyen de récupérer le résultat d'une variable à l'intérieur d'une fonction, ou c'est pas possible ?



Pour conclure, je n’avançais pas parce que je ne déclarais pas ma vavriable à l'intérieur de la fonction :
global $langue;

Merci à tous de m'avoir permis de finaliser mon script.

Raymond

switch pas pris en compte dans un if

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :

  • Analyse de popularité
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.
  • Liste de mots-clés
    Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.
  • TouchGraph Google Browser
    Description du TouchGraph Google Browser (outil externe) : il s'agit d'un outil graphique permettant de visualiser des sites similaires (selon Google). On peut sauter de site en site, et se rendre compte facilement des communautés de sites, ou des nébuleuses de sites traitant du même sujet.


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité