génération dynamique de <select> dans un form

génération dynamique de <select> dans un form - Perl - Programmation

Marsh Posté le 14-06-2006 à 11:19:33    

Bonjour,
Voila j'ai un script CGI en perl qui doit générer un formulaire contenant des <select> et un submit.
Le problème c'est que le nombre de select est généré dynamiquement en fonction de données derrière et que le formulaire rappele la meme page.
-> Donc il me faut des variables globales qui portent le meme nom que mes noms de <select> et surtout il faudrait que j'ai le même nombre de variables globales que de <select>.
 
Le problème est la puique je ne peux pas générer dynamiquement un nombre de variables globales ...  
 
 
J'avais penser a une solution du genre :
 
use vars qw ($version0 $version1 $version2 $version3 $version4 $version5 $version6 $version7 $version8 $version9);
...
for (my $i=0;$i<$taille;$i++) {
    <select name=\"version$i\">
}
...
 
Mais cette solution nest limité a une génération limitée de <select> , c'est pas trop propre ...
 
Avez vous des idées parceque la moi je seche ...
merci


Message édité par jl nash le 14-06-2006 à 11:26:19
Reply

Marsh Posté le 14-06-2006 à 11:19:33   

Reply

Marsh Posté le 14-06-2006 à 11:28:33    

Tu stockes dans un champ de type "hidden" le nombre de "select" que tu crées. Admettons que tu l'appelles select_machin_count.
Et pour chaque select que tu ajoutes, tu lui donnes un identifiant prévisible, du type "select_machin_i", avec i incrémenté à chaque select.
 
A la lecture, il te suffit de récupérer les variables CGI "select_machin_i", avec i variant de 0 à select_machin_count.
Tu stockes les valeurs dans un tableau, et le tour est joué, en peu de lignes de codes, et sans que ce ne soit trop laid.


Message édité par Elmoricq le 14-06-2006 à 11:30:11
Reply

Marsh Posté le 14-06-2006 à 12:11:19    

Ouais je vois ce que tu veu me dire mais le problème c'est qu'il faut que je déclare le même nombre de variables globales que de <select> générés et les variables globales c'est en dur, il faut que j'en mette un nombre prédéfini ....
L'idéal pour moi serait que je puisse créer mes variables globales dynamiquement ... c'est possible ?

Reply

Marsh Posté le 14-06-2006 à 12:14:17    

jl nash a écrit :

Ouais je vois ce que tu veu me dire mais le problème c'est qu'il faut que je déclare le même nombre de variables globales que de <select> générés et les variables globales c'est en dur, il faut que j'en mette un nombre prédéfini ....


 
Je me cite moi-même :

Citation :

Tu stockes les valeurs dans un tableau, et le tour est joué,


 
Bon, ça c'est côté PERL.
 
Côté feuille HTML, là pas le choix, chaque select doit avoir son propre identifiant. Mais vu que générer un CGI c'est juste balancer du texte qui sera ensuite interprété par un navigateur, rien de plus simple que de générer 1, 12 ou 42 identifiants comme tu veux.


Message édité par Elmoricq le 14-06-2006 à 12:15:44
Reply

Marsh Posté le 14-06-2006 à 12:42:19    

oui ça c'est ok pour générer mes <select> avec chacun un id qui s'incrément mais mon pb c'est la récup du contenu du <select>
 
T'es bien obligé de déclarer une variable globale qui porte le meme nom que celui de ton <select> non ??
 

Citation :

A la lecture, il te suffit de récupérer les variables CGI "select_machin_i", avec i variant de 0 à select_machin_count.


 
C'est ça que je voudrai faire mais je peu pas faire un truc du genre :
 
for (my $j=0 ; $j<$select_machin_count; $j++) {
    use vars qw ( $select_machin_$j );
}
 
une fois que j'orai récupérer ces variables je serai sauvé mais c'est juste ça mon problème

Reply

Marsh Posté le 14-06-2006 à 12:49:59    


# récupération des valeurs
my @select_machin_values  = ();
foreach my $i ( 0..$select_machin_count )
{
   push @select_machin_values, <ce que tu utilises pour récupérer select_machin_$i>;
}
 
## exemples d'utilisations du tableau
print "Nombre de valeurs : $#select_machin_values \n" ;
print "Valeur n° 3 : $select_machin_values[2] \n" ;
 
print "Impression de la totalité du tableau : \n";
foreach ( @select_machin_values )
{
   print "$_\n";
}
 


 
 
http://perldoc.perl.org/perldata.html


Message édité par Elmoricq le 14-06-2006 à 12:51:18
Reply

Marsh Posté le 14-06-2006 à 13:15:51    

tout mon pb est dans le :

Citation :

<ce que tu utilises pour récupérer select_machin_$i>;


 
le reste c'est bon il faut juste que j'arive a choper le contenu de mes <seleect>

Reply

Marsh Posté le 14-06-2006 à 13:22:34    

Tu utilises quel module ? CGI.pm ?
 
Si oui, un bête $instance_de_cgi->param("select_machin_$i" ) et tu as ta valeur.

Reply

Marsh Posté le 14-06-2006 à 13:49:17    

oué mai le pb c ke tou mon site repose sur des librairies "maison" (c pr mon taf) et je les maitrise pa encore enfin bref normalement je pose :
 
use vars qw ($nomDeMonSelect);
 
et sa récupere automatiquement le contenu de mon select (nommé nomDeMonSelect) dans la variable $nomDeMonSelect
 
Merci quand même je vais plancher la dessus ...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed