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

Web Perl Discussion :

[CGI] récupération de variable


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Par défaut [CGI] récupération de variable
    Alors voilà, je crée un tableau dont le nombre est fonction de ce qu'a entré l'utilisateur ($nb):

    script1.pl
    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
     
    	for ($i = 1; $i< $nb+1; $i++)  {
    		print "
    			<tr>
    				<td>";
    				print $cgi->textfield (-name=>"exp_$i", -size=>"20", -maxlength=>"30");
    				print "</td>
    				<td>";
    				print $cgi->textfield (-name=>"Cy5_$i", -size=>"12", -maxlength=>"30");
    				print "
    				</td>
    				<td>";
    				print $cgi->textfield (-name=>"Cy3_$i", -size=>"12", -maxlength=>"30");
    				print "
    				</td>
    				<td>";
    				print $cgi->textfield (-name=>"date_$i", -size=>"10", -maxlength=>"20");
    				print "
    				</td>
    				<td>";
    				print $cgi->textfield (-name=>"manip_$i", -size=>"15", -maxlength=>"30");
    				print "
    				</td>
    				<td>";
    				print $cgi->filefield (-name=>"upload_$i", -size=>"20", -maxlength=>"30");
    				print "
    				</td>
    			</tr>
    		";
    	}
    je souhaite ensuite récupéré les informations qui ont été entrées dans ce tableau:
    script2.pl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    my $i;
    for ($i = 1; $i<$nb_lame+1; $i++) {
    	my $exp."_".$i = $query->param("exp_$i");
    	my $cy5."_".$i = $query->param("Cy5_$i");
    	my $cy3."_".$i = $query->param("Cy3_$i");
    	my $date."_".$i = $query->param("date_$i");
    	my $manip."_".$i = $query->param("manip_$i");
    	my $file."_".$i = $query->param("upload_$i");
    }
    mais voilà, ça ne marche pas .. Quelqu'un aurait-il une idée?

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Au fait tu te melanges entre le contenu d'une variable et le nom de la variable. Donc pour faire ce que tu veux, faut passer par des references.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    my $i;
    for ($i = 1; $i<$nb_lame+1; $i++) {
      my $nom_variable = "exp_$i";
      my $$nom_variable = $query->param("exp_$i");
     
      #Je reecris $nom_variable pour ecraser l'ancien
      $nom_variable = "cy5_$i";
      my $$nom_variable= $query->param("Cy5_$i");
     
      etc
      etc
    }
    $nom_variablesera le nom de ta variable. Pour le premier cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $nom_variable= "exp_$i";
    $nom sera egale à exp_1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $$nom_variable= $query->param("exp_$i");
    Je cree une variable qui s'appelera $exp_1 d'ou le $$nom_variable
    Ainsi si tu fais print $exp_1 qui equivaut à $$nom_variable, tu auras bien la valeur de $query->param("exp_$i")

    Courage

  3. #3
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Par défaut
    peux-tu être plus clair? en quoi est ce que je me mélange? tu répète 2 fois $nom dans ta première partie de code, pour le coup, oui, je me mélange ..
    et je vois pas en quoi les référencecs doivent être appliquées ici ..

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    tu ne peux pas declarer une variable de cette façon
    D'apres ce que j'ai compris tu souhaites avoir des variables qui s'appeleront
    $exp_1, $exp_2, $cy5_1, etc en fonction de la valeur de $i.
    Comme tu ne peux pas declarer à l'avance my $cy5_6 par exemple, tu les creé dynamiquement dans ta boucle for.
    Mais Perl ne comprend pas d'où l'intervention des references pour creer dynamiquement des nom de variables.

    donc en debut de boucle je creer une variable qui contiendra les futurs noms de tes variables, d'ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom_variable = "exp_$i"; tu peux l'appeler comme tu veux.
    En fonction de $i, $nom_variable sera different.
    pour pouvoir creer ta variable ($exp_1 par exemple), tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $$nom_variable = $query->param("exp_$i");
    A ce niveau, c'est comme ci tu avais ecris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $exp_1 = $query->param("exp_1"); (si $i = 1)
    my $exp_8 = $query->param("exp_8"); (si $i = 8)
    voilà

  5. #5
    Expert confirmé
    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
    Par défaut
    Et c'est typiquement un truc qu'il ne faut jamais faire... Les références symbolique c'est "mal" (pour une explication en détail des méfaits des références symbolique une petite recherche sur ce forum suffira) ! (d'ailleurs ce n'est pas sans raison si "use strict;" les interdit)
    A la place il faut utiliser des tables de hachages qui permettent à peu près les mêmes fantaisies mais sans les risques associés.

    --
    Jedaï

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    DANS ce cas mister jedai, propose un exemple

  7. #7
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 892
    Par défaut
    Un beau thread !
    Bon courage à Stoyak !!!

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  8. #8
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par djibril
    DANS ce cas mister jedai, propose un exemple
    Un exemple de quoi ? D'utilisation d'une table de hashage ? Je doute que tu en ai besoin (my %hash; $hash{ma_chaine_de_caractère} = "Wouala".
    Quant aux méfaits des références symboliques, elles polluent l'espace des noms sans nécessité (aucun avantage par rapport à un hash) : imagine que par malchance tu te retrouves avec une de tes références symboliques égale au nom de l'une de tes autres variables...

    --
    Jedaï

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Je suis d'accord qu'il est preferable d'utilliser des hash. Mais on reviendra qd même aux references anonymes pour la construction d'un hash plus complexe. Quoique, vaut mieux faire au plus simple pour chacun. Tout depends de ce qu'on veut faire et de la maniére de penser de chacun

  10. #10
    Expert confirmé
    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
    Par défaut
    Les références anonymes ne sont pas un problème !!! Les références symbolique le sont : les références anonymes ne polluent pas l'espace des noms (comme l'indique leur dénomination) et ne créent pas de risque de collision, contrairement aux références symboliques. Franchement oublie les références symboliques c'est une TRES mauvaise idée !
    Je suis pour le TIMTOWTDI, c'est même ce qui m'attire dans Perl, mais les références symbolique non, il ne faut pas les utiliser...

    --
    Jedaï

  11. #11
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Par défaut
    Bon, j'ai résolu mon souci! j'ai utilisé des hashs et des références anonymes!!

    donc un petit tag

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/02/2010, 15h32
  2. [C#] Récupération des variables system...
    Par smyley dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/08/2005, 11h39
  3. [VB.NET] Problem de récupération de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/01/2005, 11h37
  4. Récupération de variable
    Par Fred- dans le forum ASP
    Réponses: 13
    Dernier message: 17/06/2004, 20h13
  5. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 17h51

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