Slim Exercice PHP
Slim Exercice PHP
Slim Exercice PHP
EXERCICE 1 : Afficher dans une page la phrase « Ceci est une ligne créée uniquement en
PHP ».
Afficher à la ligne suivante : « Ceci est la 2ème phrase créée avec PHP».
Créer un lien sur le site de l’ENITA (www.enitab.fr).
Objectifs : inclure des balises php dans une page HTML. Mixer le code php et HTML.
Utilisation de balises.
Fichier ex1.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>EX1 : première page en PHP</title>
</head>
<body>
<? echo "Ceci est une ligne créée uniquement en PHP"; ?>
<BR>
<?echo "Ceci est la 2ème phrase créée avec PHP <BR>"; ?>
<A href= "http://www.enitab.fr"> Accès au site de l'ENITAB </A>
</body>
</html>
Fichier ex2.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX2 : utilisation de variables</TITLE>
</HEAD>
<BODY>
<?
//Initialisation des variables
$s_nom= "Dupont" ;
$s_prenom = "Louis";
Echo $s_nom;
Echo " ";
Echo $s_prenom;
echo "<BR>";
Echo "$s_nom $s_prenom";
echo "<BR>";
Echo $s_nom . " " . $s_prenom;
echo "<BR>";
?>
</BODY>
</HTML>
Fichier ex3.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX3 : Calcul sur des variables</TITLE>
</HEAD>
<H1> Calcul sur les variables </H1>
<BODY>
<?
// Initialisation des variables
$d_prix = 150;
$d_tva = 0.206;
$n_nombre= 10;
Echo "le montant HT est égal à $d_tot_ht et est de type " . gettype($d_tot_ht);
Echo "<BR>";
Echo "le montant TTC est égal à $d_tot_ttc et est de type " . gettype($d_tot_ttc);
Echo "<BR>";
Echo "la variable $d_prix est de type " . gettype($d_prix);
</BODY>
</HTML>
Fichier ex4.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX4 : utilisation de l'instruction IF</TITLE>
</HEAD>
<H1> Utilisation de l'instructeur IF</H1>
<BODY>
<?
// Initialisation des variables
$d_prix_armoire = 50.00;
$d_prix_table = 150.00;
$n_nombre= 10;
$d_seuil = 2000.00;
UTILISATION DE FOR
Fichier ex5-a.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX5-a : utilisation de l'instruction FOR</TITLE>
</HEAD>
<H1> Utilisation de l'instructeur FOR</H1>
<BODY>
?>
</BODY>
</HTML>
UTILISATION DE WHILE
Fichier ex5-b.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
While($i<=$n_nbre)
{
$n_somme = $n_somme + $i;
$i++;
}
?>
</BODY>
</HTML>
Objectifs :
a) Utilisation des tableaux.
b) Utilisation de fonctions
c) Utilisation de fichiers : require()
Fichier ex6-a.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX 6a : Utilisation de tableaux</TITLE>
</HEAD>
<H1> Utilisation de tableaux</H1>
<BODY>
$n_somme = 0;
$i=0;
$n_nbre = count($tablo);
// affichage de la somme
echo "La somme des nombres du tableau est égale à : $n_somme";
echo "<BR>";
?>
</BODY>
</HTML>
Fichier ex6-b.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX 6b : utilisation de fonction</TITLE>
<?
</HEAD>
<H1> Utilisation de tableaux et de fonctions</H1>
<BODY>
<?
// Initialisation des variables
$tablo[0]=3;
$tablo[1]=2;
$tablo[2]=10;
$tablo[3]=5;
// affichage de la somme
echo "La somme des nombres du tableau est égale à : $d_somme";
echo "<BR>";
?>
</BODY>
</HTML>
</HEAD>
<H1> Utilisation de tableaux et de fonctions</H1>
<BODY>
<? // Initialisation des variables
$tablo[0]=3;
$tablo[1]=2;
$tablo[2]=10;
$tablo[3]=5;
// affichage de la somme
echo "La somme des nombres du tableau est égale à : $d_somme";
echo "<BR>";
?>
</BODY>
</HTML>
Fichier fonctions.php
<?
function somme ($t)
{
$n = count($t); // compte le nombre de cases du tableau
$d_som=0;
$i=0;
While ($i < $n) //calcul de la place
{
$d_som=$d_som+$t[$i];
$i=$i+1;
}
return number_format($d_som,2);
}
?>
Fichier ex7.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX7 : utiliastion de procédures</TITLE>
<? //on inclut le fichier qui contient la fonction
require ("fonctions.php");
require ("procedures.php");
?>
</HEAD>
<H1> Utilisation de tableaux et de fonctions</H1>
<BODY>
// affichage de la somme
echo "La somme des nombres du tableau est égale à : $n_somme";
?>
</BODY>
</HTML>
Fichier procedures.php
< ? // CONVERTIT UN TABLEAU DES FRANCS EN EUROS
function conversion (&$t)
{
$d_euro = 6.556597;
$i_nbre = count ($t);
$i=0;
While ($i < $i_nbre)
{
$t[$i]=$t[$i]/$d_euro;
$i=$i+1;
}
}
Fichier ex8_p1.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX8_p1 : Formulaires et contrôles</TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>
</HEAD>
<BODY>
<FORM action = "ex9-b.php" METHOD = POST>
<P>Liste des vendeurs :</P>
<SELECT NAME ="lst_vendeurs" size=4>
<OPTION VALUE ="Martin" > Martin </OPTION>
<OPTION VALUE ="Dupont" > Dupont </OPTION>
<OPTION VALUE ="Durand" > Durand </OPTION>
<OPTION VALUE ="Louis" > Louis </OPTION>
</SELECT>
<BR>
$n = count($t);
//pour chaque case du tableau, crée une option dans la liste
for ($i=0; $i<$n; $i++)
{ $s_val = $t[$i]; ?>
<OPTION VALUE ="<? echo $s_val ?>" > <? echo $s_val ?> </OPTION>
<?
}
?>
</SELECT>
</FORM>
</BODY>
</HTML>
Fichier ex9-b.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX9-b : Utilisation de combobox</TITLE>
</HEAD>
<BODY>
if (isset($_POST["lst_produits"]))
{
$lst_produits =$_POST["lst_produits"] ;
}
if (isset($_POST["zt_nbre"]))
{
$zt_nbre =$_POST["zt_nbre"] ;
}
if (isset($_POST["lst_vendeurs"]))
{
$lst_vendeurs =$_POST["lst_vendeurs"] ;
}
echo "vous avez commandé $zt_nbre $lst_produits auprès du vendeur $lst_vendeurs";
?>
<BR>
<INPUT TYPE = button Value = "Retour" onclick = "self.history.back()">
</BODY>
</HTML>
Fichier procedure.php
<?// CREE UNE BOITE DE MESSAGE QUI RENVOIE LE TEXTE MIS EN
PARAMETRE
function msg($txt)
{
?>
<SCRIPT LANGUAGE = 'Javascript'>
alert ("<?echo $txt;?>")
</script>
<?
} ?>
Fichier ex10-a.php
<HTML>
<HEAD>
<?
// inclut le fichier qui contient la liste des produits
require "produits.php";
// inclut le fichier qui permet de remplir une liste à partir d'un tableau
require "procedures.php";
?>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX10-a : tests de cohérence, procédures</TITLE>
</HEAD>
<BODY>
<FORM action = "ex10-b.php" METHOD = POST>
<P>Liste des vendeurs :</P>
<SELECT NAME ="lst_vendeurs" size=4>
Fichier ex10-b.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX10-b : Utilisation de combobox</TITLE>
<? //inclut le fichier qui contient la fonction message
require "procedures.php";?>
</HEAD>
<BODY>
if (isset($_POST["lst_produits"]))
{
$lst_produits =$_POST["lst_produits"] ;
}
if (isset($_POST["zt_nbre"]))
{
$zt_nbre =$_POST["zt_nbre"] ;
}
if (isset($_POST["lst_vendeurs"]))
{
$lst_vendeurs =$_POST["lst_vendeurs"] ;
}
if ($zt_nbre == "")
{
echo "nombre de produits <BR>";
}
if ($lst_vendeurs == "")
{
echo "nom du vendeur <BR>";
}
if ($lst_produits == "")
{
echo "nom du produit <BR>";
}
}
else
{
<BR>
Fichier procedures.php
<?
//PROCEDURE QUI REMPLIT UNE LISTE A PARTIR D'UN TABLEAU
Function REMPLIR ($t, $nom_liste)
{
$n = count($t); ?>
Fichier ex10bis-a.php
<HTML>
<HEAD>
<SCRIPT language = "Javascript">
// cette procédure active la soumission du formulaire si la saisie est correcte
// dans le cas contraire, elle affiche un message
// Cette procédure est appelée quand on clicque sur le bouton soumettre
// qui est un bouton normal et non de type submit
function valid_form()
{
var ok =1;
var msg ="";
if (document.saisie.zt_nbre.value =="")
{
ok = 0;
msg = "Saisir le nbre de produits ";
}
if (document.saisie.lst_vendeurs.value =="")
{
ok = 0;
msg = msg + "Saisir le nom du vendeur ";
}
if (document.saisie.lst_produits.value =="")
{
ok = 0;
if (ok == 1)
{
saisie.submit();
}
else
{
alert (msg);
}
}
</script>
<?
// inclut le fichier qui contient la liste des produits
require "produits.php";
// inclut le fichier qui contient la fonction message
require "procedures.php";
?>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX10-a : tests de cohérence, procédures</TITLE>
</HEAD>
<BODY>
<FORM name = "saisie" action = "ex10bis-b.php" METHOD = POST>
<P>Liste des vendeurs :</P>
<SELECT NAME ="lst_vendeurs" size=4>
<OPTION VALUE ="Martin" > Martin </OPTION>
<OPTION VALUE ="Dupont" > Dupont </OPTION>
<OPTION VALUE ="Durand" > Durand </OPTION>
<OPTION VALUE ="Louis" > Louis </OPTION>
</SELECT>
<BR>
if (isset($_POST["lst_produits"]))
{
$lst_produits =$_POST["lst_produits"] ;
}
if (isset($_POST["zt_nbre"]))
{
$zt_nbre =$_POST["zt_nbre"] ;
}
if (isset($_POST["lst_vendeurs"]))
{
$lst_vendeurs =$_POST["lst_vendeurs"] ;
}
<BR>
<INPUT TYPE = button Value = "Retour" onclick = "self.history.back()">
</BODY>
</HTML>
Fichier ex11.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 11 : Affichage d'une requête sous forme simple HTML</TITLE>
</HEAD>
<BODY>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 11 : Affichage d'une requête sous forme simple HTML</TITLE>
</HEAD>
<BODY>
<? $host = "localhost";
$user = "root";
$password = "";
//crée une connexion au serveur mysql
mysql_connect ($host, $user, $password); // connection au serveur
<BR><BR>
<? // balaye toutes les lignes du recordset et les affiche
for ($i = 0 ; $i < mysql_num_rows($r_result); $i++)
{
//extrait le résultat de la prochaine ligne du recordset dans une variable de type tableau
$tbl_ligne = mysql_fetch_array ($r_result, MYSQL_BOTH);
// affiche chaque champ de la ligne
echo ($tbl_ligne['code_client'] . " " . $tbl_ligne['nom']);?>
<A href= " <?echo ($tbl_ligne['site']);?> "> Accès au site <?echo
($tbl_ligne['site']);?> </A>
<?echo "<BR>";
}
//libère la mémoire affectée au recordset
mysql_free_result($r_result);
?>
Fichier ex11_odbc.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 11 : Affichage d'une requête sous forme simple HTML</TITLE>
</HEAD>
<BODY>
<?
//crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
// paramétrage de la requête
$req_client = "select code_client, nom, site from clients";
Fichier ex12a_odbc.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 12 : Affichage d'une requête sous forme simple HTML</TITLE>
</HEAD>
<BODY>
<?
//crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
// paramétrage de la requête
$req = "select code_client, nom from clients";
?>
<?
// balaye toutes les lignes du recordset et les affiche
while (odbc_fetch_row($result) == TRUE) // tant qu'il y a une ligne dans le recordset
{
//balaye tous les champs du recordset pour la ligne en cours
for ($i=1; $i <= odbc_num_fields($result); $i++)
{
//extrait le nom du champ
$champ = odbc_field_name($result,$i);
//extrait la valeur du champ en cours pour la ligne en cours
$val = odbc_result ($result, $champ);
//affiche la valeur du champ en cours
echo ($val);
echo " ";
}
//renvoi à la ligne après chaque enregistrement
echo "<BR>";
}
// libération de la mémoire
odbc_free_result($result);
// fermeture de la connexion avec la source de données
odbc_close($maConnexion);
?>
Fichier ex12b_odbc.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 12 : Affichage d'une requête sous forme simple HTML</TITLE>
</HEAD>
<BODY>
<?
//crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
// paramétrage de la requête
$req = "select code_client, nom from clients";
<?
// crée l'en-tête du tableau avec les noms des champs de la requête
for ($i=1; $i <= odbc_num_fields($result); $i++)
{
echo ("<TH>" . odbc_field_name($result,$i) . "</TH>");
}
?>
</TR>
</THEAD>
<TBODY>
<?
// crée les lignes du tableau
</TBODY>
</TABLE>
<?
// libération de la mémoire
odbc_free_result($result);
// fermeture de la connexion avec la source de données
odbc_close($maConnexion);
?>
Objectifs : Passage de paramètres pour créer le recordset. Création d’une procédure pour
créer un tableau HTML à partir d’un recordset.
Fichier ex13_p1_odbc.php
<HTML>
<HEAD>
<?
//crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
// paramétrage de la requête
$req_client = "select code_client, nom from clients order by nom";
?>
Fichier ex13_p2_odbc.php
<HTML>
<HEAD>
<?
require "recordsetODBC_vers_tableau.php";
Fichier recordsetODBC_vers_tableau.php
<?
//PROCEDURE QUI CREE UN TABLEAU HTML A PARTIR D'UN RECORDSET ODBC
// et qui permet d'accéder à chaque fiche à partir d'une balise d'ancre
// NB : la clé doit être placée en premier champ
//$fichier = nom du fichier vers lequel on envoie si on veut modifier une fiche
//Si ce nom est vide, le recordset est affiché sans accès à la modification de fiche.
//ex : créer_tab($r_client, "" ) ;
<?
// crée l'en-tête du tableau avce les noms des champs de la requête
for ($i=0; $i < odbc_num_fields($r_recordset); $i++)
{
$champ = odbc_field_name($r_recordset,$i+1);
echo ("<TH>" . $champ . "</TH>");
}
?>
</TR>
</THEAD>
<TBODY>
<?
// crée les lignes du tableau
while (odbc_fetch_row($r_recordset) == TRUE)
{
echo ("<TR>");
for ($j=0; $j < odbc_num_fields($r_recordset); $j++)
{
$champ = odbc_field_name($r_recordset,$j+1);
$tbl = odbc_result ($r_recordset, $champ);
echo ("</TR>");
}
?>
</TBODY>
</TABLE></CENTER>
<?
}
?>
Fichier ex14_a_ODBC.php
<HTML>
<HEAD>
<?
// inclut le fichier qui contient la procédure de transfert d'un recordset vers une liste
require "recordset_vers_liste_ODBC.php"; ?>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 14 : test sur le bouton submit</TITLE>
</HEAD>
<H1> Afficher toutes les commandes pour le client sélectionné </H1>
<BODY>
<? //récupération des variables si soumises
$lst_clients="";
$bt_submit="" ;
if (isset($_POST["lst_clients"]))
{
$lst_clients=$_POST["lst_clients"];
}
if (isset($_POST["bt_submit"]))
<?
//appelle la procédure qui remplit une liste à partir d'un recordset
recordset_vers_liste_ODBC ($r_result, "lst_clients", "code_client", "nom", $lst_clients);
// libération de la mémoire
odbc_free_result($r_result);
?>
<?
//teste si on a appuyé sur submit
// si oui : affiche les résultats pour le client
if ($bt_submit)
{
// inclut la procédure qui permet de remplir un tableau à partir d’un recordset
require "recordsetODBC_vers_tableau.php";
// paramétrage de la requête pour récupérer le nom du client
$req_client_nom = "select nom from clients where code_client= '$lst_clients' ";
// envoie le résultat de la requête dans le recordset
$r_nom = odbc_exec ($maConnexion, $req_client_nom);
<?
//envoie le résultat de la requête dans le recordset
$r_cde = odbc_exec ($maConnexion, $req_client_cde);
}
?>
</BODY>
</HTML>
Fichier recordset_vers_liste_ODBC.php
<?
// procédure qui crée une liste à partir d'un recordset, d'un nom de liste
// $val = nom du champ du recordset qui servira pour la valeur de la liste
// $libelle = nom du champ du recordset à afficher dans la liste
//$ligne = valeur de la ligne qui doit être affichée à l'ouverture de la liste
//exemple : recordset_vers_liste_ODBC ($r_result, "lst_clients", "code_client", "nom",
"00001");.
<?
}
?>
Fichier recordsetODBC_vers_tableau.php
<?
//PROCEDURE QUI CREE UN TABLEAU HTML A PARTIR D'UN RECORDSET ODBC
// et qui permet d'accéder à chaque fiche à partir d'une balise d'ancre
//$fichier = nom du fichier vers lequel on envoie si on veut modifier une fiche
//Si ce nom est vide, le recordset est affiché sans accès à la modification de fiche.
<?
// crée l'en-tête du tableau avce les noms des champs de la requête
for ($i=0; $i < odbc_num_fields($r_recordset); $i++)
{
$champ = odbc_field_name($r_recordset,$i+1);
echo ("<TH>" . $champ . "</TH>");
}
?>
</TR>
</THEAD>
<TBODY>
<?
// crée les lignes du tableau
while (odbc_fetch_row($r_recordset) == TRUE)
{
echo ("<TR>");
for ($j=0; $j < odbc_num_fields($r_recordset); $j++)
{
$champ = odbc_field_name($r_recordset,$j+1);
$tbl = odbc_result ($r_recordset, $champ);
echo "<TD>";
echo ("</TR>");
}
?>
</TBODY>
</TABLE></CENTER>
<?
}
?>
Fichier ex14-bframe_odbc.php
<HTML>
<HEAD>
<TITLE>Commandes</TITLE>
</HEAD>
<FRAMESET COLS="30%,70%" FRAMESPACING="0" BORDER="0">
<FRAME NAME="gauche" SCROLLING=AUTO SRC="ex14-b-1odbc.php">
<FRAME NAME="droite" SCROLLING=AUTO SRC="">
</FRAMESET>
</HTML>
Fichier ex14-b-1odbc.php
<HTML>
<HEAD>
<TITLE></TITLE>
<?
//inclut la procédure qui permet de remplir une liste à partir d'un recordset
Require "recordset_vers_liste_ODBC.php";
?>
</HEAD>
<BODY>
<?
//crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
?>
<?
// libération de la mémoire
odbc_free_result($r_clients);
// fermeture de la connexion avec la source de données
odbc_close($maConnexion);
?>
<P align=center>
<INPUT id=submit1 name=submit1 type=submit value=Submit>
</P>
</form>
</BODY>
</HTML>
Fichier ex14-b-2odbc.php
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
// libération de la mémoire
odbc_free_result($r_commande);
// fermeture de la connexion avec la source de données
odbc_close($maConnexion);
?>
</BODY>
</HTML>
Page 1 :
Page 2 :
Page 3 :
Fichier 15_p1.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 15 : VARIABLES SESSION</TITLE>
</HEAD>
<H1> Saisir votre code client </H1>
<BODY>
<FORM action = "ex15_p2.php" method = post>
<INPUT TYPE="text" NAME="zt_code">
<INPUT TYPE = "submit" name = bt_submit value="soumettre" >
</P>
</FORM>
</BODY>
</HTML>
Fichier ex15_p2.php
<? session_start(); //démarre la session
// a placer en haut de la page avant toute instruction HTML
?>
require "recordsetODBC_vers_tableau.php";
creer_tab($r_client, "");
Fichier ex15_p3.php
<?
//accède à la session en cours
session_start();
?>
<HTML>
<?
//récupère le code du client à partir de la variable session
$s_code=$_SESSION["s_code"];
echo "Votre code client est $s_code";
echo "<BR>";
echo "Voici la liste de vos commandes";
odbc_free_result($r_cde);
odbc_close($maConnexion);
Fichier ex16-a.php
<HTML>
<HEAD>
<SCRIPT language = "Javascript">
// cette procédure active la soumission du formulaire si la saisie est correcte
// dans le cas contraire, elle affiche un message
// Cette procédure est appelée quand on clicque sur le bouton soumettre
// qui est un bouton normal et non de type submit
function valid_form()
{
var ok =1;
var msg ="";
if (saisie.zt_code.value =="")
{
ok = 0;
msg = "Saisir le code_client ";
alert (msg);
}
else
{
if (saisie.zt_nom.value =="")
{
ok = 0;
msg = msg + "Saisir le nom";
alert (msg);
}
else
{
if (saisie.zt_prenom.value =="")
{
}
</script>
<?
//inclut le fichier qui contient la fonction message
require "procedures.php";
?>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX16 : Insertion d'un enregistrement dans la BDD</TITLE>
</HEAD>
<BODY>
<FORM name = "saisie" action = "ex16-b.php" METHOD = POST>
<CENTER><B>SAISIR LES INFORMATIONS SUIVANTES</B></CENTER>
<BR>
NB : les champs précédés d'une (*) sont obligatoires.
<BR>
Fichier ex16-b.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EX16 : Insertion d'un enregistrement dans la BDD</TITLE>
</HEAD>
<BODY>
<CENTER><B>CONFIRMATION DE L'INSCRIPTION</B></CENTER>
<BR>
<? //récupérer variables de la page précédente
$zt_code=$_POST["zt_code"];
$zt_nom=$_POST["zt_nom"];
$zt_prenom=$_POST["zt_prenom"];
$zt_adr=$_POST["zt_adr"];
$zt_cp=$_POST["zt_cp"];
$zt_ville=$_POST["zt_ville"];
$zt_tel=$_POST["zt_tel"];
$zt_site=$_POST["zt_site"];
// paramétrage de la requête
$req_insert = "INSERT INTO clients (code_client, nom, pre_cl, ad_cl, cp_cl, ville_cl, tel_cl,
site) VALUES ('$zt_code', '$zt_nom', '$zt_prenom', '$zt_adr', '$zt_cp', '$zt_ville', '$zt_tel',
'$zt_site')";
// exécute la requête
$result = odbc_exec ($maConnexion, $req_insert);
</CENTER>
</BODY>
</HTML>
Objectifs : Modification d’un enregistrement, construction d’un formulaire servant soit pour
la saisie, soit pour la modification.
Page 1 :
Page 2 :
Page 3 :
Fichier ex17-a.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 17 : Affichage et modification d'enregistrements</TITLE>
</HEAD>
<H1> Afficher tous les clients correspondants à la ville choisie</H1>
<BODY>
Fichier ex17-b.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 17 : Affichage et modification d'enregistrements</TITLE>
</HEAD>
<? // Récupération de la ville saisie en page 1
$lst_ville = $_POST["lst_ville"] ; ?>
<H1> Liste des clients habitant à <? echo $lst_ville ?></H1>
<BODY>
< ? //crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
// paramétrage de la requête
$req_client = "select * from clients where ville_cl = '$lst_ville'";
// inclut la procédure qui crée et remplit un tabbleau à partir d'un recordset ODBC
require "recordsetODBC_vers_tableau.php";
creer_tab ($result, "ex17-c.php");
Fichier ex17-c.php
<HTML>
<HEAD>
<SCRIPT language = "Javascript">
// cette procédure active la soumission du formulaire si la saisie est correcte
// dans le cas contraire, elle affiche un message
// Cette procédure est appelée quand on clicque sur le bouton soumettre
// qui est un bouton normal et non de type submit
function valid_form()
{
var ok =1;
var msg ="";
if (saisie.zt_code.value =="")
{
ok = 0;
msg = "Saisir le code_client ";
alert (msg);
}
else
{
if (saisie.zt_nom.value =="")
{
ok = 0;
msg = msg + "Saisir le nom";
alert (msg);
}
else
{
if (saisie.zt_prenom.value =="")
{
ok = 0;
msg = msg + "Saisir le prénom";
alert (msg);
}
else
{
if (saisie.zt_tel.value =="")
{
ok = 0;
msg = msg + "Saisir le numéro de téléphone ";
alert (msg);
}
else
}
</script>
<?
//inclut le fichier qui contient la fonction message
require "procedures.php";
?>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 17 : Affichage et modification d'enregistrements</TITLE>
</HEAD>
<BODY>
<FORM name = "saisie" action = "ex17-d.php" METHOD = post>
<CENTER><B>SAISIR LES INFORMATIONS SUIVANTES</B></CENTER>
<BR>
NB : les champs précédés d'une (*) sont obligatoires.
<BR>
<?
// teste si on est en saisie ou en modif
If (isset($_GET["num"]))
{
//récupère le no du client cliqué sur le lien hypertexte de la page précédente
$num = $_GET["num"];
//si le no n'est pas vide, cela signifie qu'on est en mode modification
//recherche dans ce cas les informations correspondant au code client choisi
//crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
// paramétrage de la requête
$req_client = "select * from clients where code_client = '$num'";
{
$code = "";
$nom = "";
$prenom="";
$ad = "";
$cp = "";
$ville = "";
$tel = "";
$site = "";
}
?>
(*) Code client <INPUT TYPE="text" NAME="zt_code" value = "<? echo $code ?>"><BR>
(*) Nom du client <INPUT TYPE="text" NAME="zt_nom" value = "<? echo
$nom?>"><BR>
(*) Prénom du client <INPUT TYPE="text" NAME="zt_prenom" value = "<? echo $prenom
?> "><BR>
Adresse <INPUT TYPE="text" NAME="zt_adr" value = "<? echo $ad?>"><BR>
Code postal <INPUT TYPE="text" NAME="zt_cp" value = "<? echo $cp?>"><BR>
Ville <INPUT TYPE="text" NAME="zt_ville" value = "<? echo $ville?>"><BR>
(*) Tel <INPUT TYPE="text" NAME="zt_tel" value = "<? echo $tel?>"><BR>
Site internet <INPUT TYPE="text" NAME="zt_site" value = "<? echo $site ?>" size =
80><BR>
Fichier ex17-d.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>EXERCICE 17 : Affichage et modification d'enregistrements</TITLE>
</HEAD>
<BODY>
<CENTER><B>CONFIRMATION DE L'INSCRIPTION</B></CENTER>
<BR>
// paramétrage de la requête
$req_client = "select count(*) as nb from clients where code_client ='$zt_code'";
// exécute la requête
$insert = odbc_exec ($maConnexion, $req_insert);
// exécute la requête
$update = odbc_exec ($maConnexion, $req_update);
echo "Votre fiche a bien été modifiée";
}
?>
<INPUT TYPE = "Button" Type=button value = "retour" onclick = "self.history.back();">
<BR>
</CENTER></FORM>
</BODY>
</HTML>
Fichier cookie.php
<?setcookie("nbvisites", mktime(12,30,15,25,6,2006));
//affecte la valeur du cookie à $n
if (isset($_COOKIE["nbvisites"]))
{
$n= $_COOKIE["nbvisites"];
}
else
{
$n = 1;
}
//incrémente $n
$n++;
//incrémente le cookie de 1
setcookie("nbvisites",$n, mktime(12,30,15,25,6,2006));
?>
EXERCICE 19 : Construire une page qui demande à l’utilisateur de saisir son nom à la
première visite. Dès que le nom aura été saisi, la même page affichera automatiquement
« bienvenue Monsieur untel » et ne lui demandera plus de saisir son nom.
On inclura également un compteur de visite.
Fichier cookie2.php
<?
//Teste si le cookie existe
if (isset($_COOKIE["nom"]))
{
$nom= $_COOKIE["nom"];
echo "Bienvenue M. $nom";
}
else
{
echo "<form method = Post>";
echo "Saisir votre nom : <input type=text name = zt_nom>";
echo "<input type = submit name = ok>";
}
EXERCICE 20 : Créer une liste qui contient tous les clients. Après avoir choisi un client, on
doit pouvoir générer un pdf qui affiche toutes les commandes (no, date, montant total
commandé) passées par le client sélectionné.
Exemple de pdf :
Fichier choix_client.php
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>Création de pdf</TITLE>
</HEAD>
<H1> Crée un pdf avec toutes les commandes pour le client sélectionné </H1>
<BODY>
<?
//crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
// paramétrage de la requête
$req_client = "select code_client, nom from clients order by nom";
Fichier client_pdf.php
<?
//dans le php.ini, activer la dll pdf : extension=php_pdf.dll
//dans le fichier pdflib.upr, indiquer le chemin d'accès aux polices : /c:/windows/fonts
//récupération du code du client contenu dans la liste en page 1
$lst_clients=$_POST["lst_clients"] ;
//crée une connexion au lien ODBC "commandes"
$maConnexion = odbc_connect ("commandes", "", "");
// paramétrage de la requête
$req_cde = "SELECT commandes.no_cde, commandes.date_cde, commandes.code_client, ".
"Sum(qte*pu) AS total FROM commandes, detail_cde ".
"where commandes.no_cde = detail_cde.no_cde and code_client = '$lst_clients' ".
"GROUP BY commandes.no_cde, commandes.date_cde, commandes.code_client";
// envoie le résultat de la requête dans le recordset
$result = odbc_exec ($maConnexion, $req_cde);
// paramétrage de la requête pour récupérer le nom du client
$req_nom = "select nom from clients where code_client = '$lst_clients' ";
// envoie le résultat de la requête dans le recordset
$r_nom = odbc_exec ($maConnexion, $req_nom);
//affiche le tracé
pdf_stroke($pdf);
$y=$y-$h;
//trace le rectangle
pdf_show_boxed($pdf, "$no", $x, $y,50,$h,"right");
pdf_moveTo($pdf,$x+210,$y);
pdf_lineTo($pdf,$x+210,$y+$h);
//affiche le tracé
pdf_stroke($pdf);
$y=$y-$h;
if ($y<=250)
{
//ferme la page en cours et crée une nouvelle page
pdf_end_page($pdf);
pdf_begin_page($pdf, 595, 842);
//redéfinit les paramètres de la page (ils sont spécifiques à 1 page)
$y=800;
//charge la police arial
$font=pdf_findfont($pdf,"arial", "host", false);
//définit la police
pdf_setfont($pdf,$font, 20);
}
}
//termine la page
pdf_end_page($pdf);
//ferme le document pdf
pdf_close($pdf);
//efface l'objet pdf de la mémoire
pdf_delete($pdf);
?>
Page menu
Page Liste_plats
Page identification.php
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="menu.php">
Saisir votre code client <INPUT TYPE="text" name = zt_code> <BR>
Saisir votre mot de passe <INPUT TYPE="password" name = zt_mot>
<INPUT TYPE="submit" value = "ok">
</FORM></BODY>
</HTML>
Page Menu.php
<?session_start();
require "recordset_vers_liste_ODBC.php";
require "connexion.php";
//initialise la variable session code_client
if (isset($_POST["zt_code"]))
{
$_SESSION["s_code"] = $_POST["zt_code"];
$_SESSION["s_mot"] = $_POST["zt_mot"];
}
$smot= $_SESSION["s_mot"] ;
$code = $_SESSION["s_code"];
//vérification du mot de passe
$sql_mot = "select mot_passe from clients where code_client = '$code'";
$r_mot = odbc_exec($maconnexion, $sql_mot);
Page Liste_plats.php
<?session_start();
require "connexion.php";
require "recordsetODBC_vers_tableau_plus.php";
$sql= "select distinct Code_plat, Libelle_plat as Libellé, Prix, parts, unité, origine,
libelle_type as type, regime from r_detail_plats";
//teste sur quel bouton on a appuyé
If (isset($_POST["bt_ingredient"]))
Fichier fonction_plat.php
<?
/*procédure qui affiche les plats contenus dans le recordset $recordset
dans ce recordset doivent obligatoirement apparaître les champs code_plat, libellé, régime,
prix, type, parts, unité et origine
Paramètres à fournir :
- le recordset avec la liste des plats ($recordset)
- le nom de la connexion
- le nom de la page sur laquelle le lien hypertexte va porter (si ce paramètre n'est aps
renseigné, le lien hypertetxe n'est pas créé)
- la taille de caractère pour le libellé du plat
- la couleur de caractère pour le libellé du plat
- la page à charger quand on clique sur "ajouter au panier"
La procédure crée une liste des plats avec un lien hypertexte sur le libellé du plat qui envoie la
variable code_plat à la page paramétrée en lien.
exemple d'appel : affich_plat($recordset,$maconnexion,"",5,'blue','valid_panier.php');
*/
function affich_plat($recordset,$maconnexion,$lien,$size, $color,$page)
{
while (odbc_fetch_row($recordset)==true)
{
echo "<form method = post action = '$page'>";
$code_p= odbc_result($recordset, "code_plat");
echo "<input type = hidden name = zt_plat value = $code_p>";
$libel=odbc_result($recordset, "libellé");
echo "<FONT SIZE=$size COLOR=$color>";
//teste si on doit créer un lien hypertexte
if ($lien ="")
{
echo "<a href = '$lien?code_plat=$code_p'>$libel</A>";
}
else
{
echo $libel;
}
echo "</FONT>";
echo " ";echo " ";
echo odbc_result($recordset, "regime");
Page Valid_panier.php
<?session_start();
$code_client = $_SESSION["s_code"];
$code_p = $_POST["zt_plat"];
$qte = $_POST["zt_qte"];
}
$flag = 0;
//teste si le produit n'a pas déjà été saisi (flag = 0 si pas saisi, 1 sinon).
if ($flag == 1)
{
$_SESSION["s_panier"][$j][0]=$qte;
}
else
{
?>
Produit pris en compte dans votre panier
<FORM METHOD=POST ACTION="visu_panier.php">
<INPUT name = bt_valid TYPE="submit" value = "Visualiser le panier">
</FORM>
<a href = 'liste_plats.php'>Retour à la liste de choix</A>
<BR><BR>
<a href = 'menu.php'>Retour au menu</A>
Page visu_panier.php
<?session_start();
require "connexion.php";
//compte le nb de produits dans le panier
//compte le nombre de lignes dans la variable session
$n = 0;
if (isset($_SESSION["s_panier"][$n][0]))
{
$n=count($_SESSION["s_panier"]);
}
if ($n==0)
{
$_SESSION["s_panier"][$i][0]= $qte;
}
}
?>
<FORM METHOD=POST ACTION="">
<?
//proc d'affichage du panier de commande
require "proc_affich_panier.php";
affich_panier($maconnexion, $_SESSION["s_panier"]);
?>
<BR>
<INPUT name = bt_rafraichir TYPE="submit" value = "Mise à jour des modifications">
</FORM>
echo "<TR>";
echo "<TD>";
$nomzt = "zt_qte" . $code_plat;
echo "<input type = text name = $nomzt value = $qte size = 2>" ;
echo "</TD> <TD> ";
echo $plat ;
echo "</TD><TD>";
echo $prix ;
echo "</TD><TD>";
echo $tot . " €" ;
echo "</TD>";
echo "<TD><a href=visu_panier.php?codesup=$code_plat>supprimer</A></TD>";
echo "</TR>";
}
Page valid_cde.php
<?session_start();
$code_client = $_SESSION["s_code"];
require "connexion.php";
//insère la cde
$sql_insert_cde = "INSERT INTO cde (code_client , date_cde) VALUES
('$code_client',Now())";
$r_insert = odbc_exec ($maconnexion, $sql_insert_cde);
Fichier proc_existe.php
<?//fonction qui renvoie la valeur 1 si le nom de fichier transmis en paramètre ($nomfichier)
//existe dans le répertoire transmis en paramètre ($chemin)
function existe ($chemin, $nomfichier)
{
// dossier à parcourir
$dossier = opendir($chemin);
$resu = 0;
while ($Fichier = readdir($dossier))
{
//la fonction strtoupper perte de passer le texte en majuscule
if (strtoupper($Fichier) == strtoupper($nomfichier))
{
$resu = 1;
}
}
return $resu;
}
?>
Fichier Proc_trombi_simple.php
<?
/* procédure qui crée un trombi à partir d'un recordset
NB : les photos doivent avoir le même nom que la clé de la personne
$r_pers = nom du recordset qui contient les individus à placer dans le trombi
$champ = nom du champ à afficher sous la photo
ATTENTION : cette procédure requiert l'appel à une autre procédure (cf fichier
proc_existe.php)
*/
echo "</tbody>";
echo "</table>";
}?>
Fichier trombi_simple.php
<?
$conex = odbc_connect("personne","","");
$rpers = odbc_exec( $conex, "select NuméroTriathlète, nom + ' ' + prenom as individu from
personne");
//appel du fichier avec la procédure qui vérifie si le fichier image existe
require "proc_existe.php";
//appel du fichier avec la procédure qui crée la page de trombi
require "proc_trombi_simple.php";
trombi_simple ($rpers, "individu", "", "NuméroTriathlète", "photos/small/", "jpg", 70,70, 2);
?>
Fichier Trombi_page.php
<?
$conex = odbc_connect("personne","","");
$rpers = odbc_exec( $conex, "select NuméroTriathlète, nom + ' ' + prenom as individu from
personne");
//inclut la procédure de création de trombi.
//cette procédure appelle une sous-procédure qui crée une page de trombi pour un jeu
//d'enregistrements
//la proc crea_trombi sert à donc à calculer le nb de pages à afficher et affiche la page en cours
require "proc_crea_trombi.php";
Fichier Proc_crea_trombi.php
<?
/* procédure qui crée un trombi à partir d'un recordset
NB : les photos doivent avoir le même nom que la clé de la personne
$r_pers = nom du recordset qui contient les individus à placer dans le trombi
$champ = nom du champ à afficher sous la photo
$fichier = nom du fichier qui contient la fiche d'un individu (pour réaliser un lien hypertexte à
partir du trombi sur la fiche de saisie de l'individu choisi
Si $fichier est null, on ne crée pas de lien hypertexte)
$champ_id = nom du champ qui contient la clé (pour réaliser le lien hypertexte)
$chemin = répertoire où sont stockées les photos
$extension = type de photo (jpg, bmp ...)
$largeur = largeur de la photo (en points)
$hauteur = hauteur de la photo (en points)
$nb_cols = nombre de colonnes à afficher par page
$nb = nb total d'enregistrements
$n_par_page = nombre de personnes à afficher sur une page
$num = LAISSERR $num (correspond à la page en cours du trombi).
$page = page de création du trombi
ATTENTION : fonctionner cette procédure fait appel à une autre procédure (cf fichier
proc_trombi.php)
*/
}
//$num = numéro de la page à afficher (no transmis par la balise d'ancre créée sur la page) ou
numéro 1 en premier affichage
if ($num =="")
{
$num =1;
}
//no du 1er enregistrement à afficher sur la page
$deb = ($num * $n_par_page) - $n_par_page +1;
//no du dernier enregistrement à afficher sur la page
$fin = $deb + $n_par_page-1;
echo "<CENTER>";
}
}
?>
Fichier Proc_trombi.php
<?
/* procédure qui crée un trombi à partir d'un recordset
NB : les photos doivent avoir le même nom que la clé de la personne
$r_pers = nom du recordset qui contient les individus à placer dans le trombi
$champ = nom du champ à afficher sous la photo
$fichier = nom du fichier qui contient la fiche d'un individu (pour réaliser un lien hypertexte à
partir du trombi sur la fiche de saisie de l'individu choisi
Si $fichier est null, on ne crée pas de lien hypertexte)
$champ_id = nom du champ qui contient la clé (pour réaliser le lien hypertexte)
$chemin = répertoire où sont stockées les photos
$extension = type de photo (jpg, bmp ...)
*/
echo "<BR>$affich";