le monde Apprendre
comment créer un site Web pour les débutants


Gamme cours gratuit en HTML XHTML CSS et PHP



Recherche personnalisée

Site optimisé pour Firefox - Navigateur Internet gratuit

machine translation


Annuaire Webmaster

Supprimer des données de votre base

Supprimer_des_donnees_de_votre_base Après avoir vu l'affichage des données provenant d'une base de données, l'insertion et la modification
de ces mêmes données, voyons maintenant la dernière opération fondamentale concernant ces bases de données :

La suppression de entrées.

Reprenons alors nos deux tables liste_proprietaire et liste_disque que nous avons utilisé pendant tous
les tutoriaux concernant les bases de données.
Je vous rappelle que l'on avait alors :
La table liste_proprietaire :
N°. du propriétaire Propriétaire N. tél
1 CARABDE 06-40-10-64-54
2 Gerome 06-62-84-36-81
3 Dubois 06-67-71-00-86
4 Felix 06-18-22-13-33
La table liste_disque :
N. du propriétaire Auteur Titre
1 Cassius Au rêve
1 Daft Punk Discovery
2 Cassius Au rêve
2 Télépopmusik Genetic world
3 Clamaran Release yourself
4 The supermen lovers td>The player
Voyons alors, en SQL, comment supprimer un entrée de la table liste_proprietaire.
Supposons que l'on désire supprimer Felix de notre base de données. On écrira alors :

DELETE from liste_proprietaire WHERE nom="Felix";

En effet, on efface une entrée (ou plusieurs, tout dépend de la clause WHERE)
De la table liste_proprietaire.

On efface tous les entrées de la table liste_proprietaire ou l'attribut nom prend la valeur Felix
(dans notre cas, une seule entrée porte la valeur Felix pour l'attribut nom).
Notez bien que la clause WHERE peut très bien contenir plusieurs conditions, elles seront alors séparés
par des opérateurs booléens (AND correspondant à un ET logique ou OR correspondant à un OU logique).

Cependant, je vous rappelle que des requêtes SQL peuvent être beaucoup plus complexes, et dans ce cas,
je vous renvoie à la documentation MySQL, ce qui à notre niveau (débutant) n'est pas vraiment intéressant
(cela ne sert à rien de vous embrouiller les idées dès le départ).
Attention !!!
Lorsque l'on effectue une suppression d'entrées, il faut toujours faire attention à effacer non seulement
les entrées de la table dont on veut supprimer le(s) élément(s) mais éventuellement les autres entrées d'une
autre table (si les deux tables sont jointes par le biais d'un attribut).
En effet, dans notre exemple, nous venons de supprimer de la table liste_proprietaire l'entrée dont l'attribut nom valait Felix.

Cependant, on remarque que la table liste_disque comporte des éléments qui étaient liés à Felix.
Or, vu que ces elements ne nous servent plus à rien maintenant (car on a supprimer Felix de la liste),
il faut également penser à les supprimer (afin d'avoir une base de données homogène).
Voyons maintenant comment effectuer ces suppressions par le biais d'une page WEB écrite en PHP.
Prenons par exemple le cas d'une page PHP permettant la suppression de Felix de la base de données ainsi
que de toutes les informations le concernant (c'est-à-dire les disques lui appartenant). On aura alors :
exemple1
<?php
// on se connecte à notre base
$base = mysql_connect ('serveur', 'login', 'pass');
mysql_select_db ('ma_base', $base) ;
?>
<html>
<head>
<title>Suppression de Felix de la base</title>
</head>
<body>
<?php
// lancement de la requête pour effacer Felix
$sql ='DELETE from liste_proprietaire WHERE nom="Felix"';
// on exécute la requête (mysql_query) et on affiche un message au cas où la requête 
ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// lancement de la requête pour effacer les disques de Felix (je vous rappelle que Felix à le numéro 4)
$sql ='DELETE from liste_disque WHERE numero="4"';
// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se 
passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base
mysql_close();
?>
Felix et tous ces disques ont étés supprimés de la base de données.
</body>
</html>
Comme dans les tutoriaux précédents, afin de rendre vos pages beaucoup plus dynamiques, il serait
intéressant de faire une page WEB contenant un formulaire possédant un menu déroulant permettant de
choisir le nom du membre àeffacer.

On suppose alors que ce menu déroulant à le champ NAME qui prend la valeur proprio, et que le formulaire a son
champ ACTION qui prend la valeur traitement.php.
Ceci implique que dans la page traitement.php, on aura une variable $proprio qui contient le nom du propriétaire
à supprimer.

On aura alors le code suivant (pour la page traitement.php placée dans le même répertoire que la page
WEB contenant le formulaire) :
exemple2
<?php
// on se connecte à notre base
$base = mysql_connect ('serveur', 'login', 'pass');
mysql_select_db ('ma_base', $base) ;
?>
<html>
<head>
<title>Suppression d'un membre de la base</title>
</head>
<body>
<?php

// on teste si la variable du formulaire est bien déclarée
if (isset($_POST['proprio'])) {
// on recherche le numero du membre à supprimer
$sql = 'SELECT numero FROM liste_proprietaire WHERE nom = "'.$_POST[proprio].'"';
// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne
 se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on recupere le resultat sous forme d'un tableau
$data = mysql_fetch_array($req);
// on recupere la valeur qui nous intersse
$numero_du_proprio = $data['numero'];
// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
// lancement de la requête pour effacer notre membre
$sql ='DELETE from liste_proprietaire WHERE nom="'.$_POST['proprio'].'"';
// on exécute la requête (mysql_query) et on affiche un message au cas où la
requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// lancement de la requête pour effacer les disques de notre membre
$sql ='DELETE from liste_disque WHERE numero="'.$numero_proprio.'"';
// on exécute la requête (mysql_query) et on affiche un message au cas où la
requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base
mysql_close();
// un petit message afin de voir ce qui s'est passé
echo 'Nous venons de supprimer '.$_POST['proprio'].' de la base ainsi que tous ces
disques';
}
else {
echo 'La variable de notre formulaire n\'est pas initialisée.';
}
?>
</body>
</html>
Et voila, maintenant, vous devez maîtriser tout ce qui concerne les bases de données et les pages
dynamiques en PHP. Retourner au haut de la page..haut de page…
Précèdent…...Précèdent...  		Vous êtes ici:suprimer des données de la base		Voir la suite…suivant…

						


Vous pouvez copier, modifier des copies de cette page, tant que cette note apparaît clairement
Vous devez citer le nom de l'auteur original et faire un lien hypertexte vers http://apprendre.uuuq.com