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 données par un formulaire,


Sujet :

Web Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut [CGI] récupération de données par un formulaire,
    Bonjour,

    Je dispose d'une page Web, sur laquelle j'effectue des recherche suivant le mot que je rentre sur le formulaire (le formulaire possède une entrée unique)
    Je souhaiterais automatiser la génération du résultat, sans avoir à le faire manuellement.
    Le code source de la page est ci-dessous
    La page est généré lorsque je rentre un mot dans la zone d'entrée du formulaire:
    <input type=text name=term size=20 value=" le mot">
    au regard du code source (text/css) je pense qu'il s'agit d'un traitement faisant intervenir du XML.
    Lorsque je rentre ma requête, l'url ne change pas, les paramètres envoyés sont cachés.
    qui peut m'aider?

    Fabrice

    Le code:

    <html><head>
    <title> le titre </title>
    <style TYPE="text/css">
    <!--
    A {text-decoration:none;}
    A:hover {text-decoration:underline;}
    -->
    </style>
    </head>
    <body bgcolor=#FFFFFF onLoad="window.focus(); if(document.stst.term != null) document.stst.term.focus();">
    <form action="/chemin/" method="POST" target="_top" name="stst">

    <input type=hidden name=mkt value="fr">
    <input type=hidden name=lang value="fr_FR">
    <input type=text name=term size=20 value="">

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut complément
    à la fin du code source de la page il y a ces lignes de codes:

    </form>
    <script language="Javascript">
    var s_pageName = document.title;
    </script>
    <script language="Javascript" src="http://www.lesite/global/s_code_remote.js"></script>

    c du java, je n'arrive pas à comprendre comment le paramètre d'entrée qui me permet de générer ma page est transmis et comment automatiser cette tache?



    Citation Envoyé par piotr
    Bonjour,

    Je dispose d'une page Web, sur laquelle j'effectue des recherche suivant le mot que je rentre sur le formulaire (le formulaire possède une entrée unique)
    Je souhaiterais automatiser la génération du résultat, sans avoir à le faire manuellement.
    Le code source de la page est ci-dessous
    La page est généré lorsque je rentre un mot dans la zone d'entrée du formulaire:
    <input type=text name=term size=20 value=" le mot">
    au regard du code source (text/css) je pense qu'il s'agit d'un traitement faisant intervenir du XML.
    Lorsque je rentre ma requête, l'url ne change pas, les paramètres envoyés sont cachés.
    qui peut m'aider?

    Fabrice

    Le code:

    <html><head>
    <title> le titre </title>
    <style TYPE="text/css">
    <!--
    A {text-decoration:none;}
    A:hover {text-decoration:underline;}
    -->
    </style>
    </head>
    <body bgcolor=#FFFFFF onLoad="window.focus(); if(document.stst.term != null) document.stst.term.focus();">
    <form action="/chemin/" method="POST" target="_top" name="stst">

    <input type=hidden name=mkt value="fr">
    <input type=hidden name=lang value="fr_FR">
    <input type=text name=term size=20 value="">

  3. #3
    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
    Je ne suis pas sûr de comprendre ton problème ? C'est un formulaire en POST, c'est pour ça que l'URL ne change pas. Si ta question était d'automatiser la requête à partir de ton ordinateur, regarde du côté de LWP, il sait parfaitement faire les requêtes en POST.

    (d'un autre côté il pourrait également s'agir d'AJAX, mais si tu ne nous montre pas le code Javascript (et pas Java, les deux langages n'ont rien à voir !) il nous est difficile de nous prononcer)

    --
    Jedaï

  4. #4
    Membre habitué

    Inscrit en
    Janvier 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 188
    Points : 142
    Points
    142
    Par défaut
    cé pas du Java mais du JavaScript !!!
    rien à voir...

    cé un code que t'as récup je suppose...
    j'ai pas compris ce que tu veux faire...
    tu veux que l'utilisateur n'ai pas besoin de cliquer pour valider sa saisie ? c'est ça ? un peu bizarre...
    si cé ça tu peux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form name="form1" METHOD=POST action="http://pageDeRécupération.cgi">
        <input type="text" name="text1" value="" onChange="javascript:document.forms.form1.submit();">
    </form>
    arf... ouais en fait, ça doit plutot être ça que tu cherches :
    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
     
    use LWP::UserAgent; # Client html
    sub recupPage(){
        my ($text,$mkt,$lang)=@_;
        $mkt='fr' unless (defined($mkt));
        $lang='fr_FR' unless (defined($lang));
     
        my $http = HTTP::Request->new(POST => 'www.siteWeb.com');
        $http->content_type('application/x-www-form-urlencoded');
        $http->content("mkt=$mkt&lang=$lang&term=$text");
        my $res = $ua->request($http);
        if ($res->is_success){
            print $res->content;
        }
        else{
            print $res->status_line;
        }
        return 0;
    }
    cf ici

    $text, le premier param de la fonction est le mot de ta recherche
    à priori les deux autres params cachés (lang et mkt proviennent des variables d'environnement mais tu peux mettres celles là par défault)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    Merci pour le code, ça marche bien!
    par contre si je veux enregistrer le résultat avec getstore, j'ai essayé le code ci dessous, mais je n'ai aucun résultat!! est-ce que j'ai le bon objet?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     if ($res->is_success){
            print $res->content;
            getstore($res->content, "document.txt");
        }
        else{
            print $res->status_line;
        }

  6. #6
    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
    N'oublie pas de rajouter les balises [ code ] (sans les espaces, bouton # de l'éditeur) autour de ton code, sinon on perd la mise en page (par ailleurs nous sommes sur un forum, inutile donc de citer le message immédiatement avant le tien si ce n'est pas pour le commenter par petit bouts).

    getstore() n'a rien à voir avec ce que tu veux faire : il effectue la requête GET qu'on lui fournit en premier argument et stocke le résultat dans le fichier dont on lui fournit le nom en second argument. Toi ce que tu veux faire c'est écrire une chaîne de caractère dans un fichier, il faut t'y prendre ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     if ($res->is_success){
            print $res->content;
            open my $output, '>', 'document.txt' or die "$!\n";
            print $output $res->content;
     }
     else{
            print $res->status_line;
     }
    Pour plus de détails sur les entrées sortie en Perl, lis notre FAQ ou la doc Perl ('perldoc perlopentut' dans un shell par exemple).

    --
    Jedaï

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    merci pour le code, ça marche bien mais j'ai souvent le code 302 en retour à ma requête, ensuite au bout de 6 tentative j'ai accès aux données de ma requête. est-ce qu'il existe un temporisateur pour que le serveur puisse avoir le temps de me répondre? d'ou peut bien venir ce problème?

  8. #8
    Membre habitué

    Inscrit en
    Janvier 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 188
    Points : 142
    Points
    142
    Par défaut
    pour faire une tempo t'as : mais bon ça sert juste à perdre du temps... aucun besoin dans ton cas, l'attente est prévue entre l'envoie de la requete POST et la réponse.

    sinon, pour l'erreur 302, t'aurais pu tapper un truc style 'erreur 302 http' sous google, t'aurais vu ce que c'était...
    HTTP Error 302 - Moved temporarily

    Resolving 302 errors - general

    The 302 response from your Web server should always include an alternative URL to which redirection should occur. If it does, a Web browser will immediately retry the alternative URL. So you never actually see a 302 error in a Web browser, unless perhaps you have a corrupt redirection chain e.g. URL A redirects to URL B which in turn redirects back to URL A. If your client is not a Web browser, it should behave in the same way as a Web browser i.e. immediately retry the alternative URL.

    If the Web server does not return an alternative URL with the 302 response, then either the Web server sofware itself is defective or your Webmaster has not set up the URL redirection correctly.
    bref... dans ce cas, regarde dans l'entête ($res->head) il doit y avoir une autre url...
    sinon si tu dis que au bout de quelques essais ça passe :s met une boucle..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ( (!$res->is_success) && (nbTentative>0) ){
        tu tente de grab la page
        nbTentative--;
    }

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 68
    Points : 46
    Points
    46
    Par défaut
    Merci pour votre aide, ça marche bien comme ça.

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

Discussions similaires

  1. [MySQL] Récupération de données dans un formulaire via un select
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/12/2006, 17h41
  2. [AJAX] probleme de récupération de donnée par GET
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/06/2006, 17h00
  3. [Tableaux] Récupération des données d'un formulaire
    Par projetM dans le forum Langage
    Réponses: 3
    Dernier message: 22/05/2006, 00h01
  4. Réponses: 3
    Dernier message: 23/04/2006, 12h14
  5. Récupération des données d'un formulaire
    Par placenargac dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/02/2006, 15h10

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