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 :

coup de main pour petite fonction.


Sujet :

Langage Perl

  1. #1
    Fabouney
    Invité(e)
    Par défaut coup de main pour petite fonction.
    Bonsoir à tous,

    j'explique le cheminement de mon script, et l'étape ou je bute actuellement :

    1) un utilisateur envoi un forumaire.
    2) les valeur de chaque champ son stockées dans un fichier txt (sur le serveur).
    3) un email est envoyé au webmaster, pour le mettre au courant de l'envoi d'un nouveau formulaire, ainsi qu'un lien pour consulter les informatiosn de l'utilisateur.

    c'est dans la 3eme partie où le travail est le plus important, en effet dans l'email le webmaster a un lien qui pointe par exemple sur :

    www.lesite.com/cgi-bin/script.pl?id=idfurformulaire (puisque chaque formulaire est identifié par une clé unique).

    le fichier txt, enregistre les informations de la sorte, par exemple :


    clé = 121313

    champ1 = valeur1
    champ2 = valeur2
    .
    .
    .

    clé = 1545453

    champ1 = valleur1
    champ2 = valeur2
    .
    .
    .
    dans le webmaster en cliquant sur le lien, il renseigne le script sur le fait qu'il veut regarder les infos du tel ou tel forumaire.

    donc le mec clique sur le lien, moi j'appel ma fonction, qui va rechercher la clé ds le fichier via une expression régulier. et récupérer tout les champ ainsi que les valeurs de ce formulaire (pas ben compliqué) la ou je bute un peu, c'est lorsque qu'il faut stocker dans une liste le nom du champ et ca valeur.

    exemple : variable = (nom_champ => valeur)

    car le but final est de substituer les valeur que le mec a rentrer d sle formulaire au template (qui est le formulaire) pour que le webmaster consulte le formulaire avec les valeur de l'utilisateur.

    mais je sais pas trop comment m' y prendre, pour récupérer de maniere fiable les nom des champ dans le fichier ainsi que les valeur pour que ca me facilite la tache lors de la substitution avec le template du formulaire (qui aura donc els meme nom de champ, forcement) pas evident a expliquer dsl.

    merci bcp de m'aider.

    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
     
    sub substitution_formulaire(){
    my $id = shift;
    my $line;
     
      open(FORM, $fichier);
         while(<FORM>){
          $line .= $_;   
        }
     
      if($line =~ m/clé : $id\n\n(.*)/s){
        print $1;
      }  
     
    }
    voila le debut de ma fonction qui recupere l'id via l'utrl et qui affiche le nom des champ et les valeur du fichier.

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      open(FORM, $fichier);
         while(<FORM>){
          $line .= $_;   
        }
    Tu commets ici deux erreurs :
    1. Tu lis tout le fichier de façon inefficace : en effet, tu demandes à Perl de faire l'effort de te le découper en ligne, puis tu détruis ce découpage.
    2. Tu as la chance d'avoir un fichier organisé ligne par ligne et tu n'utilises pas l'analyse ligne à ligne...


    Une simple petite "machine à état" règle ton problème :
    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
     
    sub substitution_formulaire {
      my $id = shift;
     
      my $in_form = 0;
      my %form;
     
      open(FORM, $fichier) or die "N'arrive pas à ouvrir $fichier : $!\n";
      while(<FORM>){
        chomp;
        if( $in_form ) {
          last if /clé/;
          $form{$1} = $2 if m/(\w+) = (.*)/;
        } elsif( m/clé : $id/ ){
          $in_form = 1;
        } 
      }
     
      return %form;
    }
    Voilà !

    --
    Jedaï

Discussions similaires

  1. Coup de main pour ma fonction upload
    Par neokrios dans le forum Langage
    Réponses: 4
    Dernier message: 15/05/2013, 11h44
  2. Petit coup de main pour un petit script
    Par Baradhur dans le forum Linux
    Réponses: 4
    Dernier message: 11/11/2010, 00h38
  3. Petit coup de main pour débuter
    Par Wil14 dans le forum JPA
    Réponses: 2
    Dernier message: 14/04/2010, 11h32
  4. Petit coup de main pour syntaxe
    Par santacrus dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/12/2008, 20h11

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