#!G:/Prg_internet/Perl/bin/perl.exe
# cours 6
# Scripts-fr.com
# insertion et recherche dans une base de données mysql
#le nom de la base de données
$database="courscgi";
# le nom ou adresse ip du serveur mysql
$hostname="localhost";
# le port de mysql
$port="3306";
# le user a utiliser
$mysqluser="user";
# le mot de passe associé a cet utilisateur.
$mysqlpassword="passe";
#############################################
use CGI qw(:standard);
#use CGI::Carp qw(fatalsToBrowser);
eval('use DBI;');
$q = new CGI;
print $q->header();
# connexion DB en utilisant la fonction connect_db
# pour voir ce qu'elle fait, regardez plus bas ...
$dbh = &connect_db;
# récupération du contenu du formulaire
$action = $q->param('action');
$nom= $q->param('nom');
$prenom= $q->param('prenom');
$rue= $q->param('rue');
$no= $q->param('no');
$cp= $q->param('cp');
$localite= $q->param('localite');
$pays= $q->param('pays');
$keyword = $q->param('keyword');
if ($action eq "insert")
{ # il faut insérer dans la base de données
&Insertion;
# je prépare la requete SQL qui sera utilisée pour afficher le contenu de la base de données
$sql_rech = "select nom,prenom,rue,no,cp,localite,pays from personnes";
}
else
{ # pas insertion -> recherche sur critère
# on prépare une requete SQL qui ne va afficher que les enregistrement correspondants
$sql_rech = "select nom,prenom,rue,no,cp,localite,pays from personnes where nom like '%$keyword%' or prenom like '%$keyword%'";
}
# affiche le haut d'une page
print &html_haut;
# effectue la recherche avec la requete sql $sql_rech
&Recherche;
# affiche le bas de page html, avec le formulaire d'insertion
print &html_bas;
# déconnexion de la DB
$rc = &disconnect_db($dbh);
exit 0;
sub Insertion
{ # cette fonction prend les valeurs saisies par l'utilisateur et les insère dans la
# base de données
my ($sql, $rv);
# création de la requete SQL d'insertion dans la table personnes
$sql = "insert into personnes (nom,prenom,rue,no,cp,localite,pays) values
('$nom','$prenom','$rue','$no','$cp','$localite','$pays')";
# préparation et exécution de la requete sql
$sth = $dbh->prepare($sql) or &erreur("impossible de préparer la requete ($sql).".$dbh->errstr);
$rv = $sth->execute or &erreur("impossible d'exécuter la requete.".$sth->errstr);
return $rv;
}
sub Recherche
{
$sth = $dbh->prepare($sql_rech) or &erreur("impossible de préparer la requete ($sql_rech).".$dbh->errstr);
$rv = $sth->execute or &erreur("impossible d'exécuter la requete.".$sth->errstr);
# tant qu'il y a des enregistrements correspondants a la requete
# je les traite 1 par 1 et je mets le contenu de l'enregistrement courant
# dans le tableau @personne
# l'ordre des éléments dans ce tableau est le meme ordre que celui utilisé dans la requete
# de sélection (select statement)
while (@personne = $sth->fetchrow_array)
{ # je joins les éléments du tableau personne dans un chaine infos_personne
# ces éléments sont séparés par un ;
$infos_personne = join(";",@personne);
# tout simple, je ne fais qu'afficher
print "$infos_personne
\n";
}
}
sub html_haut
{
return <
Cours 6
Liste des membres :
FIN
}
sub html_bas
{
return <
Inbsertion d'un nouveau membre