ISBN :

Dimension: px
Commencer à balayer dès la page:

Download "ISBN : 2-212-11407-9"

Transcription

1 Groupe Eyrolles, 2005, ISBN :

2 15 Accès à MySQL avec PHP Ayant acquis au chapitre précédent une bonne maîtrise des commandes SQL, vous pouvez aborder les fonctions PHP permettant d accéder à une base MySQL à partir d un script PHP, d y insérer des données et d utiliser ces données pour créer des pages dynamiques. Pour que la base de données MySQL soit accessible à partir des pages d un site, il faut pouvoir l utiliser par l intermédiaire d un script. MySQL est utilisable par d autres langages que PHP, Java par exemple. Le couple PHP-MySQL est cependant le plus répandu sur le Web. L accès à une base MySQL et son utilisation, qu il s agisse d insérer, de modifier ou de lire des données, suit les étapes ci-dessous : 1. Connexion au serveur MySQL. 2. Envoi de requêtes SQL au serveur. 3. Lecture du résultat d une requête. 4. Insertion de données dans la base. 5. Recherche dans la base. Le présent chapitre détaille ces étapes une à une. Connexion au serveur MySQL Avant toute chose, le script doit permettre de se connecter au serveur MySQL. La fonction essentielle de ce script est mysql_connect(), dont la syntaxe est la suivante : resource mysql_connect (string $host, string $user, string $pass [, bool $multi])

3 406 PHP 5 Cours et exercices $host est une chaîne contenant le nom du serveur. Ce dernier est défini par l hébergeur du site et est communiqué lors de la souscription de l abonnement. Il s agit le plus souvent de la chaîne "localhost", comme ce sera le cas dans tous les exemples de ce chapitre, réalisés en local avec Wampserver. $user est le nom sous lequel l utilisateur est autorisé à accéder au serveur. Il s agit généralement du nom de domaine ou du login pour les hébergements gratuits. Dans Wampserver, la valeur par défaut de ce paramètre est "root". $pass est le mot de passe associé à l utilisateur. Si plusieurs utilisateurs sont autorisés à accéder au serveur, chacun doit posséder un identifiant et un mot de passe personnel. Sur un serveur local, il s agit par défaut d une chaîne vide. $multi est un booléen. S il vaut TRUE, deux appels de mysql_connect() avec des paramètres identiques dans un même script créent deux connexions différentes. Par mesure de sécurité, vous avez tout intérêt à placer les valeurs des paramètres de connexion dans un fichier séparé, en prenant soin d y définir ces paramètres sous forme de constantes. Vous pouvez ensuite l inclure dans les scripts de création de connexions utilisant les noms de ces constantes. Le fichier myparam.inc.php de l exemple 15-1 réalise cette opération. Vous l utiliserez systématiquement par la suite. Exemple Le fichier myparam.inc.php <?php define("myhost","localhost"); define("myuser","root"); define("mypass","");?> La fonction mysql_connect() retourne une variable de type resource, qui est un identifiant de connexion. Il faut récupérer cette valeur dans une variable car elle est utilisée pour effectuer les opérations suivantes sur la base. L identifiant est noté systématiquement $idcomm dans les exemples de ce chapitre. Si la connexion n est pas établie, la fonction retourne FALSE. Vous devez donc tester la réussite de la connexion avant d effectuer d autres opérations. La connexion au serveur peut également être établie à l aide de la fonction mysql_pconnect(), qui requiert les mêmes paramètres que mysql_connect() mais établit une connexion persistante. Certains hébergeurs interdisant l usage de cette fonction, vous ne l utiliserez pas dans ces exemples. La connexion établie prend fin automatiquement quand le script PHP est terminé. Il est cependant recommandé d y mettre fin explicitement dès que possible de façon à libérer le serveur MySQL. Le script peut en effet réaliser toutes sortes d opérations qui ne nécessitent pas de connexion. Cette précaution améliore la vitesse des connexions des autres utilisateurs.

4 Accès à MySQL avec PHP CHAPITRE Pour mettre fin à la connexion, vous appelez la fonction mysql_close(), dont la syntaxe est la suivante : boolean mysql_close([$idcom]) Le paramètre $idcom est l identifiant de connexion récupéré lors de la connexion. S il est omis, c est la dernière connexion utilisée qui est fermée. Une connexion persistante ne peut être fermée par la fonction mysql_close(). Si le serveur comporte plusieurs bases de données, le script précise la base désirée au moyen de la fonction mysql_select_db(), dont la syntaxe est la suivante : boolean mysql_select_db($nom_base [,$idcom]) Cette fonction retourne TRUE si la base existe et FALSE dans le cas contraire. Après l appel de cette fonction, toutes les requêtes SQL envoyées au serveur MySQL sont effectuées sur la base choisie, sans qu il soit besoin de le préciser. La commande USE Vous pouvez utiliser à la place de la fonction PHP mysql_select_db() la commande SQL USE, selon la syntaxe USE nom_base, en passant la chaîne "USE nom_base" comme paramètre à la fonction mysql_query(), détaillée à la section suivante. Si le script effectue de nombreuses opérations entre deux requêtes, il est bon de vérifier que la connexion est toujours active. Le serveur met fin à une connexion après un délai défini par défaut dans le fichier php.ini à trente secondes. Vous disposez de la fonction mysql_ping() pour vérifier que la connexion est active. La syntaxe de cette fonction est la suivante : boolean mysql_ping(resource $idcom) La fonction retourne TRUE si la connexion est active et FALSE dans le cas contraire. Si la connexion est fermée, il y a automatiquement reconnexion au serveur avec les paramètres utilisés par la fonction mysql_connect(). La structure d un script accédant au serveur MySQL est la suivante : <?php //Inclusion des paramètres de connexion include_once("param.inc.php"); //Connexion au serveur $idcom=@mysql_connect(myhost,myuser,mypass); //Choix de la base $idbase=@mysql_select_db($base); //Affichage d'un message en cas d'erreurs if(!$idcom!$idbase)

5 408 PHP 5 Cours et exercices echo "<script type=text/javascript>"; echo "alert('connexion Impossible à la base $base')</script>"; //******************************** //Requètes SQL sur la base choisie //******************************** //Fermeture de la connexion mysql_close($idcom);?> Lorsque les scripts du site doivent accéder fréquemment au serveur MySQL, vous avez intérêt à créer une fonction spécialisée, dont l appel évite de réécrire ces parties de code. L exemple 15-2 crée une telle fonction en utilisant deux paramètres, $base, qui est le nom de la base à laquelle vous souhaitez accéder, et $param, qui est le nom du fichier contenant les paramètres de connexion sans les extensions.inc.php. Elle peut être utilisée dans plusieurs sites différents car elle est indépendante aussi bien du nom du serveur que de celui de la base. La fonction inclut d abord les paramètres de connexion (repère ) puis appelle la fonction mysql_connect() en utilisant ces paramètres (repère ). Elle sélectionne ensuite la base (repère ) et gère les erreurs éventuelles de connexion ou d accès à la base (repère ) en affichant une boîte d alerte en JavaScript (repère ). La fonction retourne enfin l identifiant de connexion $idcom (repère ). Exemple Connexion au serveur <?php function connex($base,$param) include_once($param.".inc.php"); $idcom=@mysql_connect(myhost,myuser,mypass); $idbase=@mysql_select_db($base); if(!$idcom!$idbase) echo "<script type=text/javascript>"; echo "alert('connexion Impossible à la base $base')</script>"; return $idcom;?> Chacun de vos scripts d accès à une base de données doit donc contenir les lignes de code suivantes, qui permettent d utiliser la fonction connex() après avoir inclus son code : include("connex.inc.php"); $idcom=connex("nom_base","myparam"); Cela allège les scripts.

6 Accès à MySQL avec PHP CHAPITRE Envoi de requêtes SQL au serveur Toute opération à réaliser sur une base nécessite d envoyer au serveur une requête SQL rédigée à l aide des commandes détaillées au chapitre précédent. Pour envoyer une requête, vous utilisez d abord la fonction mysql_query(), dont la syntaxe est la suivante : resource mysql_query(string $requete [,resource $idcom][,int mode]) La chaîne $requete contient le code de la requête SQL. Elle ne doit pas se terminer par un point-virgule. Les requêtes étant souvent longues, il est recommandé, à des fins de lisibilité du code, de les écrire dans une variable chaîne $requete passée ensuite à la fonction. $idcom est l identifiant de connexion. Il est facultatif si une seule connexion est ouverte. mode est une constante entière, qui prend les valeurs MYSQL_STORE_RESULT (valeur par défaut) si le résultat de la requête doit être mis en buffer (mémoire tampon sur le serveur) et MYSQL_USE_RESULT dans le cas contraire. Dans ce dernier cas, il faut lire le résultat avant d envoyer une nouvelle requête au serveur, faute de quoi le résultat est perdu. La fonction retourne un identifiant de résultat de type resource, noté systématiquement $result dans ces exemples. Si la requête contient des commandes SELECT, cet identifiant permet d accéder aux données fournies par la requête en utilisant certaines fonctions PHP que vous découvrirez plus loin dans ce chapitre. Pour les autres requêtes, la fonction retourne TRUE si la requête est bien exécutée. Si une requête quelconque n est pas exécutée, la fonction mysql_query() retourne FALSE. Il est recommandé d effectuer un test pour vérifier la bonne réalisation de chaque requête SQL dans un script. Un script d envoi de requête a la forme suivante : <?php include("connex.inc.php"); $idcom=connex("magasin","myparam"); $requete="select * FROM article ORDER BY categorie"; $idresult=@mysql_query($requete,$idcom); if(!$idresult) echo "Lecture impossible"; else //Lecture des résultats éventuels de la requête?> Il effectue successivement l inclusion du fichier connex.inc.php (repère ), la connexion au serveur (repère ), l écriture de la requête (repère ), l envoi de la requête et la récupération du résultat (repère ) et enfin l affichage d un message d erreur éventuel (repère ) et celui des résultats de la requête (repère ).

7 410 PHP 5 Cours et exercices Lecture du résultat d une requête Pour les opérations d insertion, de suppression ou de mise à jour de données dans une base, il est utile de vérifier si la requête a bien été exécutée. Lorsqu il s agit de lire le résultat d une requête contenant la commande SELECT, il est indispensable de recueillir les données. PHP offre une grande variété de fonctions qui permettent de récupérer des données sous des formes diverses, la plus courante étant un tableau. Chacune de ces fonctions ne récupérant qu une ligne du tableau à la fois, il faut recourir à une ou plusieurs boucles pour lire l ensemble des données. Lecture à l aide d un tableau La fonction la plus perfectionnée pour lire les données dans un tableau est mysql_fetch_array(). Sa syntaxe est la suivante : array mysql_fetch_array(resource $result [,int typetab]) Cette fonction retourne un tableau contenant autant d éléments qu il y a de colonnes précisées dans la requête SELECT. Le paramètre $result est celui qui a été retourné par la fonction mysql_query(), et le paramètre typetab une constante entière précisant si le tableau retourné doit être associatif (valeur MYSQL_ASSOC), indicé (valeur MYSQL_NUM) ou les deux à la fois (valeur MYSQL_BOTH, qui est la valeur par défaut). Si le tableau est associatif, les clés du tableau sont les noms des colonnes de la table interrogée ou des alias, si vous en avez définis dans la requête. Il n est donc pas nécessaire de connaître l ordre des colonnes dans la table. Si le tableau est indicé, l indice d un élément est celui de la colonne dans la requête, la première colonne ayant l indice 0. Pour récupérer la valeur d une colonne précise, il est indispensable de connaître sa position dans la requête. Chaque nouvel appel de la fonction mysql_fetch_array() retourne la ligne suivante du résultat identifié par $result, ou FALSE s il n y a plus de ligne à lire. Il faut effectuer une boucle pour lire chacune des lignes puis une autre boucle imbriquée dans la première pour lire chacune des valeurs des colonnes de la table. Nombre de lignes et de colonnes d un résultat La fonction int mysql_num_fields(resource $idresult) permet de déterminer le nombre de colonnes du résultat et la fonction int mysql_num_rows(resource $idresult) le nombre de lignes. L exemple 15-3 met en pratique les techniques que vous venez d aborder en effectuant la lecture de la table article de la base magasin créée au chapitre 14. Après l appel de la fonction de connexion (repère ), l écriture de la requête SQL (repère ) et son envoi au serveur, le résultat est identifié par la variable $result (repère ). Le script contrôle ensuite si le résultat est valide (repère ) et lit le nombre de colonnes et de lignes retourné par la requête (repère et ). La première boucle while de lecture du résultat

8 Accès à MySQL avec PHP CHAPITRE retourne une ligne à la fois dans un tableau indicé (repère ), puis une boucle foreach lit chacune des valeurs du tableau et réalise un affichage dans un tableau HTML (repère ). La ressource $result est ensuite libérée (repère ). Libération de la mémoire Une fois les données utilisées pour réaliser un affichage dans une page HTML, il est possible de libérer la mémoire occupée par la variable $result en appelant la fonction mysql_free_result($result). Cette dernière retourne TRUE en cas de réussite et FALSE dans le cas contraire. Cette opération ne doit être faite que si vous n avez plus besoin des données dans le script. La figure 15-1 illustre la page réalisée par ce script. Exemple Lecture de la table article <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso "> <title>lecture de la table article</title> <style type="text/css" > table border-style:double;border-width: 3px;border-color: red;background-color: yellow; </style> </head> <body> <?php include("connex.inc.php"); $idcom=connex("magasin","myparam"); $requete="select * FROM article ORDER BY categorie"; $result=@mysql_query($requete,$idcom); if(!$result) echo "Lecture impossible"; else $nbcol=mysql_num_fields($result); $nbart=mysql_num_rows($result); echo "<h3> Tous nos articles par catégorie</h3>"; echo "<h4> Il y a $nbart articles en magasin </h4>"; echo "<table border=\"1\">"; echo "<th>code article</th> <th>description</th> <th>prix</th> <th>catégorie</th>"; while($ligne=mysql_fetch_array($result,mysql_num)) echo "<tr>";

9 412 PHP 5 Cours et exercices Exemple Lecture de la table article (suite) foreach($ligne as $valeur) echo "<td> $valeur </td>"; echo "</tr>"; echo "</table>"; mysql_free_result($result);?> </body> </html> Les deux autres fonctions suivantes permettent de récupérer une ligne de résultat à la fois dans un tableau : array mysql_fetch_assoc(resource $result), qui retourne un tableau uniquement associatif dont les clés sont les noms des colonnes de la table interrogée. array mysql_fetch_row(resource $result), qui retourne un tableau uniquement indicé dont les indices sont les numéros des colonnes de la table dans la requête. Ces fonctions peuvent s utiliser en lieu et place de mysql_fetch_array() avec la même rapidité. Figure 15-1 Lecture de la table article

10 Accès à MySQL avec PHP CHAPITRE Lecture des noms de colonnes Si vous choisissez de récupérer les lignes du résultat dans un tableau associatif, vous pouvez lire les noms des colonnes pour les afficher dans la page HTML. Si vous utilisez de plus des alias dans la requête SQL, vous pouvez donner aux noms des colonnes des titres plus significatifs que id_article sans avoir à les écrire explicitement dans le code de création du tableau HTML, à la différence de l exemple précédent. Il existe deux méthodes pour lire les noms des colonnes d une table. Première méthode L exemple 15-4 illustre une requête SQL sélectionnant tous les articles de marque Sony en définissant des alias pour les noms de colonnes (repère ). Après l envoi de la requête par la fonction mysql_query() (repère ), un premier appel à la fonction mysql_fetch_array() lit la première ligne du résultat dans un tableau associatif (repère ). Une boucle foreach lit les clés du tableau obtenu et affiche les titres des colonnes du tableau (repère ). À ce stade, la variable $ligne contient la première ligne de résultat, mais vous n avez utilisé que les clés de ce tableau, qui sont les noms des colonnes. Si vous lisiez les valeurs des lignes avec une boucle while, comme à l exemple précédent, un nouvel appel de la fonction mysql_fetch_array() lirait la deuxième ligne, ce qui écraserait les valeurs de la première ligne. L emploi d une boucle do..while résout ce problème, la fonction mysql_fetch_array() n étant appelée qu après l affichage des valeurs de chaque ligne (repères et ). Exemple Récupération des noms de colonnes <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso "> <title>lecture de la table article</title> <style type="text/css" > table border-style:double;border-width: 3px;border-color: red;background-color: yellow; </style> </head> <body> <?php include("connex.inc.php"); $idcom=connex("magasin","myparam"); $requete="select id_article AS 'Code article',designation AS 'Désignation',prix AS 'Prix Unitaire',categorie AS 'Catégorie' FROM article WHERE designation LIKE '%Sony%' ORDER BY categorie"; $result=@mysql_query($requete,$idcom); if(!$result)

11 414 PHP 5 Cours et exercices Exemple Récupération des noms de colonnes (suite) echo "Lecture impossible"; else $nbart=mysql_num_rows($result); $ligne=mysql_fetch_array($result,mysql_assoc); echo "<h3> Tous nos articles de la marque Sony</h3>"; echo "<h4> Il y a $nbart articles en magasin </h4>"; echo "<table border=\"1\"> <tr>"; foreach($ligne as $nomcol=>$valcol) echo "<th> $nomcol </th>"; echo "<tr>"; //************* do echo "<tr>"; foreach($ligne as $valcol) echo "<td> $valcol </td>"; echo "</tr>"; while($ligne=mysql_fetch_array($result,mysql_num)); echo "</table>";?> </body> </html> La figure 15-2 illustre les résultats de la requête effectuée sur la table article. Figure 15-2 Lecture des noms de colonnes

12 Accès à MySQL avec PHP CHAPITRE Deuxième méthode Il existe une autre méthode pour lire le nom des colonnes du résultat d une requête SELECT. La fonction mysql_field_name(), dont la syntaxe est la suivante : string mysql_field_name(resource $result, int num_col) retourne le nom de la colonne ou de l alias dont le numéro est passé en second paramètre. L ordre des colonnes est celui de la requête et donc pas nécessairement celui de la table. L exemple 15-5 illustre cette possibilité de lecture des noms des colonnes. La requête SQL sélectionne les caractéristiques des clients habitant à Paris (repère ). Après l envoi de celles-ci (repère ), vous récupérez le nombre de colonnes (repère ) et de lignes (repère ) du résultat. Une boucle for permet l affichage des en-têtes du tableau HTML (repère ). La fonction mysql_field_name() permet de lire le nom des colonnes (repère ). Pour afficher les valeurs sélectionnées, vous créez une boucle for (repère ), dans laquelle vous lisez une ligne du résultat en appelant la fonction mysql_fetch_row() (repère ). Une autre boucle for imbriquée dans la précédente permet l affichage de toutes les valeurs d une ligne contenues dans le tableau $ligne (repère ). L avantage de ces méthodes est d automatiser l écriture des en-têtes du tableau HTML, et ce quel que soit le nombre de colonnes sélectionnées. Si vous ajoutez le champ mail dans la requête, il n y a qu une ligne à modifier alors qu avec la méthode de l exemple 15-3, il faudrait modifier tout le code de création des en-têtes. La figure 15-3 donne un aperçu du résultat obtenu en ajoutant simplement le champ mail à la requête. Exemple Lecture des noms de colonnes <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso "> <title>lecture de la table client</title> <style type="text/css" > table border-style:double;border-width: 3px;border-color: red;background-color: yellow; </style> </head> <body> <?php include("connex.inc.php"); $idcom=connex("magasin","myparam"); $requete="select id_client AS 'Code client',nom,prenom,adresse,age FROM client WHERE ville ='Paris' ORDER BY nom"; $result=@mysql_query($requete,$idcom); if(!$result)

13 416 PHP 5 Cours et exercices Exemple Lecture des noms de colonnes (suite) echo "Lecture impossible"; else $nbcol=mysql_num_fields($result); $nbart=mysql_num_rows($result); echo "<h3> Il y a $nbart clients habitant Paris</h3>"; //Affichage des titres du tableau echo "<table border=\"1\"> <tr>"; for($i=0;$i<$nbcol;$i++) echo "<th>", mysql_field_name($result,$i)," </th>"; echo "</tr>"; //Affichage des valeurs du tableau for($i=0;$i<$nbart;$i++) $ligne=mysql_fetch_row($result); echo "<tr>"; for($j=0;$j<$nbcol;$j++) echo "<td>",$ligne[$j],"</td>"; echo "</tr>"; echo "</table>"; mysql_free_result($result);?> </body> </html> Figure 15-3 Affichage automatique des en-têtes de tableau HTML

14 Accès à MySQL avec PHP CHAPITRE Utilisation d un objet À l exemple 15-5, l appel de la fonction mysql_field_name($result,$i) pourrait être remplacé par mysql_fetch_field($result,$i)->name. Cette dernière fonction, ayant pour syntaxe object mysql _fetch_field($result,$i), retourne un objet dont la propriété name contient le nom de la colonne dont la position est précisée par l entier $i. Récupération des valeurs dans un objet Vous pouvez récupérer non seulement le nom de chaque colonne en appelant la fonction mysql_fetch_field() mais également la valeur de chaque colonne d un résultat sous la forme d une propriété d objet grâce à la fonction mysql_fetch_object(). La syntaxe de cette fonction est la suivante : object mysql_fetch_object(resource $result) L objet retourné par cette fonction a autant de propriétés que la requête a sélectionné de colonnes, les noms des propriétés étant ceux des colonnes ou des alias éventuels. L exemple 15-6 réalise le même affichage que l exemple 15-5 en utilisant cette fonction. Les seules différences résident dans l utilisation de la fonction mysql_fetch_field() (repère ) pour afficher les en-têtes du tableau HTML puis de mysql_fetch_object() pour lire chacune des lignes du résultat (repère ). Un nouvel appel de mysql_fetch_field() permet d enregistrer le nom de chacune des propriétés de l objet dans la variable $nomcol (repère ), ce qui permet d afficher toutes les données d une ligne. La syntaxe $ligne->$nomcol permet de lire chaque propriété de l objet (repère ). Le résultat affiché est identique à celui de la figure Exemple Lecture des données au moyen d un objet <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso "> <title>lecture de la table client</title> <style type="text/css" > table border-style:double;border-width: 3px;border-color: red;background-color: yellow; </style> </head> <body> <?php include("connex.inc.php"); $idcom=connex("magasin","myparam"); $requete="select id_client AS 'Code client',nom,prenom,adresse,age,mail FROM client WHERE ville ='Paris'

15 418 PHP 5 Cours et exercices Exemple Lecture des données au moyen d un objet (suite) ORDER BY nom"; $result=@mysql_query($requete,$idcom); if(!$result) echo "Lecture impossible"; else $nbcol=mysql_num_fields($result); $nbart=mysql_num_rows($result); echo "<h3> Il y a $nbart clients habitant Paris</h3>"; //Affichage des titres du tableau echo "<table border=\"1\"> <tr>"; for($i=0;$i<$nbcol;$i++) echo "<th>", mysql_fetch_field($result,$i)->name," </th>"; echo "</tr>"; //Affichage des valeurs du tableau for($i=0;$i<$nbart;$i++) $ligne=mysql_fetch_object($result); echo "<tr>"; for($j=0;$j<$nbcol;$j++) $nomcol=mysql_fetch_field($result,$j)->name; echo "<td>",$ligne->$nomcol,"</td>"; echo "</tr>"; echo "</table>"; mysql_free_result($result);?> </body> </html> Insertion de données dans la base Un site interactif se doit de permettre aux utilisateurs d effectuer des saisies de données dans un formulaire et de les enregistrer dans une base de données. Les méthodes d insertion à partir de phpmyadmin ne peuvent convenir dans ce cas car elles sont réservées à l administrateur du site. En vous situant toujours dans la perspective de création d un site de commerce en ligne, vous allez envisager comment réaliser la saisie puis l insertion des coordonnées d un visiteur dans la table client de la base magasin. Vous lui permettrez ensuite d effectuer

16 Accès à MySQL avec PHP CHAPITRE une mise à jour de ses paramètres personnels de façon que la base reste à jour, en cas de changement d adresse, par exemple. Insertion des données Comme vous l avez vu au chapitre 6, consacré aux formulaires, l outil de communication essentiel entre le poste client et le serveur est le formulaire HTML. Ce dernier permet la saisie de données et leur envoi vers le serveur, sur lequel un script PHP enregistre les valeurs saisies dans la base MySQL. Vous disposez déjà des fonctions personnalisées de connexion connex() et mysql_query() pour envoyer la requête. Seule la requête SQL INSERT, qui va être envoyée au serveur, distingue cette opération de celle de lecture des données. Le script de l exemple 15-7 réalise ce type d insertion à partir d un formulaire permettant à un client d enregistrer ses coordonnées lors d une commande. Comme ceux du chapitre 6, il commence par vérifier l existence des saisies obligatoires correspondant aux variables $_POST['nom'], $_POST[adresse] et $_POST[ville] (repère ). Dans le cas où une requête est formée en utilisant des saisies faites par l utilisateur dans un formulaire, il est préférable d utiliser un caractère d échappement pour les caractères spéciaux des chaînes récupérées dans le tableau $_POST, en particulier les guillemets, qui peuvent poser problème. Vous disposez pour cela des fonctions mysql_escape_string() et mysql_real_escape_string(), dont la syntaxe respective est la suivante : string mysql_escape_string(string $chaine) string mysql_real_escape_string(string $chaine[,resource $idcom]) La seconde présente l avantage de tenir compte du jeu de caractères utilisé. Le jeu de caractères utilisé sur le client MySQL peut être lu en appelant la fonction mysql_client _encoding(), qui retourne ce code dans une chaîne explicite, par exemple 'latin1'. Par précaution, il est préférable d appliquer ces fonctions à chacune des variables récupérées plutôt qu à la chaîne de requête dans son entier. Aucune de ces deux fonctions n échappe les caractères "%" et "_". Vous récupérez et protégez ensuite toutes les valeurs du tableau $_POST dans des variables de façon à obtenir un code plus court par la suite (repères à ). La valeur "\N" représente la valeur NULL de la variable $id_client. Elle permet que la colonne id_client de la table client soit incrémentée d une unité à chaque nouvelle insertion. La fonction mysql_insert_id(), dont la syntaxe est la suivante : int mysql_insert_id([$idcom]) retourne la dernière valeur insérée dans une colonne ayant l option AUTO_INCREMENT. Elle sert à donner son numéro au client pour qu il puisse s identifier lors d une autre connexion.

17 420 PHP 5 Cours et exercices La requête SQL INSERT contenue dans la variable $requete (repère ) permet l insertion de toutes ces valeurs dans la table client. Dans le cas d une commande INSERT, le résultat de la requête envoyée par la fonction mysql_query() n est qu une valeur booléenne TRUE ou FALSE selon que l insertion a été réalisée ou non (repère ). Elle vous permet d afficher un message d information indiquant la bonne exécution de l insertion. Le numéro attribué au client lui est communiqué dans une boîte d alerte JavaScript (voir repère et figure 15-5). Exemple Insertion des données avec un formulaire <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" " <html> <head> <title>saisissez vos coordonnées</title> <meta http-equiv="content-type" content="text/html; charset=iso "> </head> <body> <form action= "<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>vos coordonnées</b></legend> <table> <tr><td>nom : </td><td><input type="text" name="nom" size="40" maxlength="30"/> </td></tr> <tr><td>prénom : </td><td><input type="text" name="prenom" size="40" maxlength="30"/> </td></tr> <tr><td>age : </td><td><input type="text" name="age" size="40" maxlength="2"/></td> </tr> <tr><td>adresse : </td><td><input type="text" name="adresse" size="40" maxlength="60"/> </td></tr> <tr><td>ville : </td><td><input type="text" name="ville" size="40" maxlength="40"/> </td></tr> <tr><td>mail : </td><td><input type="text" name="mail" size="40" maxlength="50"/> </td></tr> <tr> <td><input type="reset" value=" Effacer "></td> <td><input type="submit" value=" Envoyer "></td> </tr> </table> </fieldset> </form> <?php include('connex.inc.php'); if(!empty($_post['nom'])&&!empty($_post['adresse'])&&!empty($_post['ville'])) $id_client="\n"; $nom= $_POST['nom']; $prenom=$_post['prenom']; $age=$_post['age']; $adresse=$_post['adresse'];

18 Accès à MySQL avec PHP CHAPITRE $ville=$_post['ville']; $mail=$_post['mail']; //Requète SQL $requete="insert INTO client VALUES('$id_client','$nom','$prenom','$age', '$adresse','$ville','$mail')"; $idcom=connex('magasin','myparam'); $result=mysql_query($requete,$idcom); mysql_close($idcom); if(!$result) echo "<h2>erreur d'insertion \n n ",mysql_errno()," : ",mysql_error()."</h2>"; else echo "<script type=\"text/javascript\"> alert('vous êtes enregistré Votre numéro de client est : ". mysql_insert_id()."')</script>"; else echo "Formulaire à compléter!";?> </body> </html> La figure 15-4 illustre la page de saisie. Un affichage du contenu de la table client à l aide de phpmyadmin vous permettrait de contrôler la bonne insertion des données du visiteur. Figure 15-4 Formulaire d insertion Figure 15-5 Communication du numéro de client dans une boîte d alerte

19 422 PHP 5 Cours et exercices Mise à jour d une table Pour assurer le meilleur service aux clients du site, il est important de leur permettre de modifier leurs coordonnées en cas de changement d adresse ou de nom. L exemple 15-8 crée une page contenant un formulaire de saisie du code client dans une zone de texte. Vous pourriez tout aussi bien l utiliser pour mettre à jour les tarifs de la table article. L attribut action du formulaire renvoie le traitement des données au fichier mysql9.php, dont le code est donné à l exemple La page créée est illustrée à la figure Exemple Page de saisie du code client <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" " <html> <head> <title>modifiez vos coordonnées</title> <meta http-equiv="content-type" content="text/html; charset=iso "> </head> <body> <form action= "mysqlex9.php" method="post" enctype="application/ x-www-form-urlencoded"> <fieldset> <legend><b>saisissez votre code client pour modifier vos coordonnées</b></legend> <table> <tr> <td>code client : </td> <td><input type="text" name="code" size="20" maxlength="10"/></td></tr> <tr><td>modifier : </td> <td><input type="submit" value="modifier"/></td></tr> </table> </fieldset> </form> </body> </html> Figure 15-6 Page de saisie du code client La mise à jour des coordonnées du client est réalisée par le script de l exemple La première inclusion de code PHP renvoie le client vers la page de saisie du code s il a validé le formulaire sans avoir effectué de saisie (repère ). Rappelons qu elle doit figurer en tête du fichier car elle utilise la fonction header() pour effectuer la redirection.

20 Accès à MySQL avec PHP CHAPITRE La suite du fichier comporte deux parties distinctes. La première crée dynamiquement un formulaire permettant la modification des données, et la seconde enregistre ces données dans la base. Lors du premier appel du fichier de l exemple 15-9, la condition de l instruction if (repère ) est nécessairement vérifiée car la variable $_POST[ modif ] ne contient rien. Elle correspond à la valeur associée au bouton submit du formulaire qui n est pas encore créé. Le script crée une connexion au serveur MySQL pour y lire les coordonnées actuelles du client, dont le code est contenu dans la variable $code issue de la page de saisie de l exemple 15-8 (repère ). La requête SQL sélectionne toutes les colonnes de la table client pour retrouver la ligne dont l identifiant client (colonne id_client de la table client) correspond à la valeur de la variable $code (repère ). Cela permet de ne saisir que les modifications éventuelles de coordonnées du client, sans devoir ressaisir l ensemble. Ces coordonnées sont lues à l aide de la fonction mysql_fetch_row() puisque le résultat de la requête SELECT ne comporte qu une seule ligne (repère ). Elles sont alors contenues dans la variable $coord de type array. Pour afficher les coordonnées dans le formulaire, vous devez attribuer les valeurs de ses éléments aux attributs value des différents champs <input> (repère ). La figure 15-7 montre un exemple de création dynamique de formulaire pour le client dont le code vaut 3. Le champ caché code du formulaire permet de passer la valeur du code client à la partie du script chargée de l enregistrement des données modifiées (repère ). L envoi du formulaire utilise la deuxième partie du script, qui met à jour les données du visiteur dans la table client après avoir vérifié l existence de valeurs pour les champs obligatoires du formulaire (repère ). Seules les colonnes nom, adresse, ville et mail peuvent être mises à jour à l aide de la requête suivante (repère ) : UPDATE client SET nom='$nom',adresse='$adresse',ville='$ville',mail='$mail' WHERE id_client='$code' La vérification du résultat de la requête (repère ) permet d afficher une boîte d alerte JavaScript contenant soit un message d erreur, soit la confirmation de l enregistrement. La page ne devant pas être une impasse, le visiteur est redirigé d office vers la page d accueil du site index.htm. (repères et ). Exemple Page de modification des coordonnées <?php if(empty($_post['code']))header("location:mysqlex8.php");?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" " <html> <head> <title>modifiez vos coordonnées</title> <meta http-equiv="content-type" content="text/html; charset=iso "> </head> <body> <?php

21 424 PHP 5 Cours et exercices Exemple Page de modification des coordonnées (suite) if($_post['modif']!='enregistrer') //CREATION DU FORMULAIRE include('connex.inc.php'); $code=mysql_escape_string($_post['code']); //Requète SQL $requete="select * FROM client WHERE id_client='$code' "; $idcom=connex('magasin','myparam'); $result=@mysql_query($requete,$idcom); $coord=mysql_fetch_row($result); mysql_close($idcom); //Création du formulaire echo "<form action= \"". $_SERVER['PHP_SELF']."\" method=\"post\"enctype=\ "application/x-www-form-urlencoded\">"; echo "<fieldset>"; echo "<legend><b>modifiez vos coordonnées</b></legend>"; echo "<table>"; echo "<tr><td>nom : </td><td><input type=\"text\" name=\"nom\" size=\"40\" maxlength=\"30\" value=\"$coord[1]\"/> </td></tr>"; echo "<tr><td>prénom : </td><td><input type=\"text\" name=\"prenom\" size=\"40\" maxlength=\"30\" value=\"$coord[2]\"/></td></tr>"; echo "<tr><td>age : </td><td><input type=\"text\" name=\"age\" size=\"40\" maxlength=\"2\" value=\"$coord[3]\"/></td></tr>"; echo "<tr><td>adresse : </td><td><input type=\"text\" name=\"adresse\" size=\"40\" maxlength=\"60\" value=\"$coord[4]\"/></td></tr>"; echo "<tr><td>ville : </td><td><input type=\"text\" name=\"ville\" size=\"40\" maxlength=\"40\" value=\"$coord[5]\"/></td></tr>"; echo "<tr><td>mail : </td><td><input type=\"text\" name=\"mail\" size=\"40\" maxlength=\"50\" value=\"$coord[6]\"/></td></tr>"; echo "<tr><td><input type=\"reset\" value=\" Effacer \"></td> <td><input type=\"submit\" name=\"modif\" value=\"enregistrer\"></td></tr></table>"; echo "</fieldset>"; echo "<input type=\"hidden\" name=\"code\" value=\"$code\"/>"; echo "</form>"; elseif(isset($_post['nom'])&& isset($_post['adresse'])&& isset($_post['ville'])) //ENREGISTREMENT include('connex.inc.php'); $nom=mysql_escape_string($_post['nom']); $adresse=mysql_escape_string($_post['adresse']); $ville=mysql_escape_string($_post['ville']); $mail=mysql_escape_string($_post['mail']); $code=mysql_escape_string($_post['code']); //Requète SQL $requete="update client SET nom='$nom',adresse='$adresse',ville='$ville', mail='$mail' WHERE id_client='$code'"; $idcom=connex('magasin','myparam'); $result=mysql_query($requete,$idcom);

22 Accès à MySQL avec PHP CHAPITRE mysql_close($idcom); if(!$result) echo "<script type=\"text/javascript\"> alert('erreur : ".mysql_error()."')</script>"; else echo "<script type=\"text/javascript\"> alert('vos modifications sont enregistrées');window.location='index.htm';</script>"; else echo "Modifier vos coordonnées!";?> </body> </html> Figure 15-7 Page de saisie des coordonnées créée dynamiquement Vérification Pour vérifier que la mise à jour a bien été réalisée, vous pourriez appeler la fonction mysql_affected_rows(), dont la syntaxe est int mysql_affected_rows([$idcom]). Elle retourne le nombre de lignes concernées par les commandes SQL INSERT, UPDATE et DELETE. Lors de la mise à jour des coordonnées d un client, elle retourne la valeur 1 si l opération est menée à bien. Au repère de l exemple 15-9, vous pourriez donc écrire : if(mysql_affected_rows()!=1) //Affichage de l erreur else //Message de confirmation

23 426 PHP 5 Cours et exercices Recherche dans la base Un site de commerce en ligne doit permettre à ses visiteurs et futurs clients d effectuer des recherches dans la base de données afin d accéder plus rapidement à l information recherchée. Il doit en outre permettre d effectuer des statistiques marketing à l usage du propriétaire du site. Ces recherches concernent aussi bien les sites de commerce en ligne que les annuaires et moteurs de recherche des sites de contenu. L exemple crée un formulaire classique permettant de saisir un mot-clé et d effectuer des choix de tri des résultats. Les critères de tri selon le prix, la catégorie ou l identifiant d article sont affichés sous forme de liste déroulante ainsi que celui du critère de tri selon le prix, la catégorie ou l identifiant d article. Le choix de l ordre croissant ou décroissant s effectue au moyen de deux boutons radio ayant le même attribut name, ce qui les rend exclusifs l un de l autre. Le script contrôle d abord que le visiteur a saisi un mot-clé dans le formulaire en vérifiant que la variable $_POST[ motcle ] n est pas vide (repère ). Il récupère ensuite le mot-clé, la catégorie, le critère de tri et l ordre d affichage respectivement dans les variables $motcle, $categorie, $ordre et $tri (repères à ). Si la catégorie choisie est "tous", la partie de la commande WHERE concernant cette catégorie est vide. Pour les autres choix, elle est égale à "AND categorie=$categorie" (repère ). La requête de sélection suivante (repère ) est alors créée par le code : "SELECT id_article AS 'Code article',designation AS 'Description',prix,categorie AS 'Catégorie' FROM article WHERE designation LIKE'%$motcle%'".$reqcategorie." ORDER BY $tri $ordre" L utilisation d alias donne un meilleur affichage des titres du tableau de résultats. Après la connexion au serveur, vous récupérez le résultat de la requête dans la variable $result. La lecture des résultats et l affichage de toutes les lignes retournées sont réalisés par le même code que celui de l exemple 15-5 (repère ). La figure 15-8 illustre la page créée après la recherche du mot-clé portable. Exemple Page de recherche d articles <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" " <html> <head> <title>rechercher un article dans le magasin</title> <meta http-equiv="content-type" content="text/html; charset=iso "> </head> <body> <form action= "<?php echo $_SERVER['PHP_SELF']?>" method="post" enctype="application/x-www-form-urlencoded"> <fieldset> <legend><b>rechercher un article en magasin</b></legend>

24 Accès à MySQL avec PHP CHAPITRE <table> <tr> <td>mot-clé: </td> <td><input type="text" name="motcle" size="40" maxlength="40" value=" <?= $_POST['motcle']?>"/></td> </tr> <tr> <td>dans la catégorie : </td> <td> <select name="categorie"> <option value="tous">tous</option> <option value="vidéo">vidéo</option> <option value="informatique">informatique</option> <option value="photo">photo</option> <option value="divers">divers</option> </select> </td> </tr> <tr> <td>trier par : </td> <td> <select name="tri"> <option value="prix">prix</option> <option value="categorie">catégorie</option> <option value="id_article">code</option> </select> </td> </tr> <tr><td>en ordre: </td> <td>croissant<input type="radio" name="ordre" value="asc" checked="checked"/> Décroissant<input type="radio" name="ordre" value="desc" /> </td> </tr> <tr><td>envoyer</td><td><input type="submit" name="" value="ok"/></td> </tr> </table> </fieldset> </form> <?php if(!empty($_post['motcle'])) include('connex.inc.php'); $motcle=mysql_escape_string($_post['motcle']); $categorie=mysql_escape_string($_post['categorie']); $ordre=mysql_escape_string($_post['ordre']); $tri=mysql_escape_string($_post['tri']); //Requète SQL $reqcategorie=($_post['categorie']=="tous")?"":"and categorie='$categorie'"; $requete="select id_article AS 'Code article',designation AS 'Description', prix,categorie AS 'Catégorie' FROM article WHERE designation LIKE'%$motcle%'".$reqcategorie."ORDER BY $tri $ordre"; $idcom=connex('magasin','myparam'); $result=mysql_query($requete,$idcom);

25 428 PHP 5 Cours et exercices Exemple Page de recherche d articles (suite) //Code identique à celui de l'exemple 15.5 if(!$result) echo "Lecture impossible"; else $nbcol=mysql_num_fields($result); $nbart=mysql_num_rows($result); echo "<h3> Il y a $nbart articles correspondant au mot-clé : $motcle</h3>"; //Affichage des titres du tableau echo "<table border=\"1\"> <tr>"; for($i=0;$i<$nbcol;$i++) echo "<th>", mysql_field_name($result,$i)," </th>"; echo "</tr>"; //Affichage des valeurs du tableau for($i=0;$i<$nbart;$i++) $ligne=mysql_fetch_row($result); echo "<tr>"; for($j=0;$j<$nbcol;$j++) echo "<td>",$ligne[$j],"</td>"; echo "</tr>"; echo "</table>"; mysql_free_result($result);?> </body> </html> Ce chapitre a montré les différentes techniques qui permettent de lire les données d une base et d en enrichir le contenu à partir de saisies effectuées dans un formulaire. La sélection d informations en réponse à la requête d un visiteur et l affichage des résultats dans une page créée dynamiquement à partir de ces résultats sont les éléments prépondérants de la création de sites dynamiques. Les études de cas des chapitres suivants illustrent davantage ces techniques.

26 Accès à MySQL avec PHP CHAPITRE Figure 15-8 Formulaire de recherche et résultats obtenus Mémo des fonctions int mysql_affected_rows([resource $idcom]) Retourne le nombre de lignes concernées par la dernière requête SQL INSERT,DELETE ou UPDATE envoyée au serveur. string mysql_client_encoding([resource $idcom]) Retourne le nom du jeu de caractères utilisé par le client MySQL pour la connexion en cours si elle n est pas précisée. boolean mysql_close([resource $idcom]) Ferme la connexion MySQL dont l identifiant est précisé ou la connexion en cours. Retourne TRUE si l opération a lieu et FALSE dans le cas contraire. resource mysql_connect(string $host,string $user,string $pass) Ouvre une connexion à un serveur MySQL identifié par $host pour le client $user et le mot de passe $pass. Retourne un identifiant de connexion. boolean mysql_data_seek(resource $result,int numéro_ligne) Place le pointeur dans le résultat $result à la ligne indiquée et retourne TRUE si l opération est réussie. L appel de la fonction mysql_fetch_row() retourne cette ligne. string mysql_db_name(resource $result,int N) Retourne le nom de la nième base figurant dans le résultat $result retourné par la fonction mysql_list_dbs(). int mysql_errno([resource $idcom]) Retourne le numéro de la dernière erreur survenue pour la connexion précisée ou celle qui est en cours si le paramètre est omis. string mysql_error([resource $idcom]) Retourne le dernier message d erreur pour la connexion précisée ou celle qui est en cours si le paramètre est omis.

27 430 PHP 5 Cours et exercices string mysql_escape_string(string $ch) Protège les caractères spéciaux de la chaîne $ch (sauf % et _) et retourne la chaîne protégée. array mysql_fetch_array(resource $result[,int typetab]) Retourne la ligne en cours du résultat dans un tableau. Chaque appel de la fonction retourne la ligne suivante ou FALSE s il n y a plus de ligne. Le paramètre typetab précise le type du tableau retourné : associatif avec la valeur MYSQL_ASSOC, indicé avec la valeur MYSQL_NUM, les deux avec MYSQL_BOTH (utilise plus de mémoire). array mysql_fetch_assoc(resource $result) Identique à la fonction mysql_fetch_array() utilisée avec le paramètre MYSQL_ASSOC. object mysql_fetch_field(resource $result [,int numero_colonne]) Retourne un objet dont les propriétés contiennent des informations sur les données du résultat. Ces propriétés sont les suivantes : name : nom de la colonne. table : nom de la table contenant la colonne. max_length : taille de la colonne de type VARCHAR. not_null : vaut 1 si la colonne a cette option. primary_key : vaut 1 si la colonne est une clé primaire. unique_key : vaut 1 si la colonne a l option UNIQUE. multiple_key : vaut 1 si la colonne est une clé non unique. numeric : vaut 1 si la colonne est de type numérique. blob : vaut 1 si la colonne est de type BLOB. type : type de la colonne. unsigned : vaut 1 si la colonne a l option UNSIGNED. zerofill : vaut 1 si la colonne a l option ZEROFILL (pour les types numériques). array mysql_fetch_lengths(resource $result) Retourne la taille de chaque colonne du résultat. object mysql_fetch_object(resource $result) Retourne une ligne du résultat dans un objet dont les propriétés ont pour nom celui des colonnes et qui contiennent les valeurs de chaque colonne. array mysql_fetch_row(resource $result) Retourne un tableau indicé contenant la ligne en cours du résultat précisé et FALSE s il n y a plus de ligne. string mysql_field_flags(resource $result, int numero_colonne) Retourne les options de la colonne précisée du résultat. Les valeurs possibles sont : 'not_null', 'primary_key', 'unique_key', 'multiple_key', 'blob', 'unsigned', 'zerofill', 'binary', 'enum', 'auto_increment' et 'timestamp'. Voir aussi la fonction mysql_fetch_field(). int mysql_field_len(resource $result, int N) Retourne la taille de la colonne N du résultat. string mysql_field_name(resource $result, int N) Retourne le nom de la nième colonne du résultat. int mysql_field_seek(resource $result, int numéro_colonne) Place le pointeur de résultat sur la nième colonne du résultat. L appel de la fonction mysql_fetch_field() retourne la valeur du champ. string mysql_field_table(resource $result,int N) Retourne le nom de la table qui contient la nième colonne du résultat.

28 Accès à MySQL avec PHP CHAPITRE string mysql_field_type((resource $result, int N) Retourne le type de la nième colonne du résultat. boolean mysql_free_result(resource $result) Libère la mémoire utilisée par le résultat et retourne TRUE en cas de réussite et FALSE dans le cas contraire. int mysql_insert_id(resource $idcom) Retourne la dernière valeur entière insérée dans une colonne ayant l option AUTO_INCREMENT. resource mysql_list_dbs(resource $idcom) Retourne un identifiant de résultat contenant la liste des bases de données du ser veur MySQL. resource mysql_list_fields(string base,string table[, resource $idcom]) Retourne un identifiant de résultat contenant la liste des colonnes d une table donnée située dans une base précisée. rsource mysql_list_tables(string base[, resource $idcom]) Retourne un identifiant de résultat contenant la liste des tables d une base. int mysql_num_fields(resource $result) Retourne le nombre de colonnes présentes dans un résultat. int mysql_num_rows(resource $result) Retourne le nombre de lignes d un résultat. resource mysql_pconnect(string $host,string $user,string $pass) Identique à la fonction mysql_connect() mais crée une connexion permanente. boolean mysql_ping([resource $idcom]) Vérifie si la connexion est toujours active et effectue une reconnexion dans le cas contraire. Retourne TRUE si la connexion est effectuée et FALSE dans le cas contraire. resource mysql_query(string $requete[,resource $idcom[,int mode]]) Envoie une requête SQL au serveur et retourne un identifiant de résultat. string mysql_real_escape_string(string $chaine [, resource $idcom]) Échappe la chaîne précisée afin de l inclure dans une requête SQL. divers mysql_result( resource $result,int N [,divers M]) Retourne la valeur du champ de la colonne M de la ligne N du résultat. boolean mysql_select_db(string base[,resource $idcom]) Choisit la base sur laquelle vont s effectuer les opérations suivantes. Retourne TRUE si la base existe et FALSE dans le cas contraire. string mysql_tablename( resource $result,int N) Utilise l identifiant de résultat retourné par la fonction mysql_list_tables() et retourne le nom de la nième table de la base. resource mysql_unbuffered_query(string $requete[,resource $idcom]) Envoie une requête au serveur mais ne met pas le résultat en buffer. Le résultat doit être utilisé avant l envoi d une autre requête.

29 432 PHP 5 Cours et exercices Exercices Tous les exercices ci-dessous portent sur la base de données voitures créée aux chapitres 13 et 14. Exercice 1 Créez un script permettant d afficher le contenu de la table modele dans un tableau HTML. Les résultats doivent être triés par marque. Exercice 2 Créez un formulaire permettant l insertion de nouvelles données dans la table modele. Exercice 3 Créez un formulaire permettant l insertion simultanée des coordonnées d une personne dans les tables proprietaire et cartegrise. Il doit contenir les zones de saisie des coordonnées de la personne et la liste des modèles d une marque créée dynamiquement à partir de la saisie de la marque. Exercice 4 Créez un formulaire de recherche permettant de retrouver tous les propriétaires d un type de véhicule de marque et de modèle donnés. Affichez les résultats sous forme de tableau HTML. Exercice 5 Créez un formulaire de recherche permettant de retrouver tous les véhicules possédés par une personne donnée. Affichez les résultats sous forme de tableau HTML. Exercice 6 Réécrivez entièrement le code de l exercice 5 en récupérant tous les résultats dans des objets et en manipulant leurs propriétés.

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

PHP 4 PARTIE : BASE DE DONNEES

PHP 4 PARTIE : BASE DE DONNEES PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Au cours de ce TP, vous allez voir comment PHP permet aux utilisateurs, une interaction avec

Plus en détail

Mysql avec EasyPhp. 1 er mars 2006

Mysql avec EasyPhp. 1 er mars 2006 Mysql avec EasyPhp 1 er mars 2006 Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requètes vers les bases de données relationnelles. Il en reprend la syntaxe

Plus en détail

TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012

TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012 TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012 FORMULAIRE DE CONTACT POUR PORTFOLIO PRINCIPE GENERAL Nous souhaitons réaliser un formulaire de contact comprenant les champs suivants : NOM PRENOM ADRESSE MAIL MESSAGE

Plus en détail

PHP. PHP et bases de données

PHP. PHP et bases de données Accés aux bases de données Une des raisons du succès de PHP Support d un grand nombre de bases - MySQL - Oracle - PostgreSQL - SQLite - Microso> Access - DBM - IBM Informix -... Accés aux bases de données

Plus en détail

PHP et les Bases de données - Généralités

PHP et les Bases de données - Généralités PHP et les Bases de données - Généralités Conception d une base de données Méthodes utilisées : MERISE, UML Modèle conceptuel des données MCD, Modèle logique MLD, Modèle Physique MPD. Ces aspects seront

Plus en détail

PDO : PHP Data Object 1/13

PDO : PHP Data Object 1/13 PDO : PHP Data Object 1/13 Tous ne sont que des extensions... Les fonstions mysql_* : API mysql Les fonctions mysqli_* aussi Il en est de même pour PDO PDO (avec le pilote PDO MySQL Driver et Extension

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Stockage du fichier dans une table mysql:

Stockage du fichier dans une table mysql: Stockage de fichiers dans des tables MYSQL avec PHP Rédacteur: Alain Messin CNRS UMS 2202 Admin06 30/06/2006 Le but de ce document est de donner les principes de manipulation de fichiers dans une table

Plus en détail

Formulaires et Compteurs

Formulaires et Compteurs Formulaires et Compteurs Création de formulaires et de compteurs avec extensions FrontPage ou ASP. INFORMATIONS CONNEXES Le but du présent manuel est de permettre à une personne familière d Internet de

Plus en détail

L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248

L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 L envoi d un formulaire par courriel Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 Chapitre 9 L envoi d un formulaire par courriel L envoi par courriel d informations

Plus en détail

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework L'objectif de ce document est de poser des bases de réflexion sur la modélisation d'un projet réalisé

Plus en détail

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2) Le langage PHP (2) Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ 1 / 54 1 La programmation orientée objet 2 Gestion de Connexions HTTP 3 Manipulation

Plus en détail

Séance d ED n 5 : HTML et JavaScript

Séance d ED n 5 : HTML et JavaScript Séance d ED n 5 : HTML et JavaScript EXERCICE 1 1) le but de cet exercice est de construire l'interface suivante en html: une réponse : 1)

Plus en détail

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin Objectifs : Apprendre à l apprenant à lancer un serveur local «Apache» Apprendre à l'apprenant à lancer un serveur MySQL

Plus en détail

Pratique et administration des systèmes

Pratique et administration des systèmes Université Louis Pasteur Licence Informatique (L2) UFR de Mathématiques et Informatique Année 2007/2008 1 But du TP Pratique et administration des systèmes TP10 : Technologie LAMP Le but de ce TP est de

Plus en détail

Attaques applicatives

Attaques applicatives Attaques applicatives Attaques applicatives Exploitation d une mauvaise programmation des applications Ne touche pas le serveur lui-même mais son utilisation/ configuration Surtout populaire pour les sites

Plus en détail

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Création d'un site dynamique en PHP avec Dreamweaver et MySQL Création d'un site dynamique en PHP avec Dreamweaver et MySQL 1. Création et configuration du site 1.1. Configuration de Dreamweaver Avant de commencer, il est nécessaire de connaître l'emplacement du

Plus en détail

Formulaire pour envoyer un mail

Formulaire pour envoyer un mail Formulaire pour envoyer un mail AVERTISSEMENT : Ce tuto est une compilation de plusieurs sources trouvées sur internet, dont les références sont données à la fin de cet article. Le but de ce tutoriel n'est

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Gestion de stock pour un magasin

Gestion de stock pour un magasin Département d Informatique Université de Fribourg, Suisse http://diuf.unifr.ch Gestion de stock pour un magasin Stock online utilise ASP/MS-Access DO Thi Tra My No étudiant : 05-333-750 Travail de séminaire

Plus en détail

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado - RAPPORT AUDIT SEO Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado 17 septembre 2013 Table des matières Optimisation structurelle 2 Optimisation des standards, performances et

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs Utilisation des classes de PourCGI par Michel Michaud, version 2002-11-23 Les fichiers PourCGI.h et PourCGI.cpp rendent disponibles deux classes et une fonction libre qui permettent de faire facilement

Plus en détail

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10 Dossier Technique Page 1/10 Sommaire : 1. REPONSE TECHNIQUE A LA DEMANDE 3 1.1. Prise en compte de la dernière version de phpcas 3 1.2. Gestion de la connexion à GRR 3 1.2.1. Récupération des attributs

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

RÉALISATION D UN SITE DE RENCONTRE

RÉALISATION D UN SITE DE RENCONTRE RÉALISATION D UN SITE DE RENCONTRE Par Mathieu COUPE, Charlène DOUDOU et Stéphanie RANDRIANARIMANA Sous la coordination des professeurs d ISN du lycée Aristide Briand : Jérôme CANTALOUBE, Laurent BERNARD

Plus en détail

HTML, CSS, JS et CGI. Elanore Elessar Dimar

HTML, CSS, JS et CGI. Elanore Elessar Dimar HTML, CSS, JS et CGI Elanore Elessar Dimar Viamen GPAs Formation, 13 avril 2006 Sommaire Qu est-ce que HTML? HTML : HyperText Marckup Language XML : extensible Marckup Language Qu est-ce que HTML? HTML

Plus en détail

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A. ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A. - 1 - PREAMBULE Les conditions générales d utilisation détaillant l ensemble des dispositions applicables

Plus en détail

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin Sécurité des sites Web Pas un cours un recueil du net INF340 Jean-François Berdjugin Vulnérabilité Définition (wikipédia) : Dans le domaine de la sécurité informatique, une vulnérabilité est une faiblesse

Plus en détail

SYSTÈMES D INFORMATIONS

SYSTÈMES D INFORMATIONS SYSTÈMES D INFORMATIONS Développement Modx Les systèmes de gestion de contenu Les Content Management Système (CMS) servent à simplifier le développement de sites web ainsi que la mise à jour des contenus.

Plus en détail

Les BASES de DONNEES dans WampServer

Les BASES de DONNEES dans WampServer Les BASES de DONNEES dans WampServer 1 Définitions Générales Une base de données (BDD) permet d'enregistrer, de stocker, de ranger des données de façon organisée et hiérarchisée. SQL est le langage qui

Plus en détail

Mise en place d un serveur Proxy sous Ubuntu / Debian

Mise en place d un serveur Proxy sous Ubuntu / Debian BTS INFORMATIQUE DE GESTION Option Administrateur Réseaux Benoît VERRON Activité n 1 Mise en place d un serveur Proxy sous Ubuntu / Debian Présentation d un Proxy Un proxy (serveur mandataire) est un serveur

Plus en détail

Création de formulaires interactifs

Création de formulaires interactifs SESSION 16 Création de formulaires interactifs Programme de la session Lancer un sondage en utilisant divers éléments d'entrée de formulaire Traiter les entrées utilisateur Activer un script à partir d'un

Plus en détail

Attaques de type. Brandon Petty

Attaques de type. Brandon Petty Attaques de type injection HTML Brandon Petty Article publié dans le numéro 1/2004 du magazine Hakin9 Tous droits reservés. La copie et la diffusion de l'article sont admises à condition de garder sa forme

Plus en détail

Introduction. Passage de sites statiques à des sites dynamiques

Introduction. Passage de sites statiques à des sites dynamiques PHP (ET MYSQL) Introduction HTML : pages destinées à être publiées sur Internet Texte à afficher + instructions de mise en page Pas d instructions de calcul ou de traitements conditionnels Des sites de

Plus en détail

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs. Connexion à 4D Server depuis une page ASP Par Noreddine MARGOUM, Technicien Contrôle Qualité, 4D S.A. Note technique 4D-200403-08-FR Version 1 Date 1 Mars 2004 Résumé Le propos de cette note technique

Plus en détail

STID 2ème année : TP Web/PHP

STID 2ème année : TP Web/PHP STID 2ème année : TP Web/PHP Plan de travail et aide mémoire jean.arnaud@inria.fr Ce document est composé de cinq parties : Un aide mémoire sur les aspects pratiques de la création de sites Une introduction

Plus en détail

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web NFA016 : Introduction O. Pons, S. Rosmorduc Conservatoire National des Arts & Métiers Pour naviguer sur le Web, il faut : 1. Une connexion au réseau Réseau Connexion physique (câbles,sans fils, ) à des

Plus en détail

Dans l'article précédent, vous avez appris

Dans l'article précédent, vous avez appris Pour les débutants Les différents formats de sortie proposés par PHPExcel La bibliothèque orientée objet PHPExcel permet de lire et créer des fichiers pour tableurs. Dans cette série d articles, vous apprendrez

Plus en détail

HTML/CSS - Travaux Pratiques 2

HTML/CSS - Travaux Pratiques 2 HTML/CSS - Travaux Pratiques 2 Le but de ces séances de TP est de se familiariser avec le format HTML et les feuilles de style CSS pour la création de pages web. Pour cela, vous utiliserez emacs sous Linux

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Mysql. Les requêtes préparées Prepared statements

Mysql. Les requêtes préparées Prepared statements Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production

Plus en détail

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068 HTTP/1.1 RFC 2068 1 Caractéristiques Niveau application Sans état Tout transfert de données Au dessus du protocole TCP Largement utilisé dans le World Wide Web Utilise les normes : URI (Uniform Resource

Plus en détail

I. MySQL : Serveur et SGBD

I. MySQL : Serveur et SGBD Le Système de Gestion de Base de Données MySQL I. MySQL : Serveur et SGBD Menu I. MySQL : Serveur et SGBG II. Création d'une base de données avec MySQL MySQL est un système de gestion et conception de

Plus en détail

Corrigés des exercices du livre. Exercices du chapitre 2

Corrigés des exercices du livre. Exercices du chapitre 2 Jean ENGELS PHP 5 Cours et exercices Corrigés des exercices du livre Exercices du chapitre 2 Exercice 1 Exercice 2 Parmi les variables suivantes, lesquelles ont un nom valide : mavar, $mavar, $var5, $_mavar,

Plus en détail

Activités HTML. Code: act-html

Activités HTML. Code: act-html Activités HTML act-html Activités HTML Code: act-html Originaux url: http://tecfa.unige.ch/guides/tie/html/act-html/act-html.html url: http://tecfa.unige.ch/guides/tie/pdf/files/act-html.pdf Prérequis:

Plus en détail

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2 Sommaire I. SCENARII DE TRAITEMENTS...2 I.1 : Alimentation à partir d un fichier Access (.mdb)...2 I.1 : Vérification de l intégrité des traitements SQL sur la pyramide des ages...3 I.2 : Vérification

Plus en détail

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6 Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6 2 І O2S Intégration O2S dans un site Internet Ce document présente une description

Plus en détail

1. Base de données SQLite

1. Base de données SQLite Dans ce TP, nous allons voir comment créer et utiliser une base de données SQL locale pour stocker les informations. La semaine prochaine, ça sera avec un WebService. On repart de l application AvosAvis

Plus en détail

Bible MySQL! La première version de MySQL est apparue en 1995. Cette première version est créée pour un usage personnel à partir de msql.

Bible MySQL! La première version de MySQL est apparue en 1995. Cette première version est créée pour un usage personnel à partir de msql. Bible MySQL! Bref historique de MySQL 1. MySQL MySQL est le Système de Gestion de Base de Données Relationnelle (SGBDR) Open Source le plus répandu dans le monde. Il est développé par MySQL AB, une entreprise

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Démonstration de la mise en cache via HTML 5 sur iphone

Démonstration de la mise en cache via HTML 5 sur iphone Last update: 2011/08/18 21:46 wiki:devmobile:webapp:html5:presentation Démonstration de la mise en cache via HTML 5 sur iphone Overview Parmi les nouveautés du HTML 5, l une d elles est très intéressent

Plus en détail

Paginer les données côté serveur, mettre en cache côté client

Paginer les données côté serveur, mettre en cache côté client Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

1 Introduction et installation

1 Introduction et installation TP d introduction aux bases de données 1 TP d introduction aux bases de données Le but de ce TP est d apprendre à manipuler des bases de données. Dans le cadre du programme d informatique pour tous, on

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

DOM - Document Object Model

DOM - Document Object Model DOM - Document Object Model 1 But de DOM Interfacer les langages de programmation avec les documents XML en les associant avec un modèle orienté objet DOM permet aux programmes et scripts : d'accéder et

Plus en détail

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

Proxies,, Caches & CDNs

Proxies,, Caches & CDNs Proxies,, Caches & CDNs Anthony Busson Plan Exemple de page web simple Anatomie du téléchargement d une page web Problématique Définition : Proxy, Reverse Proxy Interception, Redirection Système de cache

Plus en détail

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Transactions

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Transactions Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Cours Internet et Outils: [1/12] Intro, Internet, Web, XHTML (2H) [2/12] XHTML(2H) [3/12]

Plus en détail

www.evogue.fr SUPPORT DE COURS / PHP PARTIE 3

www.evogue.fr SUPPORT DE COURS / PHP PARTIE 3 L i a m T A R D I E U www.evogue.fr SUPPORT DE COURS / PHP PARTIE 3 Sommaire Sommaire... 2 Eléments initiaux... 3 Base de données... 3 Tables... 4 membres... 4 commandes... 4 articles... 4 details_commandes...

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

CREATION d UN SITE WEB (INTRODUCTION)

CREATION d UN SITE WEB (INTRODUCTION) CREATION d UN SITE WEB (INTRODUCTION) Environnement : World Wide Web : ordinateurs interconnectés pour l échange d informations ( de données) Langages : HTML (HyperText Markup Language) : langages pour

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Les solutions de paiement CyberMUT (Crédit Mutuel) et P@iement CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Les solutions de paiement CyberMUT (Crédit Mutuel) et P@iement CIC. Qui contacter pour commencer la mise en place d une configuration de test? Les solutions de paiement CyberMUT (Crédit Mutuel) et P@iement CIC Qui contacter pour commencer la mise en place d une configuration de test? CyberMUT Paiement - Paiement CIC Commerce Electronique mailto:centrecom@e-i.com

Plus en détail

HTML. Notions générales

HTML. Notions générales 1 HTML Le langage HTML est le langage de base permettant de construire des pages web, que celles-ci soient destinées à être affichées sur un iphone/android ou non. Dans notre cas, HTML sera associé à CSS

Plus en détail

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013 Rapport de stage Création d un site web Stage du 20/01/2013 au 21/02/2013 Auteur : Antoine Luczak Tuteur professionnel : M. Tison Tuteur scolaire : Mme Girondon Année scolaire : 2013/2014 1 Table des matières

Plus en détail

PROJET 1 : BASE DE DONNÉES REPARTIES

PROJET 1 : BASE DE DONNÉES REPARTIES PROJET 1 : BASE DE DONNÉES REPARTIES GESTION D UNE BANQUE Elèves : David Bréchet Frédéric Jacot Charles Secrétan DONNÉES DU PROJET SSC - Bases de Données II Laboratoire de Bases de Données BD réparties

Plus en détail

Diffuser un contenu sur Internet : notions de base... 13

Diffuser un contenu sur Internet : notions de base... 13 Diffuser un contenu sur Internet : notions de base... 13 1.1 Coup d œil sur l organisation de cet ouvrage.............. 15 Préambule : qu est-ce qu une page web?................ 16 À propos du HTML...........................

Plus en détail

Plateforme PAYZEN. Définition de Web-services

Plateforme PAYZEN. Définition de Web-services Plateforme PAYZEN Définition de Web-services Ordre de paiement Version 1.1 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Lyra-Network

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Cours: Administration d'une Base de Données

Cours: Administration d'une Base de Données Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Cours: Administration d'une Base de Données Table of Contents Principes...1 Structure d'un Base de Données...1 Architecture...1

Plus en détail

TD HTML AVEC CORRECTION

TD HTML AVEC CORRECTION TD HTML AVEC CORRECTION On utilisera Notepad++ comme éditeur sur Windows Vous créez un répertoire www sous vos répertoires personnels et vous mettrez vos pages dedans. Créez vos fichiers HTML et n oubliez

Plus en détail

Devenez un véritable développeur web en 3 mois!

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte? Avant-propos... V CHAPITRE 1 Scripting Windows, pour quoi faire?... 1 Dans quel contexte?.................................................. 1 La mauvaise réputation............................................

Plus en détail

PLATE-FORMES LIBRES *AMP CYBER PAIEMENT / CYBER PLUS PAIEMENT GUIDE DE MIGRATION FACILE ET EN UNE HEURE PLATE-FORME SYSTEMPAY

PLATE-FORMES LIBRES *AMP CYBER PAIEMENT / CYBER PLUS PAIEMENT GUIDE DE MIGRATION FACILE ET EN UNE HEURE PLATE-FORME SYSTEMPAY PLATE-FORMES LIBRES *AMP CYBER PAIEMENT / CYBER PLUS PAIEMENT GUIDE DE MIGRATION FACILE ET EN UNE HEURE PLATE-FORME SYSTEMPAY Référence Version 2 Auteur V. Graux Date 30/05/10 Dernière page 20 Guide de

Plus en détail

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT Table des matières : Description de l application :... 2 Les raisons d une telle application

Plus en détail

Guide d interfaçage SSO Connexion des ressources aux plates-formes de type Corrélyce. Sommaire. Titre du document

Guide d interfaçage SSO Connexion des ressources aux plates-formes de type Corrélyce. Sommaire. Titre du document Connexion des ressources aux plates-formes de type Corrélyce CRDP ACADÉMIE D AIX-MARSEILLE 31, bd d Athènes 13232 Marseille cedex 1 T 04 91 14 13 12 F 04 91 14 13 00 www.crdp.aix-marseille.fr Établissement

Plus en détail

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org Les sites Internet dynamiques contact : Patrick VINCENT pvincent@erasme.org Qu est-ce qu un site Web? ensemble de pages multimédia (texte, images, son, vidéo, ) organisées autour d une page d accueil et

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web Manuel d utilisation du module Liste de cadeaux PRO par Alize Web INSTALLER ET CONFIGURER LE MODULE (BACK OFFICE) 2 Réglages des performances 2 Télécharger le module 3 Installer le module 4 Configurer

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Programmation Objet - Cours II

Programmation Objet - Cours II Programmation Objet - Cours II - Exercices - Page 1 Programmation Objet - Cours II Exercices Auteur : E.Thirion - Dernière mise à jour : 05/07/2015 Les exercices suivants sont en majorité des projets à

Plus en détail