Correction du TP Long Php/Mysql

 

MySql seul en ligne de commande

Création de la table PERSI


 drop   table if exists PERSI ;
 create table PERSI (
   nomPers varchar(45) ,
   numServ int(3)
 ) ; # fin de create

Fichier-texte correspondant creePERSI.mysql

Exemples d'insertion dans la table PERSI


insert into PERSI  (nomPers,numServ) values ("Dupond",1) ;
insert into PERSI  (nomPers,numServ) values ("Durant",2) ;
insert into PERSI  (nomPers,numServ) values ("Bricedenice",1) ;
insert into PERSI  (nomPers,numServ) values ("Durand",2) ;
insert into PERSI  (nomPers,numServ) values ("Duchemin",2) ;

Fichier-texte correspondant rempPERSI.mysql

Exemples d'interrogation de la table PERSI


select *       from PERSI ;
select nomPers from PERSI ;

select distinct(numServ) from PERSI ;

select nomPers, numServ
       from PERSI
       order by numServ,nomPers ;

select numServ,count(numServ)," personnnes "
       from PERSI
       group by numServ
       order by numServ ;


Fichier-texte correspondant intePERSI.mysql

Html/Php/MySql en interrogation

Comptage du nombre de personnes


     <?

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req1 = " select count(*) from PERSI" ;
     $res1 = mysql_query($req1) ;
     $lir1 = mysql_fetch_array($res1) ;
     $nb   = $lir1["count(*)"] ;

     echo " il y a $nb personnes en tout\n<p>" ;

     ?>


Test du programme cntePERSI.php

Affichage des personnes par nom



     <?

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req2 = " select nomPers from PERSI order by nomPers " ;
     $res2 = mysql_query($req2) ;

     print "Liste alphabétique numérotée des personnes\n" ;
     print "<table>\n" ;
     print "<tr><th align=\"right\">Personne</th><th align=\"left\">  Nom</th></tr>\n" ;
     $nbp = 0 ;
     while ($lir2= mysql_fetch_array($res2)) { ;
        $nbp++ ;
        $nom   = $lir2["nomPers"] ;
        print "<tr><td align=\"right\">$nbp</td><td>  $nom</td></tr>\n" ;
     } ; # fin de tant que
     print "</table>\n" ;

     ?>

Test du programme nomsPERSI.php

Affichage des personnes par numéro de service



     <?

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req3 = " select numServ, nomPers from PERSI order by numServ " ;
     $res3 = mysql_query($req3) ;

     print "Liste par service avec comptage des personnes \n" ;
     print "<table>\n" ;
     print "<tr>\n" ;
     print "<th align=\"right\">Service</th>" ;
     print "<th align=\"right\">Personne</th><th align=\"left\">  Nom</th></tr>\n" ;
     $oserv = 0 ;
     $nbps = 0 ;
     while ($lir3= mysql_fetch_array($res3)) { ;
        $srv   = $lir3["numServ"] ;
        if ($srv==$oserv) { $nbps++ ; } else { $nbps = 1 ; } ;
        $nom   = $lir3["nomPers"] ;
        print "<tr>";
        print "<td align=\"right\">$srv</td>" ;
        print "<td align=\"right\">$nbps<td>  $nom</td></tr>\n" ;
        $oserv = $srv ;
     } ; # fin de tant que
     print "</table>\n" ;

     ?>

Test du programme servPERSI.php

Html/Php/MySql en mise à jour

Création de la table SERVI


     <?

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req = " drop   table if exists SERVI " ;
     $res = mysql_query($req) ;

     $req =  "" ;
     $req .= " create table SERVI (     " ;
     $req .= "    numServ int(3),       " ;
     $req .= "    nomServ varchar(45)   " ;
     $req .= " )                        " ;

     $res = mysql_query($req) ;

     if ($res==1) {
        echo "la table SERVI a été crée.</h2>" ;
     } else {
        echo "erreur de création pour la table SERVI </h2>" ;
     } ; # fin de si

     ?>

Test du programme creeSERVI.php

Remplissage de la table SERVI sans formulaire


     <?

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req = "insert into SERVI  (numServ,nomServ) values (1,\"Gestion du Personnel\") " ;
     $res = mysql_query($req) ;
     $res = mysql_query("insert into SERVI  (numServ,nomServ) values (2,\"Achats\")") ;

     print " en principe la table SERVI a été remplie " ;

     ?>

Test du programme rempSERVI.php

Remplissage de la table SERVI avec formulaire


<?

# début du formulaire

print "<form action=\"rempSERVIf1.php\" method=\"post\">\n" ;
print "<table>\n" ;

print "<tr>\n"  ;
print "<td>\n"  ;
print "Nom \n"  ;
print "</td>\n" ;
print "<td>\n"  ;
print "<input type=\"text\" name=\"nom\">\n" ;
print "</td>\n" ;
print "</tr>\n" ;

print "<tr>\n" ;
print "<td>\n" ;
print "Service \n";
print "</td>\n" ;
print "<td>\n" ;
print "<input type=\"text\" name=\"srv\">\n" ;
print "</td>\n" ;
print "</tr>\n" ;

# fin du formulaire

print "<tr>" ;
print "<td>" ;
print "</td>" ;
print "<td align=\"right\">" ;
print "<input type=\"submit\" value=\" envoi \">" ;
print "</td>" ;
print "</tr>" ;

print "</table>" ;
print "</form>";


?>

Test du programme rempSERVIf.php Voici le texte du programme appelé par le formulaire :


     <?

     $lenom = $_POST["nom"] ;
     $lesrv = $_POST["srv"] ;

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $res = mysql_query("insert into PERSI  (numServ,nomPers) values ($lesrv,\"$lenom\")") ;

     print " suite au formulaire, j'ai ajouté dans la table PERSI les informations " ;
     print "   nom=$lenom num=$lesrv \n ";


     ?>

Remplissage de la table PERSI avec formulaire et liste déroulante



     <?

     # début du formulaire

     print "<form action=\"remplitSERVIff.php\" method=\"post\"\>\n" ;
     print "<table>\n" ;

     print "<tr>\n"  ;
     print "<td>\n"  ;
     print "Nom \n"  ;
     print "</td>\n" ;
     print "<td>\n"  ;
     print "<input type=\"text\" name=\"nom\">\n" ;
     print "</td>\n" ;
     print "</tr>\n" ;

     # recherche des services,
     # stockage dans un tableau associatif
     # préparation de la liste déroulante

     print "<tr>\n" ;
     print "<td>\n" ;
     print "Service \n";
     print "</td>\n" ;
     print "<td>\n" ;
     print "<select name=\"serv\">\n" ;

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req = "select numServ, nomServ from SERVI " ;
     $res = mysql_query($req) ;

     while ($lr = mysql_fetch_array($res)) {
       $nums = $lr["numServ"] ;
       $noms = $lr["nomServ"] ;
       $tnum[$noms] = $nums ;
       print "<option>$noms\n" ;
     } ; # fin de tant que
     print "</select>\n" ;
     print "</td>\n" ;
     print "</tr>\n" ;

     # fin du formulaire

     print "<tr>" ;
     print "<td>" ;
     print "</td>" ;
     print "<td align=\"right\">" ;
     print "<input type=\"submit\" value=\" envoi \">" ;
     print "</td>" ;
     print "</tr>" ;

     print "</table>" ;
     print "</form>";


     ?>


Test du programme rempPERSIfl.php

Voici le texte du programme appelé par le formulaire :


     <?

     # on récupère les informations
     # et on va chercher le numéro de service

     $lenom = $_POST["nom"] ;
     $lesrv = $_POST["serv"] ;

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req  = "select numServ from SERVI  where nomServ=\"$lesrv\" " ;
     $res  = mysql_query($req) ;
     $lr   = mysql_fetch_array($res) ;
     $nsrv = $lr["numServ"] ;

     # on peut donc insérer

     $res = mysql_query("insert into PERSI  (numServ,nomPers) values ($nsrv,\"$lenom\")") ;

     print " suite au formulaire, j'ai ajouté dans la table PERSI les informations " ;
     print "   nom=$lenom num=$nsrv [service=$lesrv] \n ";


     ?>

Affichage des noms de personne avec nom de service


     <?

     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req2 = " select distinct(nomPers),nomServ from PERSI,SERVI order by nomPers " ;
     $res2 = mysql_query($req2) ;

     print "Liste alphabétique des personnes\n" ;
     print "<table>\n" ;
     print "<tr>\n" ;
     print "<th align=\"left\">  Nom</th>\n" ;
     print "<th align=\"left\">  Service</th>\n" ;
     print "</tr>\n" ;
     $nbp = 0 ;
     while ($lir2= mysql_fetch_array($res2)) { ;
        $nbp++ ;
        $nom   = $lir2["nomPers"] ;
        $ser   = $lir2["nomServ"] ;
        print "<tr><td>  $nom</td><td>  $ser</td></tr>\n" ;
     } ; # fin de tant que
     print "</table>\n" ;

     ?>

Test du programme nomsSERVI.php

Affichage des personnes par service



     <?


     mysql_connect("forge","anonymous","anonymous") ;
     mysql_select_db("test") ;

     $req3  = "" ;
     $req3 .= " select PERSI.numServ, nomPers, SERVI.numServ as ns, nomServ from PERSI,SERVI " ;
     $req3 .= " where PERSI.numServ = SERVI.numServ " ;
     $res3 = mysql_query($req3) ;

     print "Liste par service avec comptage des personnes \n" ;
     print "<table>\n" ;
     print "<tr>\n" ;
     print "<th align=\"left\">Service</th>" ;
     print "<th>Personne</th><th align=\"left\">  Nom</th></tr>\n" ;
     $oserv = 0 ;
     $nbps = 0 ;
     while ($lir3= mysql_fetch_array($res3)) { ;
        $srv   = $lir3["ns"] ;
        $nsrv  = $lir3["nomServ"] ;
        if ($srv==$oserv) { $nbps++ ; } else { $nbps = 1 ; } ;
        $nomP   = $lir3["nomPers"] ;
        print "<tr>";
        print "<td>$nsrv</td>" ;
        print "<td align=\"right\">$nbps<td>  $nomP</td></tr>\n" ;
        $oserv = $srv ;
     } ; # fin de tant que
     print "</table>\n" ;

     ?>

Test du programme servSERVI.php

récupérez ici l'archive de tous les programmes :.

Interrogations de PERSI cntePERSI.php
Noms des personnes nomsPERSI.php
Numéros de services servPERSI.php
Création de SERVI creeSERVI.php
Remplissage de SERVI sans formulaire rempSERVI.php
Remplissage de SERVI avec formulaire rempSERVIf.php
Remplissage de SERVI avec liste déroulante    rempPERSIfl.php
Liste des personnes nomsSERVI.php
Liste des services servSERVI.php

Améliorations souhaitées :


- modifier la table PERSI pour qu'il n'y ait pas de noms en double pour un même service ;
  on acceptera qu'une personne soit recensée dans deux services.

- ajouter un comptage du nombre personnes par service avec pourcentage ;

- ajouter un comptage du nombre personnes par service avec tableau récapitulatif des effectifs ;

- ajouter un comptage du nombre personnes par service avec histogramme récapitulatif ;

- interdire de saisir un couple (nom,num) déjà présent au niveau du formulaire ;
  interdire de saisir un nom vide,
  interdire de saisir un numéro de service qui n'est un entier compris entre 1 et 100 ;

- modifier la table SERVI pour qu'il n'y ait pas de numéros de service en double ;


 

retour gH    Retour à la page principale de   (gH)