#!/usr/bin/perl
##################################################################
# Version 3.0 du script chronologie
# Recherche sur colonne date
# Interprétation des espaces
# Minimum deux caractères demandés
###################################################################
# Recuperation depuis le formulaire méthode POST
&Acces;
# Recherche dans la base de données
&Recherche_bd($keys);
# Affichage du resultat
&Affichage;
# Routine de décodage du formulaire envoyé
sub Acces {
# acces au STDIN
read(STDIN, $save_string, $ENV{CONTENT_LENGTH}); # Yes- Use it
# dissocie la chaine de caracteres en une liste
@prompts = split(/&/,$save_string);
foreach (@prompts) {
($number,$value) = split(/=/,$_);
$number =~ s/\%(..)/pack("c",hex($1))/ge;
$value =~ s/\%(..)/pack("c",hex($1))/ge;
$value =~ tr/0-1-2-3-4-5-6-7-8-9/0-1-2-3-4-5-6-7-8-9/;
# cree une liste associative
$fields{$number}=$value;
}
# création de la variable pour les recherches
$keys = $fields{'keys'};
}
#######################################################################
sub Recherche_bd {
# dissocie les mots cles le code du symbole + est 2b
@search_key = split(/\x2b/,$keys);
$k =0;
#######################################################################
# accede au fichier contenant la database
open(MYFILE,"chronologie.csv");
while() {
# accede a chaque element
$line = $_;
@field = split (/\;/, $line);
$in_line = ($field[1]);
# uniformisation des cles de recherche
# en transformant tous les caracteres en minuscules
$in_line =~ tr/A-Z/a-z/;
$found = "yes";
foreach (@search_key) {
# cherche la cle dans l'element de l'annuaire
$pos_out = rindex($in_line,$_);
if ($pos_out < 0) {
$found = "no";
}
}
if ($found eq "yes") {
$found[$k] = $_;
$k = $k + 1;
}
}
close(MYFILE);
}
######################################################################
sub Affichage {
# entete HTTP
print("Content-Type: text/html\n\n");
# Génération du document HTML
print("Chronologie historique\n");
print("\n");
print "\n";
# Génération du formulaire
# Vous devez éditer le chemin pour l'accès au repertoire
############VOUS POUVER CHANGER ENTRE <
Chronologie historique
|
Entrer une date
|
|
Vous recherchez un livre
ici
|
|
HEADFORM
################### FIN DES CHANGEMENTS ####################################################
# sortie du résultat sous forme de tableau
if ( $keys !~ /^[0-1-2-3-4-5-6-7-8-9]/ ) {
print " \n";
}
elsif ( length($keys) < 2 ) {
print "
La requête doit avoir au moins deux caractères.\n";
# résultat si la réponse n'existe pas
} else {
print " ";
if($k==0) {
print " L'année $keys ne figure pas dans notre base.";
# donne le résultat
} else {
print <<"RESULT";
Vous avez $k événement(s) pour l'année $keys |
Jour/Mois |
Année |
Evenement |
Pays ou Région |
RESULT
for($i=0; $i <= $#found; $i++) {
($annee, $date, $evenement, $pays )=split(/;/,$found[$i]);
print <<"RESULT2";
$annee |
$date |
$evenement |
$pays |
RESULT2
}
print "
\n";
print " © Copyright 2000-06,Librairie de la Voûte Tous droits réservés Lavoute.org \n";
}
}
}
FIN DU SCRIPT