help me problems cgi

Discussion in 'Perl Misc' started by john.swilting, Jan 14, 2007.

  1. john.swilting wrote:

    > RedGrittyBrick wrote:
    >
    >> john.swilting wrote:
    >>> I started again the  example of cook book perl
    >>> chapter 19.14
    >>> He(It) does not walk(work) correctly can you m help to find the error
    >>> The error which appears it is Not of ecran for card

    >>
    >> You have used google to translate your error message from French into
    >> English. You shouldn't do this. See below.
    >>
    >>> at /var/www/cgi-bin/vente.cgi line 24
    >>>
    >>> help help help
    >>> i am french
    >>> i am beginner of perl
    >>> help help help
    >>>
    >>> #!/usr/bin/perl -w
    >>>
    >>> use strict;
    >>> use CGI qw:)standard escapeHTML);
    >>> use CGI::Carp qw(fatalsToBrowser);
    >>>
    >>> my %Etats;
    >>>
    >>> my $Ecran_actuel;
    >>>
    >>> ## hachage des documents et des fonctions
    >>>
    >>> %Etats = (
    >>>         'Défaut' =>\&document_de_garde,
    >>>         'Chemises' =>\&chemise,
    >>>         'Chaussures' =>\&chaussures,
    >>>         'Passage à la caisse' =>\&passage_a_la_caisse,
    >>>         'Carte' =>\&carte_de_credit,
    >>>         'Commande' =>\&commande,
    >>>         'Annnulation' =>\&document_de_garde,
    >>> );
    >>>
    >>> $Ecran_actuel = param(".Etat") || "Défaut";
    >>> die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};

    >>
    >> ^^^^^^
    >> That line is printing your error message - some French equivalent of
    >> "Not of ecran for card" which suggests that the user entered some
    >> variation of 'Carte.' or 'carte' or ' Carte'.
    >>
    >> I'd change that line to
    >>    die "Pas d'écran pour '$Ecran_actuel'" unless $Etats{$Ecran_actuel};
    >> so that you can clearly see leading spaces and other punctuation.
    >>
    >> <rest of program snipped>

    >
    > I have correct the problemes of syntax
    > But after the form card(map) he indicates me 0 euro of command(order)
    > I do not understand
    >
    >
    > help help
    >
    > #!/usr/bin/perl -w
    >
    > use strict;
    > use CGI qw:)standard escapeHTML);
    > use CGI::Carp qw(fatalsToBrowser);
    >
    > my %Etats;
    >
    > my $Ecran_actuel;
    >
    > ## hachage des documents et des fonctions
    >
    > %Etats = (
    >         'Défaut' =>\&document_de_garde,
    >         'Chemises' =>\&chemise,
    >         'Chaussures' =>\&chaussures,
    >         'Passage à la caisse' =>\&passage_a_la_caisse,
    >         'Carte' =>\&carte_de_credit,
    >         'Commande' =>\&commande,
    >         'Annnulation' =>\&document_de_garde,
    > );
    >
    > $Ecran_actuel = param(".Etat") || "Défaut";
    > die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};
    >
    > ## engendre le document courant
    >
    > en_tete_standard();
    >
    > while ( my ($nom_ecran,$fonction) = each %Etats){
    >         $fonction->($nom_ecran eq $Ecran_actuel);
    > }
    >
    > pied_de_page_standard();
    > exit;
    >
    > ########################################################################
    > ## fonctions d'en-tete, de pied de page, de menu #######################
    > ########################################################################
    >
    > sub en_tete_standard {
    >     print header(),
    >       start_html(-Title => "Chemises", -BGCOLOR=>"White");
    >     print start_form(); ##start_multipart_form()
    >                         ##s'il faut exporter des fichiers sur le reseau
    >     }
    >
    > sub pied_de_page_standard { print end_form(), end_html() }
    >
    > sub menu_boutique {
    >     print p(defaults("Vider mon caddie"),
    >             vers_doc("Chemises"),
    >             vers_doc("Chaussures"),
    >             vers_doc("Passage à la caisse"));
    >     }
    >
    > #######################################################################
    > ## sous-programmes pour chaque écran ##################################
    > #######################################################################
    >
    >
    > ## le document par defaut
    >
    > sub document_de_garde {
    >     my $actif = shift;
    >     return unless $actif;
    >    
    >     print "<H1>salut!</H1>\n";
    >     print "bienvenue dans notre magasin d'habillement\&nbsp;!\n",
    >     print "faites votre choix dans le menu ci-dessous.\n";
    >
    >     menu_boutique();
    > }
    >
    > ## document à partir duquel commander une chemise
    >
    > sub chemise {
    >     my $actif = shift;
    >     my @tailles = qw(XL L M S);
    >     my @couleurs = qw(Noire Blanche);
    >    
    >     my ($taille, $couleur, $compte) =
    >       (param("taille_chemise"), param("couleur_chemise"),
    >        param("nom_chemises"));
    >    
    >    ##verification des donnees reçus
    >     if ($compte) {
    >         $couleur = $couleurs[0]
    >           unless grep { $_ eq $couleur } @couleurs;
    >         $taille = $tailles[0]
    >           unless grep {$_ eq $taille } @tailles;
    >         param("couleur_chemise" , $couleur);
    >         param("taille_chemise" , $taille);
    >         }
    >    
    >     unless ( $actif ) {
    >         print hidden("taille_chemise") if $taille;
    >         print hidden("couleur_chemise") if $couleur;
    >         print hidden("nombre_chemises") if $compte;
    >         return;
    >         }
    >    
    >     print h1("chemises");
    >     print p("quelle chemise! cette petite merveille est\n","livree avec
    > toutes les options.doublure de luxe,\n",
    >             "finitions avec toutes les options. doublure de
    >             luxe\n","finitions en
    > coton, et un col à en avoir les\n",
    >             "Prix unitaire: 33.00 euros.");
    >
    >     print h2("options");
    >     print p("nombre ?",textfield("nombre_chemises"));
    >     print p("taille ?",popup_menu("taille_chemise",\@tailles ),
    >             "couleur ?", popup_menu("couleur_chemise",\@couleurs ));
    >    
    >     menu_boutique();
    >    
    >     }
    >
    >
    > ## document à partir duquel commander des chaussures
    >
    > sub chaussures {
    >     my $actif = shift;
    >     my @tailles = qw(35 36 37 38 39 40 41 42 43 44 45 46 47 48);
    >     my @couleurs = qw(Ivoire Noisette Ebene);
    >    
    >     my ( $taille, $couleur, $compte) =
    >       (param("taille_chaussure"), param("couleur_chaussures"),
    >        param("nombre_chaussures"));
    >    
    >     ##verification des donnees reçus
    >     if ( $compte ) {
    >         $couleur = $couleurs[0]
    >           unless grep { $_ eq $couleur } @couleurs;
    >         $taille = $tailles[0]
    >           unless grep { $_ eq $taille } @tailles;
    >         param("couleur_chaussures",$couleur);
    >         param("taille_chaussures", $taille);
    >         }
    >    
    >    
    > unless ( $actif ) {
    >     print hidden("taille_chaussures") if $taille;
    >     print hidden("couleur_chaussures") if $couleur;
    >     print hidden("nombre_chaussures") if $compte;
    >     return;
    >     }
    >    
    >     print h1("chaussures");
    >     print p("vous ne serez jamais aussi elegant que chausse de
    > ces\n", "souliers magnifiques\n",
    >             "prix unitaires: 49.99 euros.");
    >    
    >     print h2("options");
    >     print p("nombre de paires?", textfield("nombre_chaussures"));
    >     print p("pointure?", popup_menu("taille_chaussures",\@tailles));
    >     print p("teinte?",popup_menu("couleur_chaussures",\@couleurs));
    >    
    >     menu_boutique();
    >    
    >     }
    >
    > ## document qui affiche la commande actuelle en attente de comfirmation
    >
    > sub passage_a_la_caisse {
    >     my $actif = shift;
    >    
    >     return unless $actif;
    >    
    >     print h1("confirmation de la commande");
    >     print p("vous avez commande:");
    >     print texte_commande();
    >     print p("est-ce correct?\nn",
    >             "choissisez «Carte» pour regler ces\n",
    >             "objets, ou «chemises» ou\n",
    >             "«chaussures» pour continuer vos courses.");
    >     print p(vers_doc("Carte"),
    >             vers_doc("Chemises"),
    >             vers_doc("Chaussures"));
    >    
    >     }
    >
    > ## document pour ollecter les informations relatives à la carte de credit
    >
    > sub carte_de_credit {
    >     my $actif = shift;
    >     my @gadgets = qw(Nom Adresse1 Adresse2 Ville Code_postal Pats
    >     Telephone
    > Carte Expire_en);
    >    
    >     unless ( $actif ) {
    >         print map { hidden($_) } @gadgets;
    >         return;
    >         }
    >    
    >     print pre ( p ("Nom\&nbsp;:              ",textfield("Nom")),
    >                 p ("Adresse\&nbsp;:          ",textfield("Adresse1")),
    >                 p ("                         ",textfield("Adresse2")),
    >                 p ("Ville\&nbsp;:            ",textfield("Ville")),
    >                 p ("Code Postal\&nbsp;:      ",textfield("Code_postal")),
    >                 p ("Pays\&nbsp;:             ",textfield("Pays")),
    >                 p ("Telephone\&nbsp;:        ",textfield("Teléphone")),
    >                 p ("Carte numéro\&nbsp;:     ",textfield("Carte")),
    >                 p ("Expire en\&nbsp;:        ",textfield("Expire_en")));
    >    
    >     print p ( "Selectionner «Commande» pour commander\n",
    >               "ces objets. selectionner «Annulation»\n");
    >    
    >     print p ( vers_doc("Commande"), vers_doc("Annulation"));
    >     }
    >
    > ## document pour terminer une commande
    >
    > sub commande {
    >     my $actif = shift;
    >    
    >     unless ( $actif) {
    >         return;
    >         }
    >    
    >     ## ici on verifie les valeurs donnees pour la carte de credit
    >    
    >     print h1("Commandé\&nbsp;!");
    >     print p("vous avez commandé ce qui suit:");
    >     print texte_commande();
    >    
    >     print p (defaults ("Retour au debut"));
    >     }
    >
    > ## renvoie de l ' HTML pour la commande actuelle("vous avez ommande")
    >
    > sub texte_commande {
    >     my $html = '';
    >    
    >     if ( param ("nombre_chemises")) {
    >         $html .= p("vous avez commandé" , param("nombre_chemises"),
    >                    "chemises de taille", param("taille_chemise"),
    >                    " et de couleur " , param("couleur_chemise"),",");
    >         }
    >     if ( param ("nombre_chaussures")) {
    >         $html .= p("vous avez comandé",param("nombre_chaussures"),
    >                    "paires de chaussures de pointures" ,
    > param("taille_chaussures"),
    >                    " et de teinte ", param ("couleur_chaussures"),".");
    >         }
    >     $html = p("Rien!") unless $html;
    >     $html .= p("pour un prix total de ",calcule_prix());
    >     return $html;
    >     }
    >
    > sub calcule_prix {
    >     my $chemises = param("nombre_chemises") || 0 ;
    >     my $chaussures = param("nombre_chaussures") || 0;
    >     return sprintf("%.2f\&nbsp;euros", $chemises * 33 + $chaussures *
    > 49.99);
    >     }
    >
    > sub vers_doc { submit (-NAME => ".Etat", -VALUE => shift) }



    A friend ask me to do him a website of paintings.
    I try to make this program work and will modify it for paintings.
     
    john.swilting, Jan 14, 2007
    #1
    1. Advertising

  2. john.swilting wrote:

    > john.swilting wrote:
    >
    >> RedGrittyBrick wrote:
    >>
    >>> john.swilting wrote:
    >>>> I started again the  example of cook book perl
    >>>> chapter 19.14
    >>>> He(It) does not walk(work) correctly can you m help to find the error
    >>>> The error which appears it is Not of ecran for card
    >>>
    >>> You have used google to translate your error message from French into
    >>> English. You shouldn't do this. See below.
    >>>
    >>>> at /var/www/cgi-bin/vente.cgi line 24
    >>>>
    >>>> help help help
    >>>> i am french
    >>>> i am beginner of perl
    >>>> help help help
    >>>>
    >>>> #!/usr/bin/perl -w
    >>>>
    >>>> use strict;
    >>>> use CGI qw:)standard escapeHTML);
    >>>> use CGI::Carp qw(fatalsToBrowser);
    >>>>
    >>>> my %Etats;
    >>>>
    >>>> my $Ecran_actuel;
    >>>>
    >>>> ## hachage des documents et des fonctions
    >>>>
    >>>> %Etats = (
    >>>> 'Défaut' =>\&document_de_garde,
    >>>> 'Chemises' =>\&chemise,
    >>>> 'Chaussures' =>\&chaussures,
    >>>> 'Passage à la caisse' =>\&passage_a_la_caisse,
    >>>> 'Carte' =>\&carte_de_credit,
    >>>> 'Commande' =>\&commande,
    >>>> 'Annnulation' =>\&document_de_garde,
    >>>> );
    >>>>
    >>>> $Ecran_actuel = param(".Etat") || "Défaut";
    >>>> die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};
    >>>
    >>> ^^^^^^
    >>> That line is printing your error message - some French equivalent of
    >>> "Not of ecran for card" which suggests that the user entered some
    >>> variation of 'Carte.' or 'carte' or ' Carte'.
    >>>
    >>> I'd change that line to
    >>> die "Pas d'écran pour '$Ecran_actuel'" unless $Etats{$Ecran_actuel};
    >>> so that you can clearly see leading spaces and other punctuation.
    >>>
    >>> <rest of program snipped>

    >>
    >> I have correct the problemes of syntax
    >> But after the form card(map) he indicates me 0 euro of command(order)
    >> I do not understand
    >>
    >>
    >> help help
    >>
    >> #!/usr/bin/perl -w
    >>
    >> use strict;
    >> use CGI qw:)standard escapeHTML);
    >> use CGI::Carp qw(fatalsToBrowser);
    >>
    >> my %Etats;
    >>
    >> my $Ecran_actuel;
    >>
    >> ## hachage des documents et des fonctions
    >>
    >> %Etats = (
    >> 'Défaut' =>\&document_de_garde,
    >> 'Chemises' =>\&chemise,
    >> 'Chaussures' =>\&chaussures,
    >> 'Passage à la caisse' =>\&passage_a_la_caisse,
    >> 'Carte' =>\&carte_de_credit,
    >> 'Commande' =>\&commande,
    >> 'Annnulation' =>\&document_de_garde,
    >> );
    >>
    >> $Ecran_actuel = param(".Etat") || "Défaut";
    >> die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};
    >>
    >> ## engendre le document courant
    >>
    >> en_tete_standard();
    >>
    >> while ( my ($nom_ecran,$fonction) = each %Etats){
    >> $fonction->($nom_ecran eq $Ecran_actuel);
    >> }
    >>
    >> pied_de_page_standard();
    >> exit;
    >>
    >> ########################################################################
    >> ## fonctions d'en-tete, de pied de page, de menu #######################
    >> ########################################################################
    >>
    >> sub en_tete_standard {
    >> print header(),
    >> start_html(-Title => "Chemises", -BGCOLOR=>"White");
    >> print start_form(); ##start_multipart_form()
    >> ##s'il faut exporter des fichiers sur le reseau
    >> }
    >>
    >> sub pied_de_page_standard { print end_form(), end_html() }
    >>
    >> sub menu_boutique {
    >> print p(defaults("Vider mon caddie"),
    >> vers_doc("Chemises"),
    >> vers_doc("Chaussures"),
    >> vers_doc("Passage à la caisse"));
    >> }
    >>
    >> #######################################################################
    >> ## sous-programmes pour chaque écran ##################################
    >> #######################################################################
    >>
    >>
    >> ## le document par defaut
    >>
    >> sub document_de_garde {
    >> my $actif = shift;
    >> return unless $actif;
    >>
    >> print "<H1>salut!</H1>\n";
    >> print "bienvenue dans notre magasin d'habillement\&nbsp;!\n",
    >> print "faites votre choix dans le menu ci-dessous.\n";
    >>
    >> menu_boutique();
    >> }
    >>
    >> ## document à partir duquel commander une chemise
    >>
    >> sub chemise {
    >> my $actif = shift;
    >> my @tailles = qw(XL L M S);
    >> my @couleurs = qw(Noire Blanche);
    >>
    >> my ($taille, $couleur, $compte) =
    >> (param("taille_chemise"), param("couleur_chemise"),
    >> param("nom_chemises"));
    >>
    >> ##verification des donnees reçus
    >> if ($compte) {
    >> $couleur = $couleurs[0]
    >> unless grep { $_ eq $couleur } @couleurs;
    >> $taille = $tailles[0]
    >> unless grep {$_ eq $taille } @tailles;
    >> param("couleur_chemise" , $couleur);
    >> param("taille_chemise" , $taille);
    >> }
    >>
    >> unless ( $actif ) {
    >> print hidden("taille_chemise") if $taille;
    >> print hidden("couleur_chemise") if $couleur;
    >> print hidden("nombre_chemises") if $compte;
    >> return;
    >> }
    >>
    >> print h1("chemises");
    >> print p("quelle chemise! cette petite merveille est\n","livree avec
    >> toutes les options.doublure de luxe,\n",
    >> "finitions avec toutes les options. doublure de
    >> luxe\n","finitions en
    >> coton, et un col à en avoir les\n",
    >> "Prix unitaire: 33.00 euros.");
    >>
    >> print h2("options");
    >> print p("nombre ?",textfield("nombre_chemises"));
    >> print p("taille ?",popup_menu("taille_chemise",\@tailles ),
    >> "couleur ?", popup_menu("couleur_chemise",\@couleurs ));
    >>
    >> menu_boutique();
    >>
    >> }
    >>
    >>
    >> ## document à partir duquel commander des chaussures
    >>
    >> sub chaussures {
    >> my $actif = shift;
    >> my @tailles = qw(35 36 37 38 39 40 41 42 43 44 45 46 47 48);
    >> my @couleurs = qw(Ivoire Noisette Ebene);
    >>
    >> my ( $taille, $couleur, $compte) =
    >> (param("taille_chaussure"), param("couleur_chaussures"),
    >> param("nombre_chaussures"));
    >>
    >> ##verification des donnees reçus
    >> if ( $compte ) {
    >> $couleur = $couleurs[0]
    >> unless grep { $_ eq $couleur } @couleurs;
    >> $taille = $tailles[0]
    >> unless grep { $_ eq $taille } @tailles;
    >> param("couleur_chaussures",$couleur);
    >> param("taille_chaussures", $taille);
    >> }
    >>
    >>
    >> unless ( $actif ) {
    >> print hidden("taille_chaussures") if $taille;
    >> print hidden("couleur_chaussures") if $couleur;
    >> print hidden("nombre_chaussures") if $compte;
    >> return;
    >> }
    >>
    >> print h1("chaussures");
    >> print p("vous ne serez jamais aussi elegant que chausse de
    >> ces\n", "souliers magnifiques\n",
    >> "prix unitaires: 49.99 euros.");
    >>
    >> print h2("options");
    >> print p("nombre de paires?", textfield("nombre_chaussures"));
    >> print p("pointure?", popup_menu("taille_chaussures",\@tailles));
    >> print p("teinte?",popup_menu("couleur_chaussures",\@couleurs));
    >>
    >> menu_boutique();
    >>
    >> }
    >>
    >> ## document qui affiche la commande actuelle en attente de comfirmation
    >>
    >> sub passage_a_la_caisse {
    >> my $actif = shift;
    >>
    >> return unless $actif;
    >>
    >> print h1("confirmation de la commande");
    >> print p("vous avez commande:");
    >> print texte_commande();
    >> print p("est-ce correct?\nn",
    >> "choissisez «Carte» pour regler ces\n",
    >> "objets, ou «chemises» ou\n",
    >> "«chaussures» pour continuer vos courses.");
    >> print p(vers_doc("Carte"),
    >> vers_doc("Chemises"),
    >> vers_doc("Chaussures"));
    >>
    >> }
    >>
    >> ## document pour ollecter les informations relatives à la carte de credit
    >>
    >> sub carte_de_credit {
    >> my $actif = shift;
    >> my @gadgets = qw(Nom Adresse1 Adresse2 Ville Code_postal Pats
    >> Telephone
    >> Carte Expire_en);
    >>
    >> unless ( $actif ) {
    >> print map { hidden($_) } @gadgets;
    >> return;
    >> }
    >>
    >> print pre ( p ("Nom\&nbsp;:              ",textfield("Nom")),
    >> p ("Adresse\&nbsp;:          ",textfield("Adresse1")),
    >> p ("                         ",textfield("Adresse2")),
    >> p ("Ville\&nbsp;:            ",textfield("Ville")),
    >> p ("Code Postal\&nbsp;:      ",textfield("Code_postal")),
    >> p ("Pays\&nbsp;:             ",textfield("Pays")),
    >> p ("Telephone\&nbsp;:        ",textfield("Teléphone")),
    >> p ("Carte numéro\&nbsp;:     ",textfield("Carte")),
    >> p ("Expire en\&nbsp;:        ",textfield("Expire_en")));
    >>
    >> print p ( "Selectionner «Commande» pour commander\n",
    >> "ces objets. selectionner «Annulation»\n");
    >>
    >> print p ( vers_doc("Commande"), vers_doc("Annulation"));
    >> }
    >>
    >> ## document pour terminer une commande
    >>
    >> sub commande {
    >> my $actif = shift;
    >>
    >> unless ( $actif) {
    >> return;
    >> }
    >>
    >> ## ici on verifie les valeurs donnees pour la carte de credit
    >>
    >> print h1("Commandé\&nbsp;!");
    >> print p("vous avez commandé ce qui suit:");
    >> print texte_commande();
    >>
    >> print p (defaults ("Retour au debut"));
    >> }
    >>
    >> ## renvoie de l ' HTML pour la commande actuelle("vous avez ommande")
    >>
    >> sub texte_commande {
    >> my $html = '';
    >>
    >> if ( param ("nombre_chemises")) {
    >> $html .= p("vous avez commandé" , param("nombre_chemises"),
    >> "chemises de taille", param("taille_chemise"),
    >> " et de couleur " , param("couleur_chemise"),",");
    >> }
    >> if ( param ("nombre_chaussures")) {
    >> $html .= p("vous avez comandé",param("nombre_chaussures"),
    >> "paires de chaussures de pointures" ,
    >> param("taille_chaussures"),
    >> " et de teinte ", param ("couleur_chaussures"),".");
    >> }
    >> $html = p("Rien!") unless $html;
    >> $html .= p("pour un prix total de ",calcule_prix());
    >> return $html;
    >> }
    >>
    >> sub calcule_prix {
    >> my $chemises = param("nombre_chemises") || 0 ;
    >> my $chaussures = param("nombre_chaussures") || 0;
    >> return sprintf("%.2f\&nbsp;euros", $chemises * 33 + $chaussures *
    >> 49.99);
    >> }
    >>
    >> sub vers_doc { submit (-NAME => ".Etat", -VALUE => shift) }

    >
    >
    > A friend ask me to do him a website of paintings.
    > I try to make this program work and will modify it for paintings.


    That walks(works) for shoes not for shirts
     
    john.swilting, Jan 14, 2007
    #2
    1. Advertising

  3. john.swilting wrote:

    > john.swilting wrote:
    >
    >> RedGrittyBrick wrote:
    >>
    >>> john.swilting wrote:
    >>>> I started again the  example of cook book perl
    >>>> chapter 19.14
    >>>> He(It) does not walk(work) correctly can you m help to find the error
    >>>> The error which appears it is Not of ecran for card
    >>>
    >>> You have used google to translate your error message from French into
    >>> English. You shouldn't do this. See below.
    >>>
    >>>> at /var/www/cgi-bin/vente.cgi line 24
    >>>>
    >>>> help help help
    >>>> i am french
    >>>> i am beginner of perl
    >>>> help help help
    >>>>
    >>>> #!/usr/bin/perl -w
    >>>>
    >>>> use strict;
    >>>> use CGI qw:)standard escapeHTML);
    >>>> use CGI::Carp qw(fatalsToBrowser);
    >>>>
    >>>> my %Etats;
    >>>>
    >>>> my $Ecran_actuel;
    >>>>
    >>>> ## hachage des documents et des fonctions
    >>>>
    >>>> %Etats = (
    >>>> 'Défaut' =>\&document_de_garde,
    >>>> 'Chemises' =>\&chemise,
    >>>> 'Chaussures' =>\&chaussures,
    >>>> 'Passage à la caisse' =>\&passage_a_la_caisse,
    >>>> 'Carte' =>\&carte_de_credit,
    >>>> 'Commande' =>\&commande,
    >>>> 'Annnulation' =>\&document_de_garde,
    >>>> );
    >>>>
    >>>> $Ecran_actuel = param(".Etat") || "Défaut";
    >>>> die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};
    >>>
    >>> ^^^^^^
    >>> That line is printing your error message - some French equivalent of
    >>> "Not of ecran for card" which suggests that the user entered some
    >>> variation of 'Carte.' or 'carte' or ' Carte'.
    >>>
    >>> I'd change that line to
    >>> die "Pas d'écran pour '$Ecran_actuel'" unless $Etats{$Ecran_actuel};
    >>> so that you can clearly see leading spaces and other punctuation.
    >>>
    >>> <rest of program snipped>

    >>
    >> I have correct the problemes of syntax
    >> But after the form card(map) he indicates me 0 euro of command(order)
    >> I do not understand
    >>
    >>
    >> help help
    >>
    >> #!/usr/bin/perl -w
    >>
    >> use strict;
    >> use CGI qw:)standard escapeHTML);
    >> use CGI::Carp qw(fatalsToBrowser);
    >>
    >> my %Etats;
    >>
    >> my $Ecran_actuel;
    >>
    >> ## hachage des documents et des fonctions
    >>
    >> %Etats = (
    >> 'Défaut' =>\&document_de_garde,
    >> 'Chemises' =>\&chemise,
    >> 'Chaussures' =>\&chaussures,
    >> 'Passage à la caisse' =>\&passage_a_la_caisse,
    >> 'Carte' =>\&carte_de_credit,
    >> 'Commande' =>\&commande,
    >> 'Annnulation' =>\&document_de_garde,
    >> );
    >>
    >> $Ecran_actuel = param(".Etat") || "Défaut";
    >> die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};
    >>
    >> ## engendre le document courant
    >>
    >> en_tete_standard();
    >>
    >> while ( my ($nom_ecran,$fonction) = each %Etats){
    >> $fonction->($nom_ecran eq $Ecran_actuel);
    >> }
    >>
    >> pied_de_page_standard();
    >> exit;
    >>
    >> ########################################################################
    >> ## fonctions d'en-tete, de pied de page, de menu #######################
    >> ########################################################################
    >>
    >> sub en_tete_standard {
    >> print header(),
    >> start_html(-Title => "Chemises", -BGCOLOR=>"White");
    >> print start_form(); ##start_multipart_form()
    >> ##s'il faut exporter des fichiers sur le reseau
    >> }
    >>
    >> sub pied_de_page_standard { print end_form(), end_html() }
    >>
    >> sub menu_boutique {
    >> print p(defaults("Vider mon caddie"),
    >> vers_doc("Chemises"),
    >> vers_doc("Chaussures"),
    >> vers_doc("Passage à la caisse"));
    >> }
    >>
    >> #######################################################################
    >> ## sous-programmes pour chaque écran ##################################
    >> #######################################################################
    >>
    >>
    >> ## le document par defaut
    >>
    >> sub document_de_garde {
    >> my $actif = shift;
    >> return unless $actif;
    >>
    >> print "<H1>salut!</H1>\n";
    >> print "bienvenue dans notre magasin d'habillement\&nbsp;!\n",
    >> print "faites votre choix dans le menu ci-dessous.\n";
    >>
    >> menu_boutique();
    >> }
    >>
    >> ## document à partir duquel commander une chemise
    >>
    >> sub chemise {
    >> my $actif = shift;
    >> my @tailles = qw(XL L M S);
    >> my @couleurs = qw(Noire Blanche);
    >>
    >> my ($taille, $couleur, $compte) =
    >> (param("taille_chemise"), param("couleur_chemise"),
    >> param("nom_chemises"));
    >>
    >> ##verification des donnees reçus
    >> if ($compte) {
    >> $couleur = $couleurs[0]
    >> unless grep { $_ eq $couleur } @couleurs;
    >> $taille = $tailles[0]
    >> unless grep {$_ eq $taille } @tailles;
    >> param("couleur_chemise" , $couleur);
    >> param("taille_chemise" , $taille);
    >> }
    >>
    >> unless ( $actif ) {
    >> print hidden("taille_chemise") if $taille;
    >> print hidden("couleur_chemise") if $couleur;
    >> print hidden("nombre_chemises") if $compte;
    >> return;
    >> }
    >>
    >> print h1("chemises");
    >> print p("quelle chemise! cette petite merveille est\n","livree avec
    >> toutes les options.doublure de luxe,\n",
    >> "finitions avec toutes les options. doublure de
    >> luxe\n","finitions en
    >> coton, et un col à en avoir les\n",
    >> "Prix unitaire: 33.00 euros.");
    >>
    >> print h2("options");
    >> print p("nombre ?",textfield("nombre_chemises"));
    >> print p("taille ?",popup_menu("taille_chemise",\@tailles ),
    >> "couleur ?", popup_menu("couleur_chemise",\@couleurs ));
    >>
    >> menu_boutique();
    >>
    >> }
    >>
    >>
    >> ## document à partir duquel commander des chaussures
    >>
    >> sub chaussures {
    >> my $actif = shift;
    >> my @tailles = qw(35 36 37 38 39 40 41 42 43 44 45 46 47 48);
    >> my @couleurs = qw(Ivoire Noisette Ebene);
    >>
    >> my ( $taille, $couleur, $compte) =
    >> (param("taille_chaussure"), param("couleur_chaussures"),
    >> param("nombre_chaussures"));
    >>
    >> ##verification des donnees reçus
    >> if ( $compte ) {
    >> $couleur = $couleurs[0]
    >> unless grep { $_ eq $couleur } @couleurs;
    >> $taille = $tailles[0]
    >> unless grep { $_ eq $taille } @tailles;
    >> param("couleur_chaussures",$couleur);
    >> param("taille_chaussures", $taille);
    >> }
    >>
    >>
    >> unless ( $actif ) {
    >> print hidden("taille_chaussures") if $taille;
    >> print hidden("couleur_chaussures") if $couleur;
    >> print hidden("nombre_chaussures") if $compte;
    >> return;
    >> }
    >>
    >> print h1("chaussures");
    >> print p("vous ne serez jamais aussi elegant que chausse de
    >> ces\n", "souliers magnifiques\n",
    >> "prix unitaires: 49.99 euros.");
    >>
    >> print h2("options");
    >> print p("nombre de paires?", textfield("nombre_chaussures"));
    >> print p("pointure?", popup_menu("taille_chaussures",\@tailles));
    >> print p("teinte?",popup_menu("couleur_chaussures",\@couleurs));
    >>
    >> menu_boutique();
    >>
    >> }
    >>
    >> ## document qui affiche la commande actuelle en attente de comfirmation
    >>
    >> sub passage_a_la_caisse {
    >> my $actif = shift;
    >>
    >> return unless $actif;
    >>
    >> print h1("confirmation de la commande");
    >> print p("vous avez commande:");
    >> print texte_commande();
    >> print p("est-ce correct?\nn",
    >> "choissisez «Carte» pour regler ces\n",
    >> "objets, ou «chemises» ou\n",
    >> "«chaussures» pour continuer vos courses.");
    >> print p(vers_doc("Carte"),
    >> vers_doc("Chemises"),
    >> vers_doc("Chaussures"));
    >>
    >> }
    >>
    >> ## document pour ollecter les informations relatives à la carte de credit
    >>
    >> sub carte_de_credit {
    >> my $actif = shift;
    >> my @gadgets = qw(Nom Adresse1 Adresse2 Ville Code_postal Pats
    >> Telephone
    >> Carte Expire_en);
    >>
    >> unless ( $actif ) {
    >> print map { hidden($_) } @gadgets;
    >> return;
    >> }
    >>
    >> print pre ( p ("Nom\&nbsp;:              ",textfield("Nom")),
    >> p ("Adresse\&nbsp;:          ",textfield("Adresse1")),
    >> p ("                         ",textfield("Adresse2")),
    >> p ("Ville\&nbsp;:            ",textfield("Ville")),
    >> p ("Code Postal\&nbsp;:      ",textfield("Code_postal")),
    >> p ("Pays\&nbsp;:             ",textfield("Pays")),
    >> p ("Telephone\&nbsp;:        ",textfield("Teléphone")),
    >> p ("Carte numéro\&nbsp;:     ",textfield("Carte")),
    >> p ("Expire en\&nbsp;:        ",textfield("Expire_en")));
    >>
    >> print p ( "Selectionner «Commande» pour commander\n",
    >> "ces objets. selectionner «Annulation»\n");
    >>
    >> print p ( vers_doc("Commande"), vers_doc("Annulation"));
    >> }
    >>
    >> ## document pour terminer une commande
    >>
    >> sub commande {
    >> my $actif = shift;
    >>
    >> unless ( $actif) {
    >> return;
    >> }
    >>
    >> ## ici on verifie les valeurs donnees pour la carte de credit
    >>
    >> print h1("Commandé\&nbsp;!");
    >> print p("vous avez commandé ce qui suit:");
    >> print texte_commande();
    >>
    >> print p (defaults ("Retour au debut"));
    >> }
    >>
    >> ## renvoie de l ' HTML pour la commande actuelle("vous avez ommande")
    >>
    >> sub texte_commande {
    >> my $html = '';
    >>
    >> if ( param ("nombre_chemises")) {
    >> $html .= p("vous avez commandé" , param("nombre_chemises"),
    >> "chemises de taille", param("taille_chemise"),
    >> " et de couleur " , param("couleur_chemise"),",");
    >> }
    >> if ( param ("nombre_chaussures")) {
    >> $html .= p("vous avez comandé",param("nombre_chaussures"),
    >> "paires de chaussures de pointures" ,
    >> param("taille_chaussures"),
    >> " et de teinte ", param ("couleur_chaussures"),".");
    >> }
    >> $html = p("Rien!") unless $html;
    >> $html .= p("pour un prix total de ",calcule_prix());
    >> return $html;
    >> }
    >>
    >> sub calcule_prix {
    >> my $chemises = param("nombre_chemises") || 0 ;
    >> my $chaussures = param("nombre_chaussures") || 0;
    >> return sprintf("%.2f\&nbsp;euros", $chemises * 33 + $chaussures *
    >> 49.99);
    >> }
    >>
    >> sub vers_doc { submit (-NAME => ".Etat", -VALUE => shift) }

    >
    >
    > A friend ask me to do him a website of paintings.
    > I try to make this program work and will modify it for paintings.


    its ok

    problems syntax
    perl is permissive

    sorry for flood
    my name is serge
    i am french
     
    john.swilting, Jan 14, 2007
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Jürgen Exner

    Re: CGI Perl "use CGI" statement fail

    Jürgen Exner, Jul 31, 2003, in forum: Perl
    Replies:
    0
    Views:
    1,513
    Jürgen Exner
    Jul 31, 2003
  2. Shailan
    Replies:
    2
    Views:
    1,096
    Shailan
    Dec 15, 2003
  3. John Smith
    Replies:
    0
    Views:
    3,189
    John Smith
    May 15, 2006
  4. LarsenMTL
    Replies:
    4
    Views:
    799
    Eric Walstad
    Nov 4, 2004
  5. Professor Chen
    Replies:
    0
    Views:
    230
    Professor Chen
    Feb 6, 2006
Loading...

Share This Page