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] Passage de parametres d'une page à l'autre


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut [langage] Passage de parametres d'une page à l'autre
    Bonjour,

    J'ai un formulaire avec un tableau dont le nombre de lignes du tableau varie en fonction d'un chiffre saisie ds un textfield.

    J'ai un probleme pour le passage de parametre des valeurs de ce tableau...

    Voila ce que je fais sur ma page de formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for (my $x=1; $x<=$text_test; $x++)
        {
          print $q->hidden(-name=>'nature_test'.$x, -value=>"$nature_test"."$x");
          print $q->hidden(-name=>'endroit_test'.$x, -value=>"$endroit_test"."$x");
          print $q->hidden(-name=>'protocole_test'.$x, -value=>"$protocole_test"."$x");
        }
    J'ai aussi essayé de mettre -value=> $nature_test.$x, mais ca ne fonctionne pas non +.

    Et sur la page de traitement des données, je voulais récupérer les valeurs des différentes lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my (@nature, @endroit, @protocole);
     
    for my $i(1..$text_test)
    {
      $nature[$i-1]=$q->param('nature_test$i');
      $endroit[$i-1]=$q->param('endroit_test$i');
      $protocole[$i-1]=$q->param('protocole_test$i');
    }
    Les valeurs ne passent pas d'une page a l autre. Je pense que je fais une erreur au niveau des concatenations, mais je n'arrive pas a trouver ou est le probleme...

    Merci d'avance à ceux qui me liront et m'aideront

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 862
    Points : 4 832
    Points
    4 832
    Par défaut
    Salut

    Et si dans ta page de récupération tu essaies ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    my (@nature, @endroit, @protocole);
     
    for my $i(1..$text_test)
    {
      $nature[$i-1]=$q->param($nature_test.$i);
      $endroit[$i-1]=$q->param($endroit_test.$i);
      $protocole[$i-1]=$q->param($protocole_test$i);
    }
    D'autre part, j'aurai 2 remarques :
    1)Comment passes-tu ton formulaire ? En GET ou en POST ?
    2)Tu concatènes 2 variables. Ne serait-il pas plus lisible de les concaténer avant ta boucle dans une autre variable scalaire puis de passer cette scalaire résultante ?

    @++

  3. #3
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    pour tester tout ce que tu récupères au fil de ton script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my @lst_params = $q->param;
    foreach my $param (@lst_params) {
    	my $val = $q->param($param);
    	print "$param : $val<br>";
    }
    Ca te permettra de débugger un peu

    @+
    Mr6

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par GLDavid
    1)Comment passes-tu ton formulaire ? En GET ou en POST ?
    En post.

    Citation Envoyé par GLDavid
    2)Tu concatènes 2 variables. Ne serait-il pas plus lisible de les concaténer avant ta boucle dans une autre variable scalaire puis de passer cette scalaire résultante ?
    Tu peux etre plus clair? je comprend pas ce que tu veux dire...

    Mr6 : Tres pratique ton code, ca ma permis de voir que j'avais plein de $ qui trainaient, et de faire des modifs.

    Voila ou j'en suis :
    Le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        for (my $k=1; $k<=$text_test;$k++)
        {
          print "<tr><td align=center>$k</td><td>";
          print FORM->bd_combo("nature_test".$k, $nature_test, "", 1, "");
          print "</td><td>";
          print FORM->bd_combo("endroit_test".$k, $endroit_test, "", 1, "");
          print "</td><td>";
          print FORM->bd_combo("protocole_test".$k, $protocole_test, "", 1, "");
          print "</td></tr>";
        }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my ($nature_test, $endroit_test, $protocole_test);
     for my $i(1..$text_test)
    {
      $nature_test[$i-1]=$q->param('nature_test'.$i);
      $endroit_test[$i-1]=$q->param('endroit_test'.$i);
      $protocole_test[$i-1]=$q->param('protocole_test'.$i);
    }
    Et le résultat :
    nature_test1 : 1
    endroit_test1 : 1
    protocole_test1 : 1
    nature_test2 : ARRAY(0x140379820)2
    endroit_test2 : ARRAY(0x140476b80)2
    protocole_test2 : ARRAY(0x140476bd0)2
    qui vient du fait que $nature_test, $endroit_test, $protocole_test n'ont aucune valeur... COmment faire :

  5. #5
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    maintenant que tu vois tous tes params remonter, tu peux les appeler individuellement, pour voir ce qu'ils ont dans le ventre en ce qui concerne les tableaux...
    Celà dit, ca me fait bizarre ce 2 qui traine juste derrière tes parenthèses.... essaie de l'enlever (une regex ki coupe sur la parenthèse ?) pour pouvoir récupérer ton tableau et en afficher le contenu.

    @+
    Mr6

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Le 2 n'est pas bizarre, il correspond a la valeur de $i.

    En fait, au départ, $nature_test est vide donc en le concatenant a $i, qui vaut 1, ca donne 1.Au 2eme passage, $nature_test n'est plus vide, il contient ARRAY(0x140379820), et le $i=2, d'ou ce 2 qui reste derriere.

    donc en fait, je pense qu'il y a une concatenation qui ne marche pas... Mais je ne vois pas ou, j'arrive pas a men sortir!

    Mon probleme vient de ca :-value=>"$nature_test"."$x");
    Je n'arrive pas a concatener correctement, j'ai toujours des $ qui apparaissent

  7. #7
    En attente de confirmation mail Avatar de gd_dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Points : 129
    Points
    129
    Par défaut
    Bonjour,

    Pourriez-vous me donner plus d'information sur le code
    Je n'ai rien trouvé à ce sujet.

    Et peut être le code complet du script de test

    Merci

  8. #8
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Citation Envoyé par linou
    Mon probleme vient de ca :-value=>"$nature_test"."$x");
    Je n'arrive pas a concatener correctement, j'ai toujours des $ qui apparaissent
    A tout hasard, tu ne te mélangerais pas entre $nature_test et @nature ?
    tu pourrais montrer ton code en entier qu'on y voit plus clair sur ce ke tu essaies de faire ?

    @+
    Mr6

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par gd_dev
    Pourriez-vous me donner plus d'information sur le code
    bd_combo est une fonction qu'avait créé la personne précdéente qui travaillait sur lel meme sujet. Elle permet de faire des liste deroulante, comme son nom l indique.

    Citation Envoyé par Mr6
    A tout hasard, tu ne te mélangerais pas entre $nature_test et @nature ?
    C'est possible...

    Voila le code, j'ai fait du tri pour le raccourcir au max. Depuis ce matin, j'ai changé quelques trucs, je suis passé par des tableaux, mais ca n'avance pas mieux...
    Ca reste long...
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    my $q = new CGI; 
    my $login = $q->param("login"); 
    my $pass = $q->param("pass"); 
    my $espece = $q->param("espece"); 
    my $site = $q->param("site"); 
    my $schema = GREGOR_Serre->getSchema(); 
    my $droit = $q->param("droit"); 
    my $plante_select = $q->param("plante_select"); 
    my $text_test = $q->param("text_test");
     
    my $script ="<script language=javascript>
    </script>"; 
     
     
    print $q->header(); 
    print FORM->getHeader("Worksheet"); 
     
    if ( $login , $pass)
    { 
     
      #si 1er passage, on initialise les variables a 1 apr defaut : 1 test
      if ($text_test=='') 
      {
        $text_test = 1;
      }
     
     
      print $script, "\n<body><center>\n"; 
     
      print $q->h1("Worksheet"); 
     
      my $exist = requete avec count(*)
     
      if ($exist->[0][0] eq 0)
      {
     
        print "<table border=1>";
        print  "<tr align=center>
                    <td>
                        <table border=0>
                          <tr align=center bgcolor=\"FFFFE8\">
        my (@nature_test, @endroit_test, @protocole_test);
     
     
        #Tests
     
        print "<form name='nb_fecond' action='fiche_travail_new.cgi' method='post' enctype='multipart/form-data'>";
        print $q->textfield(-name=>'text_test', default=>$text_test, size=>1);
     
        print $q->hidden(-name=>'text_prel', -value=>$text_prel); 
        print $q->hidden(-name=>'login', -value=>$login);
        print $q->hidden(-name=>'pass', -value=>$pass);
        print $q->hidden(-name=>'plante_select', -value=>$plante_select);
     
        for (my $x=1; $x<=$text_test; $x++)
        {
          print $q->hidden(-name=>'nature_test['.$x.']', -value=>'$nature_test[$x]');
          print $q->hidden(-name=>'endroit_test['.$x.']', -value=>'$endroit_test[$x]');
          print $q->hidden(-name=>'protocole_test['.$x.']', -value=>'$protocole_test[$x]');
        }
     
        print $q->submit(-name=>"submit_test", -value=>'OK', -action=>'');
        print "</form>";
     
        print "</td><tr></table></td></tr><tr><td align=center>";
        print "<table border=1><tr><td align=center>&nbsp;N°&nbsp;</td><td align=center>&nbsp;Nature&nbsp;</td><td align=center>&nbsp;Type d'explant&nbsp;</td><td align=center>&nbsp;Protocole&nbsp;</td</tr>";
     
        my $nature_test = requete pr recup valeur a mettre dans liste deroulante
        my $endroit_test = requete pr recup valeur a mettre dans liste deroulante
        my $protocole_test = requete pr recup valeur a mettre dans liste deroulante
     
     
        for (my $j=1; $j<=$text_test;$j++)
        {
          print "<tr><td align=center>$j</td><td>";
          print FORM->bd_combo("nature_test[]", $nature_test, "", 1, "");
          print "</td><td>";
          print FORM->bd_combo("endroit_test[]", $endroit_test, "", 1, "");
          print "</td><td>";
          print FORM->bd_combo("protocole_test[]", $protocole_test, "", 1, "");
          print "</td></tr>";
        }
        print "</table>";
        print "<br></td></tr>";
        print "</td></tr></table>";
     
        print $q->hidden(-name=>'text_test', -value=>$text_test); 
        print $q->hidden(-name=>'login', -value=>$login); 
        print $q->hidden(-name=>'pass', -value=>$pass); 
        print $q->hidden(-name=>'plante_select', -value=>$plante_select); 
     
        for (my $x=1; $x<=$text_test; $x++)
        {
          print $q->hidden(-name=>'nature_test['.$x.']', -value=>'$nature_test[$x]');
          print $q->hidden(-name=>'endroit_test['.$x.']', -value=>'$endroit_test[$x]');
          print $q->hidden(-name=>'protocole_test['.$x.']', -value=>'$protocole_test[$x]');
        }
     
        print $q->submit(-name=>"submit", -value=>'Validate'); 
        print "</form>";    
      }
     
      my @lst_params = $q->param; 
      foreach my $param (@lst_params) { 
        my $val = $q->param($param); 
        print "$param : $val<br>"; 
      } 
     
      print $q->end_html();  
    }
    Et pour la recup :
    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
    my $q = new CGI; 
    my $login = $q->param("login"); 
    my $pass = $q->param("pass"); 
    my $plante_select = $q->param("plante_select"); 
    my $text_test = $q->param("text_test");
     
    print $q->header(); 
    print FORM->getHeader("Worksheet"); 
     
    if ( $login , $pass)
    { 
      print "\n<body><center>\n"; 
     
      print "Login : $login<br>"; 
      print "Pass : $pass<br>"; 
      print "Plante_select : $plante_select<br>"; 
      print "Text_test : $text_test<br>";
     
    print"<br>************************************************************************<br>";
    my @lst_params = $q->param; 
    foreach my $param (@lst_params) { 
       my $val = $q->param($param); 
       print "$param : $val<br>"; 
    } 
    print"<br>************************************************************************<br>";
     
      print $q->end_html();  
    }

  10. #10
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Citation Envoyé par linou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    my (@nature_test, @endroit_test, @protocole_test);
    [couic]
        for (my $x=1; $x<=$text_test; $x++)
        {
          print $q->hidden(-name=>'nature_test['.$x.']', -value=>'$nature_test[$x]');
          print $q->hidden(-name=>'endroit_test['.$x.']', -value=>'$endroit_test[$x]');
          print $q->hidden(-name=>'protocole_test['.$x.']', -value=>'$protocole_test[$x]');
        }
    Ce qui me fait bizzarre, c'est qu'on ne voit nulle part avec koi est initialisé le tableau @nature_test, mis à part à blanc à chaque chargement du script.
    Prenons la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print $q->hidden(-name=>'nature_test['.$x.']', -value=>'$nature_test[$x]');
    Pour moi, on va obtenir un paramètre de nom 'nature_test[1]' (chaine de caractères) dont la valeur va être '$nature_test[$x]' (là encore chaine de caractère, et non élément de tableau à 1ère vue).
    Même en admettant que nature_test[1] renvoie un élément de tableau, il semble que lorsqu'on valide le formulaire une 1ère fois celui-ci soit vide, car je ne vois pas où est rempli le tableau @nature_test.

    Qu'est ce que j'ai raté ?
    Si je me souviens bien, dans ton script, tu mets une valeur dans le textfield text_test, ce qui te génère qq lignes. Fait pointer le form vers ton propre script et pas un autre peut-être, ensuite tu initialises tes tableaux et si tu dois récupérer des valeurs via le $q->param tu le fais après ta ligne d'init de tes tableaux.
    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my (@nature_test, @endroit_test, @protocole_test);
    my $nature_test = $q->param('nature_test1');
    @nature_test = @$nature_test;
    Est ce qqch comme ca que tu veux faire ?

    @+
    Mr6

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    En effet, les tableaux ne sont pas initialisés.

    Je pensais que $nature_test[$x] donnerait le x ième element du tableau $nature_test.

    Et je pensais aussi remplir le tableau en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (my $x=1; $x<=$text_test; $x++) 
        { 
          print $q->hidden(-name=>'nature_test['.$x.']', -value=>'$nature_test[$x]'); 
          print $q->hidden(-name=>'endroit_test['.$x.']', -value=>'$endroit_test[$x]'); 
          print $q->hidden(-name=>'protocole_test['.$x.']', -value=>'$protocole_test[$x]'); 
        }
    Si je ne le rempli pas en faisant ca, alors je ne vois pas comment le faire...

  12. #12
    En attente de confirmation mail Avatar de gd_dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Points : 129
    Points
    129
    Par défaut
    Note 1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (my $x=1; $x<=$text_test; $x++) 
     { 
     print $q->hidden(-name=>'nature_test['.$x.']', -value=>'$nature_test[$x]'); 
     print $q->hidden(-name=>'endroit_test['.$x.']', -value=>'$endroit_test[$x]'); 
     print $q->hidden(-name=>'protocole_test['.$x.']', -value=>'$protocole_test[$x]'); 
        }
    La je ne comprend pas, plus haut vous declarez les tableaux @nature_test, @endroit_test, @protocole_test est jusque à ce point il sont vide. Donc dans le formulaire vous devriez avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="nature_test[1]" value="">
    C'est ça ?

    Note 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my $nature_test = requete pr recup valeur a mettre dans liste deroulante 
    my $endroit_test = requete pr recup valeur a mettre dans liste deroulante 
    my $protocole_test = requete pr recup valeur a mettre dans liste deroulante
    Ici la requête retourne probablement un tableau
    C'est juste ?

    Donc là le script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        for (my $j=1; $j<=$text_test;$j++) 
        { 
          print "<tr><td align=center>$j</td><td>"; 
          print FORM->bd_combo("nature_test[]", $nature_test, "", 1, ""); 
          print "</td><td>"; 
          print FORM->bd_combo("endroit_test[]", $endroit_test, "", 1, ""); 
          print "</td><td>"; 
          print FORM->bd_combo("protocole_test[]", $protocole_test, "", 1, ""); 
          print "</td></tr>"; 
        }
    devrait produir quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     <select name="nature_test[]"><option value="xx">yy</option>etc
    Cela veut dire que l'utilisateur a plusieurs chois possibles

    Note 3:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        for (my $x=1; $x<=$text_test; $x++) 
        { 
          print $q->hidden(-name=>'nature_test['.$x.']', -value=>'$nature_test[$x]'); 
          print $q->hidden(-name=>'endroit_test['.$x.']', -value=>'$endroit_test[$x]'); 
          print $q->hidden(-name=>'protocole_test['.$x.']', -value=>'$protocole_test[$x]'); 
        }
    Maintenant le script produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" name="nature_test[1]" value="yy">
    C'est bizzar car vous écrasez en fait la séléction que fera l'utilisateur sur les menus déroulants. Si dans le menu déroulant <select name="nature_test[]"><option value="xx">yy</option>etc je choisie la première et la troisième valeur, lors de la récupération de 'nature_test', qui sera récupérée comme un tableu, celui-ci contiendra 2 valeurs. Celle que j'ai choisie.

    Mais avec les lignes ci-dessous ce n'est plus le cas puisque 'nature_test' est remplis.

    Dans le deuxième script, il est évident que $val = Array(....) au moment ou $param vaut 'nature_test'

    Par conséquent, vous devez tester le type de donnée
    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
     
    	my @lst_params = $q->param; 
    	foreach my $param (@lst_params) { 
    		my $val = $param; 
     
    		if(defined(@val)){
    		 print "$param : <ul>\n";
     
    		 foreach $valdatat ($val){
    		 	print "<li>".$valdatat."</li>\n";
    		 }
    		 print "</ul>\n";
    		}else{
    	   print "$param : $val<br>";
    	   }
    	}

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Concernant la note 1, les tableaux sont vide lors du 1er passage. J'ai un champ taxte dans lequel je saisi le nombre de ligne que je desire pour mon tableau. Je clique sur OK, la page se recharge avec le bon nombre de ligne.
    J'ai plusieurs tableau comme ca dans la meme page, donc plusieurs zone de texte et plusieurs bontons.

    Si je clique sur le bouton concernant le tableau 2, je veux pouvoir conserver les données deja saisies dans le tableau 1, c'est pour cela que je n'ai pas mis -value=>''.

    Pour la note 2, ce ne sont pas des listes, mais des listes deroulantes (popup_menu en perl), donc un seul choix n'est possible, pas plus.

  14. #14
    En attente de confirmation mail Avatar de gd_dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Points : 129
    Points
    129
    Par défaut
    Oui, mais le fait de nomé le champ name="variable[]" fait que le script de récupération récupère la donnée insérée dans un tableau.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Et donc, il faut mettre quoi?

  16. #16
    En attente de confirmation mail Avatar de gd_dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Points : 129
    Points
    129
    Par défaut
    Et bien, vous pouvez laissez comme ça il faut just en tenir compte. Comme je vous l'ai écrit plus haut
    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
     
      my @lst_params = $q->param; 
       foreach my $param (@lst_params) { 
          my $val = $param; 
     
          if(defined(@val)){ 
           print "$param : <ul>\n"; 
     
           foreach $valdatat ($val){ 
              print "<li>".$valdatat."</li>\n"; 
           } 
           print "</ul>\n"; 
          }else{ 
          print "$param : $val<br>"; 
          } 
       }

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Oui, mais en laissant comme ca, ca ne marche pas...

    J'ai toujours le fameux affichage $nature_prel$x par exemple

  18. #18
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    La partie FORM->db_combo te sert à faire une liste déroulante n'est-ce pas ?
    Je crois que http://www.enstimac.fr/Perl/ModulesF...olling%20list) devrait te servir pour les générer plus facilement

    @+
    Mr6
    *Qui saisit de moins en moins le but de ce script. Perso je le reprendrais de zéro en utilisant les méthodes qui vont bien (http://www.enstimac.fr/Perl/ModulesFr/CGI.html ?)*

  19. #19
    En attente de confirmation mail Avatar de gd_dev
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2003
    Messages : 79
    Points : 129
    Points
    129
    Par défaut
    Afin de mieu cerné le problème, je vous propose la chose suivante:

    Nous avons deux scripts, un script qui doit générer un formulaire que nous allons appeler get_form.pl et un script qui va traiter les données du formulaire que nous appelerons get_res.pl.

    Afin de simplifier le problème je vous propose de tester le script get_res.pl.
    Le code de celui-ci es le suivant
    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
    33
    34
    35
    36
    37
    38
    39
    40
     
    my $q = new CGI; 
    my $login = $q->param("login"); 
    my $pass = $q->param("pass"); 
    my $plante_select = $q->param("plante_select"); 
    my $text_test = $q->param("text_test"); 
     
    print $q->header(); 
    print FORM->getHeader("Worksheet"); 
     
    if ( $login , $pass) 
    { 
      print "\n<body><center>\n"; 
     
      print "Login : $login<br>"; 
      print "Pass : $pass<br>"; 
      print "Plante_select : $plante_select<br>"; 
      print "Text_test : $text_test<br>"; 
     
    print"<br>************************************************************************<br>"; 
    my @lst_params = $q->param; 
     
    foreach my $param (@lst_params) { 
     my $val = $param; 
     
      if(defined(@val)){ 
       print "$param : <ul>\n"; 
     
       foreach $valdatat ($val){ 
        print "<li>".$valdatat."</li>\n"; 
       } 
       print "</ul>\n"; 
      }else{ 
       print "$param : $val<br>"; 
      } 
    }
    print"<br>************************************************************************<br>"; 
     
      print $q->end_html();  
    }
    Maintenant vous créer un formulaire en HTML avec les différents paramètre que vous souhaitez intégrer.
    Vous faite vos tests jusqu'a ce que get_res.pl retourn bien ce que vous souhaitez.

    Le code HTML pourrait être le suivant :
    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
     
    <html>
    <body>
    <form methode="post" action="get_res.pl">
    <p><select name="nature_test[]">
       <option value="jaune_1">jaune_1</option>
       <option value="jaune_2">jaune_2</option>
       <option value="jaune_3">jaune_3</option>
       </select>
    </p>
    <p><select name="nature_test[]">
       <option value="bleu_1">bleu_1</option>
       <option value="bleu_2">bleu_2</option>
       <option value="bleu_3">bleu_3</option>
       </select>
    </p>
    <input type="submit" value="Send">
    </form>
    </body>
    </html>
    Si vous sélectionnez jaune_1 et bleu_3, normalement get_res.pl devra retourné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    nature_test : <ul>
    <li>jaune_1</li>
    <li>bleu_3</li>
    </ul>
    Une fois que vous ètes sure que get_res.pl fonctionne corrèctement, et si vous rencontrer encore des problèmes, vous pourriez nous donner le code html du formulaire de test ?

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par Mr6
    Qui saisit de moins en moins le but de ce script. Perso je le reprendrais de zéro en utilisant les méthodes qui vont bien
    Le but de ce script n'a pas changer : un tableau a lignes vraibles, avec des listes deroulantes a linterieur, pour lesquelles j'ai besoin de récupérer les valeurs, ce qui est m'apparait logique, sinon inutile d'en mettre.

    Je ne vois pas vraiment la différence avec la scolling_list, avec size=>1 et le popup_menu. C'est visiblement la meme chose, non?

    Je vais essayer de tout re re reprendre, tu le conseilles, mais j'y étais deja dessus....

    Citation Envoyé par gd_dev
    Afin de simplifier le problème je vous propose de tester le script get_res.pl.
    Je retest, je reprend, je retest....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] passage de parametre d'une page à une autre
    Par amesnaou dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 06/05/2009, 11h51
  2. Réponses: 8
    Dernier message: 16/08/2007, 15h46
  3. [Cookies] passage de variable d'une page a l'autre
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 15/11/2005, 01h50
  4. [langage] Passage de paramètres dans une fonction
    Par And_the_problem_is dans le forum Langage
    Réponses: 11
    Dernier message: 28/06/2004, 08h20
  5. [langage] passage de paramètres à une fonction
    Par BARBIER dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 15h46

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