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 Perl Discussion :

[langage]erreur dans mon script


Sujet :

Langage Perl

  1. #1
    Fabouney
    Invité(e)
    Par défaut [langage]erreur dans mon script
    bonsoir à tous,

    j'ai un soucis, c'est tout con j'suis sur, mais j'en ai eu plein la tête toute la journée lol, mes neuronnes sont fatigué.
    j'ai un calendrier, qui récupére via l'url le numéro de mois et l'année, et qui affiche les jours correspondant.

    ex : http://www.site.fr/cgi-bin/fichier.pl?06-2005

    moi je me suis dit je vais faire 2 petit lien pour naviguer un peu, en augmentant d'un mois, en descendant et surtout si le mois et supérieur a 12 alors on augmente l'année et si le mois est inférieur a 1 on décemente l'année, c'est tout bête.

    voila mon bout de script.

    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
    my @mois = ('January','February','March','April','May','June','July','August','September','October','November','December');
        $Month = $Result[0]; shift(@Result);
    		$Month =~ s/\s\s\s*//g;
     
    		my @Mois = split(/ /,$Month); # $mois[1] = année
     
    		  for(my $i=0;($i<12);$i++){
    		    if($mois[$i] eq $Mois[0]){
    		      $numMois = $i + 1;
    		    }
    		  }
     
        if($numMois >= 12){
          $Mois[1]++;
          $numMois = 0;
        }
        if($numMois <= 1){
          $Mois[1] = ($Mois[1] - 1);
          $numMois = 13;
        }
     
        $ret = "<TABLE><CAPTION ALIGN=\"TOP\"><a href=blog.pl?".($numMois - 1)."-".$Mois[1]."><img src=\"/blog/images/flechegauche.gif\"></a>&nbsp;<B>$Month</B>&nbsp;<a href=blog.pl?".($numMois + 1)."-".$Mois[1]."><img src=\"/blog/images/flechedroite.gif\"></a></CAPTION>\n<TR>";
    et si vous voulez voir comment mon calendrier se comporte avec ca :

    http://www.rea-lise.com/blog/

    j'pense que vous allez voir directement l'erreur, je fait 2 test a la suite et c'est la que ca foire certainement, car quand par exemple l'année augmente de 1 je réinitialise la variable $numMois à 1 pour commencer au premier mois de la nouvelle année, lol le seul problème c'est que du coup le numéro de mois et maintenant inférieur à ou egal à 1 donc ! le 2eme test (à la suite va s'avéré VRAI) mais j'ai pas d'astuce pour régler se soucis, c'est vraiment pas grand chose, si vous pouviez m'aider ....


    MERCI d'avance, bonne soirée

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut Re: erreur dans mon script
    Euh ...

    Citation Envoyé par Fabouney
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        if($numMois >= 12){
          $Mois[1]++;
          $numMois = 0;
        }
        if($numMois <= 1){
          $Mois[1] = ($Mois[1] - 1);
          $numMois = 13;
        }
    D'un strict point de vue algorithmique, il vaudrait mieux disjoindre tes cas, plutôt que de les enchainer ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        if($numMois >= 12){
          $Mois[1]++;
          $numMois = 0;
        }
        elsif($numMois <= 1){
          $Mois[1] = ($Mois[1] - 1);
          $numMois = 13;
        }
    Juste en passant, comme ça ... je n'ai pas creusé davantage ...
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Fabouney
    Invité(e)
    Par défaut
    bonjour,

    ca bug toujours aussi, ta regardais le comportement du calendrier sur le site, look les les liens en bas de las page pour voir comment il incrémente et décrémente, quand ca change d'année tu va comprendre.

  4. #4
    Fabouney
    Invité(e)
    Par défaut
    Personne n'a une petite astuce ?

  5. #5
    Membre actif
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Points : 203
    Points
    203
    Par défaut Re: erreur dans mon script
    Citation Envoyé par Fabouney
    moi je me suis dit je vais faire 2 petit lien pour naviguer un peu, en augmentant d'un mois, en descendant et surtout si le mois et supérieur a 12 alors on augmente l'année et si le mois est inférieur a 1 on décemente l'année, c'est tout bête.

    voila mon bout de script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        if($numMois >= 12){
          $Mois[1]++;
          $numMois = 0;
        }
        if($numMois <= 1){
          $Mois[1] = ($Mois[1] - 1);
          $numMois = 13;
        }
    Il vaut mieux gérer directement n'importe quel incrément. Sans utiliser Date::Calc, quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        while($numMois >= 12){
          $Mois[1]++;
          $numMois -= 12;
        }
        if($numMois <= 1){
          $Mois[1]--;
          $numMois += 12;
        }
    Mais bon, pitié, aies la générosité d'accorder l'année une variable pour elle toute seule, elle le mérite !

    N

  6. #6
    Fabouney
    Invité(e)
    Par défaut
    lol nematoad, ok je vais lui faire ce cadeau, c'est vrai qu'elle le mérite

  7. #7
    Fabouney
    Invité(e)
    Par défaut
    ca fonctionne toujours pas, malheureusement

  8. #8
    Membre actif
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Points : 203
    Points
    203
    Par défaut
    Je ne sais pas ce qui ne va pas, mais j'ai fait une petit truc vite fait qui devrait te permettre de comprendre comment ça devrait marcher. A charge pour toi de le mettre dans ton script

    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
     
    #! /usr/local/bin/perl -w
     
    my( $annee, $mois ) = @ARGV ? @ARGV : qw/2005 06/;
     
    while( <STDIN> ) {
        chomp;
        last if /q/i;
        my $incr = 0;
        if( /^\+(\d+)?/ ) {
            $incr = $1 ? $1 : 1;
        }
        elsif( /^-(\d+)?/ ) {
            $incr = ($1 ? $1 : 1) * -1;
        }
        ($annee, $mois) = change( $annee, $mois, $incr );
        print "$annee $mois\n";
    }
     
    sub change {
        my( $an, $ms, $inc ) = @_;
        $ms += $inc;
        while( $ms > 12 ) {
            $ms -= 12;
            $an++;
        }
        while( $ms < 1 ) {
            $ms += 12;
            $an--;
        }
        ($an, $ms);
    }
    N

  9. #9
    Fabouney
    Invité(e)
    Par défaut
    Bonjour,

    je comprend pas trop la premiere parti de ton script à partir de while(<STDIN>) jusque la fonctione change, ta voulu faire quoi ?

  10. #10
    Membre actif
    Inscrit en
    Février 2005
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 167
    Points : 203
    Points
    203
    Par défaut
    ben, que tu puisse jouer avec. Fais-le tourner et puis commence par taper des +6, -2, +3 pour regarder comment ça se comporte. Tapes q pour sortir.

    N

  11. #11
    Fabouney
    Invité(e)
    Par défaut
    ok je vois nematoad, mais la il est utilisable que en dos, pour les +2 etc etc, si je veux faire juste de mois en mois avec des fleche (comme liens) pour incrémenter juste de 1 en 1, comment je vais pouvoir l'insérer ds mon script, j'ai un peu de mal à voir et j'en suis désolé.

    sachant que moi en fait, le mec passe en paramettre (via le lien) le mois-année à afficher, j'ai déjà le bou de script qui récupére le mois et l'année, qui incrémente correctement les moi, mais probleme lors du changement d'année

  12. #12
    Fabouney
    Invité(e)
    Par défaut
    bon et bien j'ai reussi tout seul comme un grand, en rajoutant une 2eme condition dans mon while comme quoi "si la nouvelle année et supérieur a celle actuel, alors seulement on peut décrémenter" lol c'etait tout con j'men douter, mais merci nematoad d'avoir passé du temp a m'expliquer, c'est gentil.

    Au revoir

Discussions similaires

  1. Erreur dans mon script
    Par Akim13 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/06/2008, 18h15
  2. [GD] Redimension d'image - plusieurs erreurs dans mon script
    Par Henry9 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 18/02/2007, 10h58
  3. Erreur dans mon script
    Par dcollart dans le forum Linux
    Réponses: 3
    Dernier message: 21/09/2006, 15h02
  4. Dessin avec Imager.. erreur dans mon script
    Par Chekov dans le forum Modules
    Réponses: 2
    Dernier message: 18/06/2006, 14h14
  5. erreur dans mon script
    Par Swata dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 00h02

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