Mysql avec php Qu'est-ce que Mysql? Annie Danzart Annie.Danzart@enst.fr http://www.infres.enst.fr/~danzart/mysql/
Qu est-ce que Mysql? Aperçu Langage Le serveur La base de données Interfaces d accès Fonctions php d accès et de manipulation Exploitation de l envoi d une requête Formulaires dynamiques
Qu est-ce que Mysql? Système de Gestion de Bases de Données relationnelles (aujourd hui racheté par Oracle) Libre de droits (mariadb, license GPL) http://mariadb.org/ http://www.mysql.com/ Langage de manipulation de bases de données Serveur mysqld, commande mysql Base de données mysql en tant que telle (bases, utilisateurs) Fonctions d'accès intégrées dans de nombreux langages
Mysql : le langage SQL-like avec quelques restrictions mysql > create database essai; mysql > show databases; requêtes mysql > drop database essai; mysql > use essai; mysql > drop table if exists table1; mysql > create table table1 ( ID int default '0' not null auto_increment; nom text; numero int; primary key (ID) ); mysql > show columns from table1; mysql > insert into table1 (nom, numero) values ("toto","123451"); mysql > select * from table1; mysql > delete from table1 where numero="123451"; mysql > update table1 set nom="didi" where numero="123451";
Mysql : le serveur Interface de base fournie avec l'environnement exemple > mysql -h mysql.tp.enst.fr:3307 -u user -p -h : hôte ( adresse IP ) -u : utilisateur ( accès spécifique ) -p : mot de passe ( défini au moment de la création sera fourni après validation de la commande ) Après validation de la commande, une session est ouverte qui permet de frapper directement des commandes mysql mysqldump, mysqladmin, mysqlimport
Mysql : la base de données user : table des utilisateurs référencés db : table des bases existantes host : table des droits d'accès par hôte user host/user/password droits utilisateur / administrateur dans mysql host/db/user/select/insert/update/delete/alter/drop/create droits d'accès des utilisateurs pour chaque base db host host/db/select/insert/update/delete/alter/drop/create droits d accès des hôtes pour chaque base dans mysql
Mysql : interfaces d accès administration utilisateur référencé et averti public commande mysql : requêtes sql phpmyadmin : (http://www.infres.enst.fr/packages/phpmyadmintp/) outil d'administration de mysql plus convivial pas de contrôle de cohérence des données interfaces personnalisées : adaptées à un besoin particulier chargées en plus d'assurer la cohérence
Comment ça marche? Poste client firefox Serveur Apache www.infres.enst.fr 1 8 4 7 httpd mod_php5 Serveur de fichiers infres.enst.fr 2 3 5 6 Serveur Mysql mysql.infres.enst.fr mysqld bases ~danzart/public_html/exemple2.php 8
Fonctions php d accès à Mysql Exemples : $connexion = mysql_connect("mysql.tp.enst.fr:3307","user","motdepasse") mysql_close($connexion); mysql_create_db("nom",$connexion); $mysql_result=mysql_list_dbs($connexion); mysql_drop_db("test"); mysql_select_db("cd_test",$connexion); $requete="create table..."; mysql_query($requete); $mysql_result=mysql_list_fields("base","table",$connexion); Le login et le mot de passe sont exprimés "en clair" dans le script : -> les stocker dans un fichier difficile d'accès à inclure dans les pages "connexion_inc.php" -> prévoir plusieurs modes d'accès (PUBLIC, utilisateur, administrateur)
Exploitation du résultat d une requête Exemple de requête Source de connexion_inc.php <?php?> // lecture des parametres de connexion a la base de donnees include("connexion_inc.php"); // ouverture de la connexion : mysql_connect() ou mysql_pconnect() $connexion = @mysql_connect($hote,$utilisateur,$password) or die("pb de connexion"); // choix de la base de données mysql_select_db($base); // prendre la liste des champs de la table produits de la base magasin_test $query = "SELECT * FROM produits ORDER BY P_ID DESC;"; $mysql_result = @mysql_query($query) ; echo $query; // afficher le texte de la requête en phase de mise au point if ($mysql_result == FALSE) {echo "Connexion impossible"; exit;} // prendre chaque rangée while ($ligne = mysql_fetch_array($mysql_result)) { // afficher le nom du produit // mettre en forme les résultats dans une liste, un tableau html, print($ligne["p_nom"]); }
Fonctions php d accès à Mysql int mysql_query($requete [,$connexion]), int mysql_db_query($db,$requete [,$connexion]): // pour envoyer une requête int mysql_num_fields(): // pour voir le nombre de champs retournés (mysql_fetch_row()) int mysql_num_rows(): // pour voir s'il y a des résultats int mysql_insert_id()(): // numéro du dernier enregistrement inséré string mysql_error(), int mysql_errno(); // pour contrôler les erreurs si une requête n'a pas donné de résultat array mysql_fetch_array(), array mysql_fetch_row(), array mysql_fetch_object() : // pour exploiter le résultat d'une requête
Construire un formulaire dynamique Interrogation de la base de données pour construire le formulaire <form action="resultat.php"> <?php // ouverture de la connexion+choix de la base de données.. include("connexion_inc.php"); // prendre la liste des enregistrements // de la table produits de la base magasin_test $query = "SELECT * FROM produits ORDER BY P_ID DESC;"; $mysql_result = mysql_query($query) ; //prendre chaque rangée while ($ligne = mysql_fetch_array($mysql_result)) { // afficher une checkbox pour chaque produit de la base?> <input type="checkbox" name="choix[]" value="<?php echo $ligne["p_id"];?>"> <?php echo $ligne["p_nom"]."<p>"; }?> </form> <input type="submit" name="valider">
Construire un formulaire dynamique Source html résultat du script précédent <form action="resultat.php"> <input type="checkbox" name="choix[]" value= "1"> pomme <p> <input type="checkbox" name="choix[]" value="2"> poire <p> <input type="checkbox" name="choix[]" value="3"> banane <p> <input type="submit" name="valider"> </form>
Merci de votre attention Tutoriel: http://www.infres.enst.fr/~danzart/mysql/ Les exemples du cours: http://www.infres.enst.fr/~danzart/php/exemples/