J
john.swilting
john.swilting said:RedGrittyBrick said:You have used google to translate your error message from French into
English. You shouldn't do this. See below.
^^^^^^
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 qwstandard 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 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\ :        ",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é\ !");
  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) }
A friend ask me to do him a website of paintings.
I try to make this program work and will modify it for paintings.