Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Site Web > Un site dynamique avec PHP ! > La base de données > Ecrire des données > Lecture du tutoriel

Ecrire des données

Avatar
Auteur : M@teo21
Note : 18 / 20 (19 votes)
Visualisations : 489 297

Plus d'informations Plus d'informations
Nous avons vu dans le chapitre précédent que MySQL pouvait récupérer des données dans la BDD très facilement. Nous avons vu aussi que le langage SQL était très puissant, car il propose de nombreux critères de sélection (WHERE, ORDER BY etc...)

C'est bien beau tout ça, mais si vous savez juste lire dans une base de données et que vous ne savez pas écrire dedans, ça va pas le faire :lol:

Vous l'aurez compris, ce chapitre est clairement la suite du précédent. En utilisant ce que vous aurez appris dans ces 2 chapitres, vous saurez réaliser de nombreux scripts PHP :D
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Ajouter des données

Votre mission, si vous l'acceptez : ajouter une nouvelle entrée à la table "jeux_video" (sur laquelle nous avons travaillé dans le chapitre précédent).

Mouahahahah, mais c'est facile. Tu utilises PhpMyAdmin et hop ! C'est fait !
...... Quoi, j'ai dit quelque chose de mal ? :euh:

Non non :p
C'est vrai que PhpMyAdmin permet de rajouter de nouvelles entrées dans la table (on l'a vu dans le chapitre 2 de la partie II). Mais ce qui nous intéresse ici, c'est de le faire avec un script PHP !

Tout d'abord, je vous rappelle à quoi ressemble la table "jeux_video" :

IDnompossesseurconsoleprixnbre_joueurs_maxcommentaires
1 Super Mario Bros Florent NES 4 1 Un jeu d'anthologie !
2 Sonic Patrick Megadrive 2 1 Pour moi, le meilleur jeu au monde !
3 Zelda : ocarina of time Florent Nintendo 64 15 1 Un jeu grand, beau et complet comme on en voit rarement de nos jours
4 Mario Kart 64 Florent Nintendo 64 25 4 Un excellent jeu de kart !
5 Super Smash Bros Melee Michel GameCube 55 4 Un jeu de baston délirant !
... ... ... ... ... ... ...

Pour rajouter une entrée, vous aurez besoin de connaître la requête SQL. En voici une par exemple qui rajoute une entrée :

Code : SQL
1
INSERT INTO jeux_video(ID, nom, possesseur, console, prix, nbre_joueurs_max, commentaires) VALUES('', 'Battlefield 1942', 'Patrick', 'PC', '45', '50', '2nde guerre mondiale')



Vous remarquerez que pour le premier champ (ID), je n'ai rien mis entre les apostrophes. C'est voulu : le champ a la propriété "auto_increment", MySQL mettra donc le numéro d'ID lui-même.

Enfin, si vous le désirez, sachez que vous n'êtes pas obligés de mettre les noms des champs d'abord, cette requête marche tout aussi bien (mais elle est moins claire) :

Code : SQL
1
INSERT INTO jeux_video VALUES('', 'Battlefield 1942', 'Patrick', 'PC', '45', '50', '2nde guerre mondiale')


Du moment que vous respectez le bon ordre des champs, tout ira bien :)

Maintenant, voici le script PHP qui utilise cette requête :

Code : PHP
1
2
3
4
5
6
7
8
9
<?php
mysql_connect("localhost", "mateo21", "mot_de_passe");
mysql_select_db("coursphp");

// On ajoute une entrée avec mysql_query
mysql_query("INSERT INTO jeux_video VALUES('', 'Battlefield 1942', 'Patrick', 'PC', '45', '50', '2nde guerre mondiale')");

mysql_close();
?>

Que fait ce code ? Il ajoute une entrée dans la BDD pour le jeu "Battlefield 1942", appartenant à "Patrick", qui fonctionne sur "PC", qui coûte "45" euros etc...
Entendons-nous bien : ce code n'affiche rien. Il ajoute juste des données dans la BDD. Ce n'est que si vous faites un SELECT (comme nous l'avons vu dans le précédent chapitre) que nous aurons quelque chose d'intéressant à afficher au visiteur.

Vous verrez dans la pratique qu'on combine les deux : on écrit et on lit dans la BDD.

Modifier des données

Vous venez de rajouter Battlefield dans la BDD, tout s'est bien passé.
Mais... vous vous rendez compte avec stupeur que Battlefield se joue en fait à 32 joueurs maximum (au lieu de 50), et que en plus son prix a baissé : on le trouve à 10 euros (au lieu de 45).

No problemo amigo :D
Avec une petite requête SQL on peut arranger ça. En effet, en utilisant UPDATE vous allez pouvoir modifier l'entrée qui pose problème :

Code : SQL
1
UPDATE jeux_video SET prix='10', nbre_joueurs_max='32' WHERE ID='51'


Comment ça marche ?

Dernière minute ! Florent vient de racheter tous les jeux de Michel ! Il va falloir modifier ça tout de suite ! :p

:euh: Heu, va falloir modifier chaque entrée une à une ?

Dites-vous bien une chose : le langage SQL est un langage de feignasse :-° Il n'est pas question de passer des heures à modifier toute la table pour ça !
En clair, en réfléchissant environ 0,5 seconde vous allez trouver tous seuls la requête SQL qui permet de faire ce qu'on cherche.

C'est bon vous avez trouvé ? Allez, je vous donne la réponse, c'est vraiment facile :

Code : SQL
1
UPDATE jeux_video SET possesseur='Florent' WHERE possesseur='Michel'


Traduction : Dans la table jeux_video, modifier toutes les entrées dont le champ possesseur est égal à Michel, et le remplacer par Florent.
Qu'il y ait 1, 10, 100 ou 1000 entrées, cette requête à elle-seule suffit pour mettre à jour toute la table :waw:

Si c'est pas beau le SQL ^^

Supprimer des données

Enfin, voilà une dernière requête qui pourra se révéler utile : DELETE.
Rapide et simple à utiliser, elle est quand même un poil dangereuse : après suppression, il n'y a aucun moyen de récupérer les données, alors faites attention !

Voici comment on supprime par exemple l'entrée de Battlefield :

Code : SQL
1
DELETE FROM jeux_video WHERE nom='Battlefield 1942'


Y'a rien de plus facile :

Et voilou vous savez tout ! :D

Q.C.M.

Quel(s) mot(s)-clé permettent de dire en SQL qu'on veut ajouter une entrée ?
Que signifie cette requête ?Code : SQL
1
DELETE FROM jeux_video WHERE console = 'Megadrive' AND possesseur = 'Patrick'
Qu'est-ce qui ne va pas dans cette requête ?Code : SQL
1
DELETE * FROM jeux_video
Je m'appelle Florent et je veux changer les commentaires de tous mes jeux qui coûtent moins de 10 euros. Je veux mettre à la place : "En promo, pas cher mon fils"
Comment je peux faire ça en une requête ?
Pourquoi on ne précise pas la valeur du champ ID quand on ajoute une entrée avec INSERT INTO ?
Quel est l'effet de cette requête dans la table jeux_video ?Code : SQL
1
INSERT INTO jeux_video VALUES('Dark age of camelot', 'François', 'PC', '30', '1000', 'MMORPG')

Statistiques de réponses au QCM


La partie II de ce cours est quasiment terminée :D
Nous avons vu ce qu'il fallait savoir pour MySQL. Dans la partie III vous allez apprendre des choses pas bien difficiles et pourtant très utiles. C'est maintenant que vous allez en apprendre le plus sur PHP !

Mais avant de clôturer la partie II, je vous ai concocté un petit TP qui, je l'espère, devrait vous plaire ;)
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 19/07/2005 à 23:21:44
Modifié : le 17/10/2008 à 19:53:01
Avancement : 100%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 274 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1429s (0.126s)