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

Langage PHP Discussion :

Afficher infos en fonction de la semaine


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 112
    Par défaut Afficher infos en fonction de la semaine
    Bonjour,

    Je bloque sur un script, il s'agit de menus de la semaine, stockés en base de donnée et qu'il faudrait afficher en fonction de la semaine en cours. Le souci étant qu'il y a 4 menus (pour 4 semaines) et qu'à la semaine 5 on affiche celui de la semaine 1 et ainsi de suite...

    J'utilise la fonction date("W"), pour connaitre la semaine en cours (semaine actuelle la 24, mais ensuite comment gérer les conditions ?

    semaine 24 -> afficher menu 1
    semaine 25 -> afficher menu 2
    semaine 26 -> afficher menu 3
    semaine 27 -> afficher menu 4
    semaine 28 -> afficher menu 1
    semaine 29 -> afficher menu 2
    etc...

    Voici mon code, mais il ne fonctionne pas correctement, mon approche ne semble pas correcte (4 est de toute façon divisible par 2 du coup ça coince) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $semaine=date("W");	
     
    if($semaine % 4 == 0)
      echo 'Menu semaine 4';
    elseif($semaine % 3 == 0)
      echo 'Menu semaine 3';
    elseif($semaine % 2 == 0)
      echo 'Menu semaine 2';	
    else
      echo 'Menu semaine 1';
    Merci d'avance pour votre aide et meilleures salutations !

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    Tu peux pas faire un truc du genre (en partant du principe qu'il y a 52 semaines dans une année):

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for ($i = 1; $i <= 13 ; $i = $i +4) {
        $semaine[$i] = 1; // case 1 puis 5 puis 9... prendra la valeur 1
        $i++;    
        $semaine[$i] = 2; //case  2 puis 6 puis 10... prendra la valeur 2
        $i++;
        $semaine[$i] = 3; // case 3 puis 7 puis 11... prendra la valeur 3
        $i++;
        $semaine[$i] = 4; // case  4 puis 8 puis 12... prendra la valeur 4
     
    }
     
    $semaine_en_cours = date('W');
    echo "menu numéro ".$semaine[$semaine_en_cours];
    En gros initialise ton tableau pour l'année. Après suivant la semaine que tu es, tu fais appel à la case qui correspond...

    Je sais pas si mon code est clair?

  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 : 50
    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
    Salut,

    @Benduroy
    Ton code peut se résumer à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $pos = array();
    for ($i = 1, $w = 0 ; $i < 54 ; ++$i)
    {
        $pos[$i] = (++$w === 5) ? $w = 1 : $w;
    }

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 273
    Par défaut
    En effet c'est pas con

  5. #5
    Membre éprouvé
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Transports

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Par défaut
    pour rester dans la logique de base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $semaine=date("W");	
     
    if($semaine % 4 == 0)
      echo 'Menu semaine 4';
    elseif($semaine+1 % 4 == 0)
      echo 'Menu semaine 3';
    elseif($semaine+2 % 4 == 0)
      echo 'Menu semaine 2';	
    else
      echo 'Menu semaine 1';

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 112
    Par défaut
    Hello,

    Merci pour votre aide, j'ai testé vos deux solutions mais ça ne fonctionne pas.

    Pour celle de Benduroy
    J'ai une erreur :
    Warning: Cannot use a scalar value as an array in
    Et celle de Aurélien LEQUOY ne fonctionne simplement pas, les valeurs renvoyées ne correspondent pas...

    J'ai pensé sinon créer dans la base de donnée un champ avec le numéro de semaine et un autre avec une valeur qu'on incrémente de 1 à 4 et faire une condition en php avec un update a chaque nouvelle semaine si la semaine est différente de celle stockée en BD, mais ça me parait un peu lourd comme soluce, il me semble que ça doit être possible de faire qqch simplement en PHP non ??

  7. #7
    Invité
    Invité(e)
    Par défaut
    bonjour,
    @link.80 : c'était presque ca !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    switch($semaine % 4){
    case 0:
      echo 'Menu semaine 4'; break;
    case 1:
      echo 'Menu semaine 1'; break;
    case 2:
      echo 'Menu semaine 2'; break;
    case 3:
      echo 'Menu semaine 3'; break;
    }
    Qu'on peut simplement résumer ici par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Menu semaine '; echo (($semaine % 4)==0)? '4' : ($semaine % 4);
    L'astuce : on utilise la propriété "modulo" (X % Y) qui renvoie le reste de la division entière de X par Y
    Un exemple d'utilisation ici (pour une bonne compréhension du fonctionnement de modulo).

    N.B. switch/case remplace efficacement if/elseif.

    @rawsrc : est-il bien nécessaire d'utiliser un canon pour écraser une mouche
    Dernière modification par Invité ; 11/06/2013 à 09h13.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2008
    Messages : 112
    Par défaut
    Un très grand merci jreaux62, c'est exactement ce que je cherchait, ça fonctionne parfaitement

    Sujet résolu, merci à tous pour votre aide et excellente journée !

  9. #9
    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 : 50
    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,

    @satenske
    je suis d'accord, le modulo c'est mieux, mais j'ai voulu rester sur l'approche de Benduroy. Bon c'est pas la fin du monde non plus

    @jreaux62
    ton code final se résume à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Menu semaine ', (($semaine % 4) ?: '4');

  10. #10
    Invité
    Invité(e)
    Par défaut
    @rawsrc :arghhhhhh !
    Un prince ! un seigneur ! le Maître de la concision : Sire Concision !!
    (à moi aussi, ça me la coupe...)

    Par contre, si je voyais ton code pour la 1ère fois, il me faudrait sans doute 3 jours pour (peut-être) le comprendre...

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

Discussions similaires

  1. [MySQL] Afficher tableau en fonction de semaine/jour
    Par Ankh2 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/03/2013, 05h05
  2. Réponses: 2
    Dernier message: 04/10/2006, 17h12
  3. Réponses: 1
    Dernier message: 18/07/2006, 23h38
  4. [SGBD] afficher infos issues de php/mysql dans html
    Par php_de_travers dans le forum Requêtes
    Réponses: 11
    Dernier message: 22/10/2005, 00h28
  5. affiche résultat en fonction du login windows
    Par bichonjp dans le forum ASP
    Réponses: 4
    Dernier message: 18/08/2005, 16h04

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