PHP cours 3 : mysql avec php

I. Introduction à mysql avec php

Pour ce troisième tutorial concernant le language web PHP, et après avoir vu ensemble les bases du language ainsi que les boucles et conditions en php, nous allons voir comment utiliser une base de données avec PHP, en l’occurence ce sera mysql.
Cette intéraction entre le php et mysql est devenue assez célèbre puisque ce language et cette base de données sont très utilisés le web maintenant, et ils sont assez simples à maîtriser.

II. Explications

1- A quoi sert une base de données ?

Une base de données, comme son nom le laisse penser, sert à stocker des données.
Par exemple, si à chaque chargement de votre page web, vous souhaitez enregistrer les informations du visiteurs pour pouvoir faire des statistiques plus tard, ou si (autre exemple) vous souhaitez faire un formulaire d’inscription quelconque à votre site, alors vous aurez besoin d’une base de données pour stocker toutes les informations.

Une base de données se compose en général de tables qui contiennent des enregistrements. Ces enregistrements sont décomposés en champs. Exemple : une base de données appelée “mon_site” peut contenir une table “visiteurs” et une table “membres” si je reprend l’exemple précédent. Les champs de la table “membres” peuvent être : id, nom, prenom, ville, date_inscription, etc.

Dans ce tutorial, nous ne verrons pas comment utiliser mysql proprement dit, car ce n’est pas le but. Mais il est bien évident qu’il faut créer la structure de votre base de données avant de pouvoir l’utiliser avec php. Pour cela, vous pouvez utiliser le désormais celèbre Phpmyadmin par exemple, dont voilà un aperçu concret d’une table “sites” :

tuto php avec mysql image 1

2 – Se connecter à une base mysql avec php

Pour se connecter à une base mysql en php, il faut utiliser la fonction mysql_connect() comme dans l’exemple ci-dessous. Usuellement on met le code ci-dessous dans un fichier séparé qui est inclus dans toutes les pages qui ont besoin de la base de données. (avec un include() )

<?php
$dbhost = "localhost"; // adresse du serveur mysql
$dbuname = "damien"; // nom d'utilisateur mysql
$dbpass = "7kuPlKKv8"; // mot de passe mysql
$dbname = "monsite_www"; // nom de la base de données à laquelle vous vous connectez

$idbase = mysql_connect($dbhost, $dbuname, $dbpass); // on se connecte...
mysql_select_db($dbname); // on selectionne la base de données

?>

Voilà, avec ceci vous êtes connecté à votre base de données mysql, il ne reste plus qu’à faire ce que l’on appelle des requêtes, c’est-à-dire faire des opérations standards sur la base de données, et notamment nous allons voir ensembles les plus courantes : ajouter, modifier, supprimer, afficher des enregistrements.
Notez que vous avez toutes les syntaxes complètes de fonctions utilisables pour mysql en php, sur le manuel PHP

3 – Ajouter un enregistrement dans mysql

Pour faire des requêtes mysql, sachez tout d’abord qu’une instruction php revient régulièrement, il s’agit de la fonction mysql_query(). Cette fonction prendra en paramètre une requête SQL, si vous connaissez donc déjà la syntaxe des requêtes SQL d’une autre base de données, la tâche va être très simple pour vous, sinon lisez bien la suite 😉

Pour ajouter un enregistrement mysql avec php, l’instruction php ressemblera à ceci :

<?php

$reqadd = mysql_query("INSERT INTO membres (nom, prenom, date_inscription) VALUES ('desrousseaux', 'damien', now()) "); // on ajoute un enregistrement (une ligne) dans la table "membres"
// notez aussi la fonction mysql now() qui insere la date courante

?>

Le résultat de la requête contenu dans $reqadd sera TRUE si la requête a été exécutée correctement ou FALSE si elle n’est pas bonne. Dans le cas de false, vous pouvez faire un “echo mysql_error();” juste après pour afficher les détails de l’erreur, et ainsi débugguer pour facilement votre script.

4 – Modifier un enregistrement mysql avec php

Pour modifier un enregistrement mysql avec php, il faut faire une requete UPDATE comme ceci :

<?php

$reqmod = mysql_query("UPDATE membres SET nom = 'dupont', prenom = 'toto' WHERE id = '1' ");
// on change le nom et le prenom de l'enregistrement numéro 1

?>

id est un champ de la table membres, que je n’ai pas utilisé dans l’insertion de l’enregistrement car il s’incrémente automatiquement. (propriété auto_increment du champ dans votre phpmyadmin).

Notez bien également que si je ne précise pas que c’est l’enregistrement numéro 1 que je veux modifier (= si j’enlève WHERE id = ‘1’), mysql comprendra ceci : “dans la table membres, changer le nom en dupont et le prenom en toto”, ce qui aura pour effet de changer tous vos enregistrements. Et attention car si vous aviez des membres dedans, ils vont tous s’appeler toto dupont dorénavant donc vous perdez tout si vous oubliez juste ce where…

5 – Supprimer un enregistrement mysql avec php

Pour supprimer un enregistrement mysql avec php :

<?php

$reqmod = mysql_query("DELETE FROM membres WHERE id = '1' ");
// supprime l'enregistrement 1 de la table membres.

?>

Là encore, évitez d’oublier le WHERE 😉

6 – Afficher des enregistrements mysql avec php

Maintenant, vous me direz : mais comment faire si je veux afficher tous les membres de mon site dans une page ? (si je garde le même exemple des membres mais ça s’applique à n’importe quoi d’autre.)

Il y a plusieurs possibilités pour cela, je vous en fait voir une par exemple :

<?php

// selectionne tous les champs des membres, classe par nom croissant
$reqmembres = mysql_query("SELECT * FROM membres ORDER BY nom ASC ");

// $reqmembres est un objet qui contient maintenant tous les infos des membres
// nous allons le balayer avec un while pour lire tous les enregistrements...
while ($infomembres = mysql_fetch_array($reqmembres))
{
     echo "Membre n°";
     echo $infomembres['id'];
     echo " : ";
     echo $infomembres['prenom'];
     echo " ";
     echo $infomembres['nom'];
}

?>

Cela aura pour effet d’afficher dans votre page ceci :
Membre n°1 : toto dupont
Membre n°2 : ………….

nb : attention, vu que j’ai classé par nom de membre croissant, le membre 2 pourrait arriver avant le 1 dans mon cas. Pour classer par numéro de membre, il aurait fallu mettre ORDER BY id ASC.

III. Conclusion du tutorial

Voilà le tutorial touche à sa fin, j’espère que vous aura appris pas mal de choses et merci d’être de plus en plus nombreux à porter un intérêt sur ce genre de cours.
Après l’avoir lu, vous connaîtrez les requêtes mysql qui reviennent dans 95% des cas avec PHP, donc vous serez capable de faire un bon petit site sans souci. Si vous n’en êtes pas encore convaincu, sachez que vous avez là toutes les instructions mysql pour refaire un site comme 6ma.fr.

Soyez le premier à commenter

Poster un Commentaire

Votre adresse de messagerie ne sera pas publiée.


*