|
Notre magasin Rue Albert 1er, 7 6810 Pin - Chiny (/fax: 061/32.00.15 |
|
|
|
FORMATIONS |
Le MAGASIN YBET |
PRODUITS et SERVICES |
| Logiciels de gestion | ||
| Caisses enregistreuses TEC | ||
| Access - Excel | Logiciels ciels |
14.9. Gérer la base de donnée MySQL1 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:
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:
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 MySQLC'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'insertionIl 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'enregistrementsLa 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.
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'enregistrementsCette fonction se fait par la commande DELETE. La commande complète est de type: DELETE FROM table [WHERE condition] [LIMIT] 4. Liaison MySQL - PHPL'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éePour 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 tableNous 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.
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.
4.3. Recherches d'enregistrementsLa 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
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:
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:
Voici le résultat dans notre base de donnée actuelle Connexion réussie
|
|
YBET Informatique: formation débutant ou avancé dans notre salle de formation ou en entreprise Renseignements, tarifs et inscriptions sur notre page formations informatiques |
Mise en ligne: 08/03/2006 - modifié le 22/12/2008