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 :

recuperation de parametres CGI


Sujet :

Web Perl

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut recuperation de parametres CGI
    bonjour à tous,

    j'ecris une interface CGI DBI en perl. c'est au niveau du CGI que ca coince:
    j'ai un formulaire simple ecris en CGI qui renvoie (methods post) un parametre unique (donc simple a "parser") à un autre formulaire CGI qui doit utiliser ce parametre.


    1-le 1er formulaire est du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    print	startform(-method=>'post', -action=>"../test.cgi", -target=>'response');
    print	div({-class=>'menu_onglet'},
                  span({-class=>'onglet-actif'},'Search trait'),
                  hidden(-class=>'onglet', -name=>'scip', -default=> $cgi -> param('project')),
                  submit({-class=>'onglet',-value=>'Search QTL by trait'}),
                  a({-class=>'onglet', -href=>"$project"},'Project description')
             );
    print	endform;
    le parametre scip est bien envoyé au deuxième formulaire

    2-le deuxième formulaire doit lire le parametres qui lui a été envoyé ET ecrire un formulaire qui depend du parametre que le premier script lui a envoyé.il est du type
    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
    #!/usr/bin/perl
    use strict; use Carp; use DBI; use CGI qw/:all/;
    
    #recuperation des parametres
    my $cgi_in = new CGI;
    my $in = $cgi_in = param('scip');
    
    #ici un
    #print $in;
    # me donne bien la valeur envoyée par le 1er script:
    #Le parametre est bien lu et stocké dans un variable
    
    
    #creation d'un nouveau cgi
    my $cgi = new CGI;
    my $title = "eQTL by Hak: this frame should be in a frameset";
    
    print $cgi -> header;
    
    my $path_info = $cgi -> path_info;
    
    #ECRITURE DE LA PAGE HTML
    
    #si pas de path_info alors je creer un FRAME SET
    if(!$path_info){
        &print_frameset;
        exit 0;
    }
    
    #sinon j'ecris dans les differents FRAME en fonction de leur $path_info
    &print_html_header;
    &print_onglet if $path_info =~ /onglet/;
    &print_query if $path_info =~ /query/;
    &print_response if $path_info =~ /response/;
    &print_end;
    
    
    #LES FONCTIONS
    
    #ecriture du FRAME SET
    sub print_frameset{
        my $script_name = $cgi -> script_name;
    
    #    ICI print $in; me donne bien encore une fois la valeur attendue
    
        print <<FS
    	<HTML>
    	<HEAD><TITLE>$title</TITLE></HEAD>
    	<FRAMESET ROWS="9%,*" FRAMEBORDER="yes">
    	<FRAME NAME="onglet" SRC="$script_name/onglet" SCROLLING="auto">
    	<FRAMESET COLS="25,*" FRAMEBORDER="yes">
    	<FRAME NAME="query" SRC="$script_name/query" SCROLLING="auto">
    	<FRAME NAME="response" SRC="$script_name/query" SCROLLING="auto">
    	</FRAMESET>
    	</FRAMESET>
    	</HTML>
    FS
    	;
    #A PARTIR d'ici la variable $in disparait !!!! ????
    print $in; me renvoieune chaine vide
    exit 0;
    }
    
    #debut de page html
    sub print_html_header {
        print $cgi->start_html(
    			   -title=>$title,
    			   -style=>{-type=>'text/css',
    				    -media=>'screen',
    				    -src=>'../../style.css'
    				    }
    			   );
        print $in;
    }
    
    #fin de page html
    sub print_end {
            print $cgi->end_html;
    }
    
    #ecriture du contenu de mes FRAMES
    
    sub print_onglet{
        my $script_name = $cgi -> script_name;
        print "::::".$in."!!!"; #$in est vide depuis le FRAMESET
    }
    sub print_query{
        my $script_name = $cgi -> script_name;
        print "::::".$in."!!!"; #$in est vide depuis le FRAMESET
    }
    sub print_response{
        my $script_name = $cgi -> script_name;
        print "::::".$in."!!!"; #$in est vide depuis le FRAMESET
    }
    
    exit 0;
    apres avoir chercher sur la doc et les forum, et revus mon script je ne comprend ce que devien ma ma variable $in ??

    Est ce que quelqu'un pourrait m'eclairer ?
    Merci d'avance,

  2. #2
    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
    Tu n'as pas l'air de très bien comprendre comment marche les framesets ?
    En gros dans ton CGI tu reçois la requête initiale, pas de problème, tu mets ton paramètre dans $in (et dans $cgi_in je ne sais pas pourquoi, et tu crées deux objets CGI, je ne sais pas pourquoi non plus...), puis tu arrives à la création du frameset puis tu quittes le script. Le frameset que tu as renvoyé contient l'adresse du script dans toutes ses frames avec un chemin différent, donc le navigateur redemande le script, mais il s'agit d'une (de plusieurs) nouvelle exécution, et dans aucune des frame tu n'as transmis le moindre paramètre de requête (juste un paramètre de chemin), donc $in est affecté la valeur du paramètre "scip" pour cette requête, qui est vide...

    En bref le résultat n'a absolument rien d'étonnant.

    --
    Jedaï

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    d'accord, rien d'etonnant. dslé

    Mais comment on passe la variable en parametre dans la frame ? (si c'est possible) parce que la je vois pas.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Par défaut
    dslé. voici la reponse (parce que j'ai un peu lutter pour trouver) et ca fera un post pas trop inutile:

    reponse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        print <<FS
    	<HTML>
    	<HEAD><TITLE>$title</TITLE></HEAD>
    	<FRAMESET ROWS="9%,*" FRAMEBORDER="yes">
    	<FRAME NAME="onglet" SRC="$script_name/onglet?prout=$in" SCROLLING="auto">
    	<FRAMESET COLS="25,*" FRAMEBORDER="yes">
    	<FRAME NAME="query" SRC="$script_name/query?prout=$in" SCROLLING="auto">
    	<FRAME NAME="response" SRC="$script_name/response?prout=$in" SCROLLING="auto">
    	</FRAMESET>
    	</FRAMESET>
    	</HTML>
    FS
    	;

    lecture:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cgi -> url_param('prout')

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

Discussions similaires

  1. [jsp][servlet]pb recuperation de parametre
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 23
    Dernier message: 19/11/2008, 09h10
  2. Réponses: 6
    Dernier message: 27/02/2008, 09h51
  3. [CGI] passage et recuperation de parametre
    Par ankou82 dans le forum C
    Réponses: 3
    Dernier message: 11/05/2006, 12h33
  4. Réponses: 2
    Dernier message: 20/06/2005, 14h57
  5. [langage] procedure : recuperation de parametres
    Par K-ZimiR dans le forum Langage
    Réponses: 7
    Dernier message: 22/04/2004, 14h24

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