#!/usr/bin/perl
############################################################################
# Version 3.0 du script gedcom
# Recherche sur colonne nom
# Interprétation des espaces
# Minimum trois caractères demandés
# Recherche dans un fichier gedcom
# Affichage limité à 25 caractères des lieux
###################################################################
# CETTE VERSION 1.02 EST LIBRE D'USAGE
####################################################################
# Routines à exécuter
&Acces;
&Recherche_bd($keys);
&Affichage;
# Acces aux données
sub Acces {
# lecture et décryptage des données du formulaire
read(STDIN, $save_string, $ENV{CONTENT_LENGTH}); # Yes- Use it
@prompts = split(/&/,$save_string);
foreach (@prompts) {
($name,$value) = split(/=/,$_);
$name =~ s/\%(..)/pack("c",hex($1))/ge;
$value =~ s/\%(..)/pack("c",hex($1))/ge;
$value =~ tr/A-Z/a-z/;
$fields{$name}=$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
# en cherchant dans la troisième colonne, celle des noms
open(MYFILE,"gedcom.csv");
while() {
# accede a chaque element
$in_line = $_;
# @field = split (/\;/,$line);
# $in_line = ($field[2]);
# 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("L'Index de vos patronymes\n");
print("\n");
print "\n";
# Génération du formulaire
# Vous devez éditer le chemin pour l'accès au repertoire
############VOUS POUVER CHANGER LE TEXTE ENTRE LES BALISES <
L'index de vos patronymes
Retour page précédente |
|
HEADFORM
################### FIN DES POSSIBILITES DE CHANGEMENTS ####################################################
# sortie du résultat sous forme de tableau
if ( $keys !~ /^[a-z]/ ) {
print "\n";
}
elsif ( length($keys) < 4 ) {
print "
La requête doit avoir au moins quatre caracteres.\n";
# résultat si la réponse n'existe pas
} else {
print "
";
if($k==0) {
print "Pas de réponse pour cette demande: ce nom $keys ne figure pas dans ma base de données.";
# donne le résultat
} else {
print <<"RESULT";
Resultat(s) de votre demande : $k |
Nom Prénom |
Date naissance |
Lieu naissance |
Date décès |
Lieu décès |
RESULT
for($i=0; $i <= $#found; $i++) {
($page, $nom, $indi, $daten, $lieun, $dated, $lieud )=split(/\;/,$found[$i]);
$indi =~ tr/\// /;
# LA LIGNE QUI SUIT BRIDE L'AFFICHAGE DU LIEU A 35 CARACTERES
# POUR PLUS DE LISIBILITE DANS LES TABLEAUX
$lieun2=substr($lieun,0,35);
$lieud2=substr($lieud,0,35);
print <<"RESULT2";
$indi |
$daten |
$lieun2 |
$dated |
$lieud2 |
RESULT2
}
print "
\n";
# MERCI DE GARDER LA LIGNE CI-DESSOUS OU ME DEMANDER SI VOUS SOUHAITEZ LA CHANGER
print " Librairie de la voûte lavoute.org\n";
}
}
}
# SI VOUS SOUHAITEZ RAJOUTER DU HTML APRES LE RESULTAT, VOUS POUVEZ
# LE FAIRE ENTRE CES DEUX BALISES <<"FIN"; ET FIN
print <<"FIN";
FIN
# END OF SCRIPT