problems cgi ex cook book perl

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

  1. 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
    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};

    ## 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!\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\&nbsp;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\&nbsp;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&nbsp;:");
    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: ",textfield("Nom")),
    p ("Adresse: ",textfield("Adresse1")),
    p (" ",textfield("Adresse2")),
    p ("Ville: ",textfield("Ville")),
    p ("Code Postal: ",textfield("Code_postal")),
    p ("Pays: ",textfield("Pays")),
    p ("Telephone: ",textfield("Teléphone")),
    p ("Carte numéro: ",textfield("Carte")),
    p ("Expire en: ",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 euros", $chemises * 33 + $chaussures * 49.99);
    }

    sub vers_doc { submit (-NAME => ".Etat", -VALUE => shift) }
     
    john.swilting, Jan 14, 2007
    #1
    1. Advertising

  2. 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>
     
    RedGrittyBrick, Jan 14, 2007
    #2
    1. Advertising

  3. 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) }
     
    john.swilting, Jan 14, 2007
    #3
  4. 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
    #4
  5. On 01/14/2007 06:54 AM, 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
    > at /var/www/cgi-bin/vente.cgi line 24
    >
    > help help help
    > i am french
    > i am beginner of perl
    > help help help
    > [...]


    http://lists.cpan.org/showlist.cgi?name=perl-fr


    --
    Windows Vista and your freedom in conflict:
    http://techdirt.com/articles/20061019/102225.shtml
     
    Mumia W. (NOSPAM), Jan 14, 2007
    #5
  6. john.swilting <> wrote:

    > 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
    > at /var/www/cgi-bin/vente.cgi line 24
    >
    > help help help



    Pleading makes it *less* likely that you will get help.

    Have you seen the Posting Guidelines that are posted here frequently?


    > i am french



    How is that relevant?


    > die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};



    This line cannot produce the error message that you claim.

    We cannot help you if we do not get real information.



    [ snip 230 lines of code that are not needed to illustrate the problem ]

    --
    Tad McClellan SGML consulting
    Perl programming
    Fort Worth, Texas
     
    Tad McClellan, Jan 14, 2007
    #6
  7. john.swilting <> wrote:
    > RedGrittyBrick wrote:
    >> john.swilting wrote:



    >>> die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};


    >> 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.



    > I have correct the problemes of syntax



    You did not have a problem of syntax.


    > die "Pas d'écran pour $Ecran_actuel" unless $Etats{$Ecran_actuel};



    You did not make the suggested change either.


    --
    Tad McClellan SGML consulting
    Perl programming
    Fort Worth, Texas
     
    Tad McClellan, Jan 14, 2007
    #7
    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. Last Timer
    Replies:
    10
    Views:
    901
    Ryan Stewart
    Jan 2, 2005
  2. Adam

    Beginner Perl/CGI Book

    Adam, Jun 13, 2004, in forum: Perl Misc
    Replies:
    7
    Views:
    191
  3. PHP2

    Instant CGI/Perl book?

    PHP2, Oct 11, 2004, in forum: Perl Misc
    Replies:
    1
    Views:
    129
    Gregory Toomey
    Oct 11, 2004
  4. kath
    Replies:
    4
    Views:
    810
    J. Gleixner
    Apr 9, 2007
  5. yamas
    Replies:
    1
    Views:
    85
    Terry Reedy
    Feb 5, 2014
Loading...

Share This Page