Scripts-fr.com - l'Annuaire francophone des Scripts CGI ! -
CGI JavaScripts
Accueil du site
scripts
-Nouveautés
-Nos scripts
-Affichage d'images
-Bannières
-Bases de données
-Bavardage (chat)
-Boutique virtuelle
-Cartes postales
-Classement de sites
-Compteurs
-Cookies
-Dates, temps
-Divers
-Enchères
-Enquêtes / votes
-Fichiers logs
-Formulaires
-Forums
-Gestion de Faq's
-Gestion de site
-Gest. serveur web
-Jeux
-Librairies/modules
-Listes de diffusion
-Livres d'or
-Outils internet
-Pages nouveautés
-Petites annonces
-Portails / liens
-Protection/mot de passe
-Recherches
-Redirection
-Référencement
-Suggestion de sites
-Upload de fichiers
-Webmail
-Scripts hébergés

Apprendre
-Cours en ligne
-Livres
-La FAQ de Scripts-fr
-Autres liens
-Outils

Newslist
-Anciens numéros

Contact
-Voir notre livre d'or
-Remplir le livre d'or
-Le Forum d'aide
-A propos du site
-Proposer un script
-Infos publicité

Linker Scripts-fr !

Faîtes un lien (4,2 ko)
Bienvenue sur Scripts-fr.com
DBase + Perl
version imprimable


Dans beaucoup de cas stocker de l'information dans des fichiers textes peut suffire; mais il existe des cas ou la complexité des relations qui relient ces fichiers est telle qu'il vaut alors mieux utiliser une base de données que l'on peut interroger via du SQL.
Pour pouvoir tester cet exemple sur votre serveur il faut que DBI soit installé avec le module XBase. Pour savoir si c'est le cas renseignez vous auprès de votre hébergeur.

DBI est une interface base de données qui est indépendante de la base de données utilisée.
Cela signifie que moyennant très peu de modifications cet exemple peut être adapté pour fonctionner avec une base de données Oracle, Mysql, postgres, ...

Dans l'exemple nous avons une table categori avec les champs id_cat, nom_cat.

Voici maintenant le bout de script PERL qui permet d'afficher les différentes catégories sur une page html :
#!/usr/bin/perl
require "cgi-lib.pl";

# précise qu'il faut utiliser DBI
eval('use DBI;');

# défini dans quel répertoire se trouve(nt) le(s) fichier(s) de
# ma (mes) table(s)
$dbase_dir = "/home/rotule/www/annuaire";

# permet de spécifier le content type
print &PrintHeader;

# je spécifie ma requete en SQL normal. Pour plus d'infos sur le
# SQL, allez voir http://eric007.free.fr/sql/Introduction.htm (par
# exemple)
$sql_liste_cat = "select id_cat, nom_cat from categori order by nom_cat";

# J'effectue la connexion DB et si ca ne marche pas j'imprime un
# message d'erreur
my $dbh = DBI->connect("DBI:XBase:$dbase_dir")  
	or print "Connection a la DB impossible\n";
# Dans $dbh, j'ai maintenant l'identifiant de ma connexion

# en utilisant mon identifiant de la connexion, je prépare la requete
# SQL a effectuer. En cas d'erreur d'imprime un message
my $sth = $dbh->prepare($sql_liste_cat) 
	or print "prepare error :  $dbh->errstr()";

# On va maintenant exécuter a proprement parler la requete SQL (ou
# imprimer un message d'erreur)
$sth->execute() or print "execute error : $sth->errstr()";
$premier=1;

# $sth->fetchrow_array permet de récupérer 1 par 1 les différents
# enregistrements trouvés par la requete SQL.
# On copie le contenu de l'enregistrement dans le tableau @catégories
while (@categories = $sth->fetchrow_array)
{
# le if sert uniquement a afficher un titre si c'est notre premier
# passage dans la boucle
        if ($premier == 1)
        {       print "<hr>Liste des catégories : <br><br>\n";
                $premier = 0;
        }
        # je récupères la valeur des champs de cet enregistrement. Les
        # champs sont stockés dans le tableau, dans le même ordre que
        # ce que la requete SQL a indiqué.
        # $categories[0] contient donc id_cat
        # $categories[1] contient donc nom_cat
        ($id_cat, $nom_cat) = @categories;

        # Il ne reste plus qu'a les imprimer à l'écran
        print <<ENDHTML;
        $id_cat : $nom_cat<br>
ENDHTML

}

# Voila c'est finit on se déconnecte
$dbh->disconnect;
Remarques :
  • Ms-Access à du mal a exporter les caractères accentués vers DBase, ils vaut donc mieux les éviter.
  • En utilisant DBI, on utilise une couche d'abstraction entre le perl et la base de données physique. Si par après vous souhaitez passer à une base de données plus sérieuse, il n'y a que quelques lignes a changer : celles qui définissent a quelle base de données se connecter
  • Les commandes SQL supportées sont : select, delete, insert, update (+ create table et drop table mais je n'ai pas encore testé)

Exemple du script en fonctionnement :
<http://www.rotule.net/annuaire/demo.cgi>

© 1999 - 2011 Scripts-fr - Tous droits reservés - Location Serveur Virtuel en Belgique
blog photographie sportive - photographie de sports namur belgique
Pour tout commentaire, n'hésitez pas à contacter le webmaster

Contact !