Notre magasin

Rue Albert 1er, 7

6810 Pin - Chiny

(/fax: 061/32.00.15

Introduction au PHP - MySQL

FORMATIONS

Le MAGASIN YBET

PRODUITS et SERVICES

Formations informatiques privées

Activités et présentation

Logiciels de gestion

Formation Word

Rayon d'action  

Caisses enregistreuses TEC
Access - Excel   Logiciels ciels
YBET informatique Forum Création de site Vente informatique en ligne

14.9. Gérer la base de donnée MySQL

1 Introduction - 2. Principe - 3. Commandes MySQL - 4. Commandes PHP pour gérer la base de donnée MySQL.

Dans le précédant chapitre, nous avons créé une base de donnée MYSQL et une table manuellement avec PHPMyADMIN. Nous aurions également pu rentrer des données ou modifier des données existantes mais le but de cette formation est de gérer des bases de données MySql à l'aide de programmes écrits dans le langage PHP. Cette partie va reprendre les commandes nécessaires. L'ensemble des parties suivantes de ce cours nécessitent le démarrage de EasyPhp.

2. Principe.

Pour utiliser une base de donnée écrite en MySQL, il faut:

  1. Connexion au serveur
    Création d'une ressource
    Authentification
    Sélection de la base de donnée

  2. Utilisation des tables MySQL (via PHP)
    Lecture
    Ecriture
    Modification

  3. Déconnexion du serveur

Toutes les fonctions PHP pour gérer une base ou une table MySQL commencent par mysql_.

La connexion au serveur se fait par la commande: mysql_connect($serveur,$login,$mot-passe). Dans le cas d'une base de donnée créée avec EasyPhp, par défaut, le serveur est localhost, le login est root, mot de passe vide. Pour une base de donnée hébergée sur un serveur Internet, ces paramètres sont fournis par votre hébergeur.

La fonction mysql_connect() renvoie une ressource si la connexion a réussie, sinon, elle renvoie le message d'erreur False. Une fois que la ressource est établie, elle est sauvegardée et utilisable par les autres fonctions utilisant la base de donnée. Par défaut, le script PHP utilise la dernière connexion ouverte. Cette commande ne doit donc être utilisée qu'une seule fois.

Pour fermer la connexion, la commande à utiliser est mysql_close.

Exemple de connexion:

  • <?php

  • if(!mysql_connect('localhost','root')){

  •  Echo 'Connexion Impossible';

  •  exit();

  • } else{

  •  Echo 'Connexion réussie';

  • }

  • // instructions et requêtes sur la base de donnée

  • mysql_close();

  • ?>

Dans le script ci-dessus, le programme PHP affichera Connexion impossible si la connexion à la base de donnée échoue. Si elle est établie, PHP affichera "Connexion réussie". La fonction Exit() (ou son équivalente die("Message")) permet d'arrêter le script si la connexion n'est pas réussie.

L'étape suivante va sélectionner la base de donnée que nous avons créé.

Mysql_select_db('ybet') sélectionne la base de données (DB) YBET que nous avons créé au chapitre précédant manuellement. Les tables sont elles sélectionnées dans la requête.

3. Commandes MySQL

C'est maintenant que ça va se compliquer. MySQL est une véritable base de donnée qui travaille par requêtes (interrogations des tables). PHP ne va servir que comme application client pour envoyer ces requêtes. La première partie est donc de créer les requêtes en SQL et de les transférer ensuite par PHP. En gros, on va créer une variable en PHP qui reprend la ligne de commande. Comme le but de ce tutorial n'est pas de créer des applications SQL, mais bien d'utiliser les bases de données via une interface PHP, la suite explique quelque commandes utiles que nous transférerons par PHP ensuite

3.1 Requête d'insertion

Il y a plusieurs méthodes de rentrer des données (d'insérer). Toutes utilisent la commande INSERT nom_table. Différentes options sont également proposées.

1. Une liste de colonnes et une liste de valeurs : Insert nom_table(nom colonne 1,nom colonne 2) Values(valeur colonne 1,valeur colonne 2)

Dans notre cas, la table MySQL s'appelle annonce avec comme nom de champs code et titre (remarque: SQL ne fait pas de distinctions majuscules / minuscules dans les nom des champs. La commande SQL est par exemple: Insert annonce(code,TITRE) Values("users0001","Maison à Vendre Pin").

2. Une liste de valeurs noms - valeurs: INSERT nom_table SET nom colonne1=valeur1, nom colonne 2=valeur 2, ...

INSERT annonce SET code='users0003',titre='magasin informatique YBET'

3.2. Sélectionner la base de donnée.

Use nom_base_ donnée permet de sélectionner une base de donnée par défaut. Sans cette commande, vous pouvez dans certaines fonctions nommer la table comme: base.table

3.3. Sélection d'enregistrements

La commande SELECT permet de sélectionner des enregistrements dans une table. Sa syntaxe complète est 

SELECT [distinct] liste_colonne FROM table

[WHERE definition]

[ORDER BY [ASC | DESC], ...]

[Limit [offset,] lignes]

La version la plus simple: Select Liste_colonne FROM table permet de sélectionner l'ensemble des lignes d'une table suivant la liste des colonnes si vous avez utilisé la commande USE au préalable. Dans le cas contraire, utilisez la commande Select Liste_colonne FROM base.table

Pour sélectionner toutes les colonnes, utilisez la commande SELECT * From TABLE

L'option Where permet de filtrer les enregistrements.

Select * FROM table Where Titre='YBET' sélectionne tous les enregistrements ou le champ titre est égal à YBET dans la table "table".

Vous pouvez utiliser les opérateurs de comparaison suivants pour la condition.

! Fonction logique Non, inverse
|| Fonction logique OU (OR)
&& Fonction logique ET, toutes les conditions doivent être remplies (AND)
= égal
<> ou != Différent
<= Inférieur ou égal
>= Supérieur ou égal
> Supérieur
< Inférieur
Like permet de prendre le mot à l'intérieur de la chaîne. % remplace n'importe quel nombre de caractères, y compris 0. _ remplace 1 seul caractère.

ORDER BY permet de trier les résultats de la requête MySQL.

Select * FROM table ORDER BY code récupère tous les enregistrements de la table et les trie suivant le code. Par défaut, le tri est par ordre croissant (ou avec l'option ASC). Pour trier par ordre décroissant, utiliser ORDER BY DESC

LIMIT permet de limiter le nombre de lignes renvoyées, par exemple LIMIT 50 limite aux 50 premiers résultats. Vous pouvez également utiliser 2 arguments, par exemple LIMIT 2,20. Le 2 spécifie de ne pas prendre les 2 premières lignes, mais les 20 suivantes.

3.4. Modification d'enregistrements.

La commande SQL Update permet de modifier le contenu d'un enregistrement. La syntaxe complète est:

UPDATE nom_table SET nom_colonne1=contenu1, [nom_colonne2=contenu2, ...]

[WHERE conditions]

[LIMIT]

Les options Where et Limit sont équivalentes à celles ci-dessus. Vous pouvez également incrémenter directement une valeur. 

Par exemple: UPDATE annonce SET code, code+1 incrémente le code de 1

UPDATE annonce SET code, code*2 multiplie le code par 2

La commande UPDATE renvoie automatiquement le nombre de colonnes qui ont été modifiées.

3.5. Effacement d'enregistrements

Cette fonction se fait par la commande DELETE. 

La commande complète est de type: DELETE FROM table [WHERE condition] [LIMIT]

4. Liaison MySQL - PHP

L'envoie de commandes MySQL par un programme php se fait à l'aide de la commande mysql_query($requête SQL). La première partie est donc l'enregistrement de la requête dans une variable. La deuxième est l'envoi de la variable.

En cas d'erreur, la fonction mysql_query($requête) renvoie la valeur FALSE. Pour récupérer le message d'erreur, on utilise la commande SQL mysql_error(). Ceci va nous amener à modifier immédiatement notre scritp PHP.

4.1. Sélection de la base de donnée

Pour pouvoir accéder aux données d'une table, vous devez sélectionner la base de donnée au préalable par la commande:

Mysql_select_db(nom_base);

4.2. Insertion de données dans une table

Nous allons adapter les requêtes SQL sous forme d'une valeur pour la transmettre comme variable à la base de donnée. Les données à insérer doivent être entourées de simples guillemets, y compris les variables PHP. L'utilisation de variables sous formes de tableaux est déconseillée.

  • <?php

  • if(!mysql_connect('localhost','root')){

  • Echo'Connection Impossible';

  • exit();

  • } else{

  • Echo'Connexion réussie';

  • }

  • Mysql_select_db('ybet');

  • $requete="Insert annonce(code,TITRE) Values('users0002','Maison à Vendre Florenville')";

  • $valeur=mysql_query($requete);

  • $erreur=mysql_error();

  • print($erreur);

  • ?>

Analysons ces lignes de commandes. La première partie vue plus haut nous permet de nous connecter à la base de donnée YBET.

Nous allouons ensuite à la variable $requete la valeur de la requête SQL d'insertion qui transmet la valeur users0002 au champ code et la valeur Maison à vendre Florenville au champ TITRE.

La commande suivante va transférer la requête via la commande mysql_query et retourner une valeur à la variable PHP $erreur (True ou False).

Dans le cas d'erreur, la fonction mysql_error() renvoie le message d'erreur que nous affichons à l'écran par la commande Print, la variable $valeur ne renvoie rien (false, comme la requête n'a pas été exécutée). Dans le cas où la requête s'est bien passée, la variable $valeur renvoit 1 (True) et $erreur, rien. Nous n'affichons donc que $erreur, la seule intéressante.

Dans le cas où nous utilisons la commande INSERT table SET colonne1=valeur1, colonne2=valeur2, le script PHP est presque identique. La fonction SET est insérée dans la même ligne.

  • <?php

  • if(!mysql_connect('localhost','root')){

  • Echo'Connection Impossible';

  • exit();

  • } else{

  • Echo'Connexion réussie';

  • }

  • Mysql_select_db('ybet');

  • $requete="INSERT annonce SET code='users0004',TITRE='magasin informatique YBET'";

  • $valeur=mysql_query($requete);

  • $erreur=mysql_error();

  • print($erreur);

  • ?>

4.3. Recherches d'enregistrements

La requête SQL associée est SELECT FROM. Dans le cas de la fonction mysql_query(), la réponse est la valeur trouvée. Reprenons les enregistrements insérés ci-dessus et affichons les enregistrements

  • <?php

  • ...
  • $requete="SELECT * FROM annonce";

  • $valeur=mysql_query($requete);

  • print($valeur);

  • ...

  • mysql_close()

  • ?>

N'affichera rien, tout simplement parce que notre table contient effectivement des valeurs mais nous demandons d'afficher en fait 2 variables (puisque la table contient les champs code ET titre). $valeur, le résultat de la commande mysql_query($requete) est une matrice (une variable tableau).

La commande utilisée est finalement mysql_fetch_array($valeur) qui va créer un table reprenant chaque fois les noms des colonnes. Lorsqu'il ne reste plus de lignes à lire, mysql_fetch_array() retourne FALSE. Le script PHP devient:

  • <?php
  • // ouverture de la base de donnée
  •  
  • $requete="SELECT * FROM annonce WHERE code='users0004'";
  • $valeur=mysql_query($requete);
  • print(mysql_error());
  • $tableau=mysql_fetch_array($valeur);
  • print($tableau['code']);
  • print($tableau['TITRE']);
  • mysql_close()
  • ?>

Ce script ne fonctionne que s'il n'y a qu'une seule ligne correspondant à notre filtrage. La solution passe par la commande WHILE. Nous allons faire tourner cette fonction en boucle tant que des données sont transmises.

La commande mysql_num_rows() permet de connaître le nombre de lignes affichées (mysql_affected_rows(), identique, est utilisée pour les requêtes d'effacement ou de modification d'enregistrement). En utilisant la commande en bouche WHILE:

  • <?php
  • if(!mysql_connect('localhost','root')){
  •     Echo'Connection Impossible<br>';
  •     exit();
  • } else{
  •     Echo'Connexion réussie <br>';
  • }
  • Mysql_select_db('ybet');
  • $requete="SELECT * FROM annonce WHERE code='users0004'";
  • $valeur=mysql_query($requete);
  • print(mysql_num_rows($valeur).' ligne(s)<br>');
  • while ($tableau=mysql_fetch_array($valeur)){
  •     print("<b>".$tableau["code"]."<br>".$tableau["TITRE"]."</b>\n");
  • }
  • mysql_close()
  • ?>

Voici le résultat dans notre base de donnée actuelle

Connexion réussie
1 ligne(s)
users0004
magasin informatique YBET

Balises Meta

Balises et Meta utilisées dans les entêtes HTLM et PHP

Résumé des requêtes MySQL

Un résumé de toutes les requêtes adaptées en PHP: créer, insérer, modifier, supprimer, ...

Introduction à l'HTML

Une introduction au langage HTML.

Besoin d'une gestion de stock?

Ciel gescom Premium ou évolution, la solution PME

YBET informatique

Formations Privées en informatiques
B-6810 Pin - Chiny

Création et référencement Internet
Formation
: apprenez à créer et référencer votre propre site Internet

  • Module 1 (Débuter en création de site, HTML): 19 et 26 avril, 3 ,10 et 17 mai.
  • Module 2 (Débuts en PHP, MySQL: première partie): 17, 24 et 31 mai, 7, 14 et 21 juin.

Ces modules sont accessibles également à distance. Elles se dérouleront les lundi soirs de 19 à 22 heures.

Les chapitres de la formation en ligne PHP - MySQL
1. Introduction au Php
2. Installer et utiliser easyphp
3. Première commande PHP
4. Fonctions en PHP
5. Les tableaux
6. Fonctions sur les variables
7. Formulaires Mail
8. Base de donnée MySQL avec easyphp
9. Première application de Mysql
10. Gestion des tables par PHP
10.a Exercice: formulaire de contact, envoi par mail + sauvegarde dans une base de donnée.
11. Mise en page PHP - HTM: include() - require()
12. Création automatique de la table utilisateur
13. Formulaire et vérification des données
14. Insertion des nouveaux membres
15. Gestion des catégories
16. Liste de choix déroulante
17. Modification des tables MySQL
18. Enregistrer un fichier via un formulaire
19. Formulaire d'insertion
20. Affichage des annonces
21. Filtrage des annonces (1)
23. Exercice: gérer des news
24. Utilisation des Cookies
25. Gestion fichiers et Dossiers (source et FTP)
26. Cryptage et décryptage de mots de passe
27. Base relationnelle, méthodes Left et Join.
Divers
Formation référencement en ligne, positionnez votre site sur Google, MSN, Yahoo, ...
Les feuilles de styles
FrontPage et l'HTML, cours en ligne
Le fichier .htaccess, configuration serveur sous Apache, URL Rewriting, accès répertoires, ...

< 8 . Créer une base de donnée avec EASYPHP

> 10. Gérer les tables MYSQL automatiquement

YBET Informatique: formation débutant ou avancé

dans notre salle de formation ou en entreprise

Renseignements, tarifs et inscriptions sur notre page formations informatiques

Magasin Informatique YBET à Chiny

Mise en ligne: 08/03/2006 - modifié le 22/12/2008