Lorsqu'on utilise le Perl, un moyen très populaire d'effectuer des recherches dans une base de données, c'est d'utiliser la base de données MySQL.
Pour effectuer une recherche dans cette base de données à l'aide d'un formulaire, l'opération est simple mais n'est pas nécessairement à la porte du premier venu.
Tous d'abord commençons en supposant que nous avons une base de données MySQL appelé «mabasededonnes_db» dans lequel la table «cdmworkgroup» avec le contenu suivant :
Cin | WorkGroupId | Name_EN | Name_FR | Description | Status | CreateDate | CreateUserId | LastUpdate | UpdateUserId |
---|---|---|---|---|---|---|---|---|---|
000 | 0000023901 | Coder | Développement | Groupe de programmeur effectuant de la recherche et développement (R&D). | A | 2006/03/09 | SYSADM | 2006/03/09 | SYSADM |
000 | 0000023902 | Maintenance | Maintenance | Groupe maintenant les divers services réseaux, implantant les développements, maintenant l'état actuel du matériel et administratant les accès. | A | 2006/03/09 | SYSADM | 2006/03/09 | SYSADM |
000 | 0000023903 | Direction | Direction | Direction Groupe de travail s'occupant des divers orientations à prendre sur les projets et les produits. | I | 2006/03/09 | SYSADM | 2006/03/09 | SYSADM |
075 | 0000000068 | Test | Teste | Groupe désigné pour le contrôle de la Qualité | A | 2006/03/09 | STREMBLAY | 2006/03/09 | STREMBLAY |
Si on veut sortir par exemple un tableau HTML avec le nom français, anglais et la description dans le Cin valant 000, on aura un petit programme ressemblant à ceci :
- #!/bin/perl
-
- use CGI;
- use DBI();
-
- $Conn = DBI->connect("DBI:mysql:database=mabasededonnes_db;host=localhost","","",{'RaiseError' => 1});
- $html = new CGI;
- $sth = $Conn->prepare("SELECT * from cdmworkgroup where Cin='000'");
- $Result = $sth->execute;
-
- print $html->header;
- print "<TABLE Border=1 bordercolor=\"#000000\" CellSpacing=0>";
- print "<TR>";
- print "<TD><B>Nom francais</B></TD>";
- print "<TD><B>Nom anglais</B></TD>";
- print "<TD><B>Description</B></TD>";
- print "</TR>";
-
- while ($LigneCourante = $sth->fetchrow_hashref) {
- print "<TR>";
- print "<TD>".$LigneCourante->{Name_EN}."</TD>";
- print "<TD>".$LigneCourante->{Name_FR}."</TD>";
- print "<TD>".$LigneCourante->{Description}."</TD>";
- print "</TR>";
- }
-
- print "</TABLE>";
Maintenant dans le fichier «recherche.pl» suivant si on veut créer un formulaire demandant d'effectuer une recherche en fonction du CIN 000 ou 075, on aura le script :
- #!/bin/perl
-
- use CGI;
- use DBI();
-
- $html = new CGI;
- print $html->header;
-
- if($html->param('cmdAction') eq "Rechercher") {
- $Conn = DBI->connect("DBI:mysql:database=mabasededonnes_db;host=localhost","","",{'RaiseError' => 1});
- $sth = $Conn->prepare("SELECT * from cdmworkgroup where Cin='".$html->param('MonCIN')."'");
- $Result = $sth->execute;
- print "<TABLE Border=1 bordercolor=\"#000000\" CellSpacing=0>";
- print "<TR>";
- print "<TD><B>Nom francais</B></TD>";
- print "<TD><B>Nom anglais</B></TD>";
- print "<TD><B>Description</B></TD>";
- print "</TR>";
- while ($LigneCourante = $sth->fetchrow_hashref) {
- print "<TR>";
- print "<TD>".$LigneCourante->{"Name_FR"}."</TD>";
- print "<TD>".$LigneCourante->{"Name_EN"}."</TD>";
- print "<TD>".$LigneCourante->{"Description"}."</TD>";
- print "</TR>";
- }
- print "</TABLE>";
- } else {
- # Entrée du programme la première fois
- print "<form name=\"frmCurrEdit\" method=\"post\" action=\"recherche.pl\">";
- print "Votre CIN de recherche: ";
- print "<SELECT name=MonCIN>";
- print "<OPTION value=\"000\">000";
- print "<OPTION value=\"075\">075";
- print "</SELECT><BR>";
- print "<input class=bouton type=\"submit\" name=\"cmdAction\" value=\"Rechercher\">";
- print "</form>";
- }
L'exécution de script provoquera deux étapes d'exécutions, la première demandera le type de recherche comme suit :
Votre CIN de recherche:
|
Si l'utilisateur choisi «000» le résultat sera le suivant :
Nom francais | Nom anglais | Description |
---|---|---|
Développement | Coder | Groupe de programmeur effectuant de la recherche et développement (R&D). |
Maintenance | Maintenance | Groupe maintenant les divers services réseaux, implantant les développements, maintenant l'état actuel du matériel et administratant les accès. |
Direction | Direction | Direction Groupe de travail s'occupant des divers orientations à prendre sur les projets et les produits. |
Par contre, si l'utilisateur choisi «075» le résultat sera le suivant :
Nom francais | Nom anglais | Description |
---|---|---|
Test | Teste | Groupe désigné pour le contrôle de la Qualité |