Modifier des données de votre base

Après avoir vu comment on affiche les données d'une base de données et comment on les insère, voyons maintenant comment modifier ces données.

Reprenons les deux tables que nous étudions depuis le début des tutoriaux sur les bases de données.
Je vous rappelle que l'on avait alors :

La table liste_proprietaire :

N. du propriétairePropriétaireN. tél
1LA GLOBULE06-48-85-20-54
2Jeremy06-85-98-78-12
3Benoît06-47-01-59-36
4Tibo06-98-42-01-36


La table liste_disque :

N. du propriétaireAuteurTitre
1CassiusAu rêve
1Daft PunkDiscovery
2CassiusAu rêve
2TélépopmusikGenetic world
3ClamaranRelease yourself
2Bob SinclarParadise
4The supermen loversThe player


Voyons, en SQL tout d'abord comment modifié un tuple de la table liste_proprietaire.

Supposons que Benoît vienne de changer son numéro de portable (et que son nouveau numéro est : 06-55-99-10-00), il faudra alors faire la modification dans la base de données afin que soit ancien numéro soit remplacé par le nouveau.

On aura alors :

UPDATE liste_proprietaire SET telephone="06-55-99-10-00" WHERE nom="Benoît";


En effet, on modifie quelle table ?
On modifie liste_proprietaire.
Quel attribut modifie-t-on ?
On modifie l'attribut telephone (qui prendra la valeur 06-55-99-10-00).
Et on fait les modifications pour quel(s) tuple(s) ?
On modifie le(s) tuple(s) où l'attribut nom prend la valeur Benoît (dans notre cas, seul un tuple sera modifié car notre table comporte qu'un seul tuple où l'attribut nom prend la valeur Benoît).

Simple non ?

En revanche, notez bien que dans notre clause WHERE, nous n'avons mis qu'une seule condition. Bien évidemment, tout est possible, vous pouvez en mettre plusieurs (ainsi que des clauses utilisant le LIKE vu dans les tutoriaux précédents).

Tout dépend des tuples que vous voulez modifier.

Cependant, imaginons que nous désirons modifier plusieurs attributs d'un même tuple.
En effet, supposons alors que nous possédons dans notre base de données une table ressemblant à la table liste_proprietaire (que nous avons déjà étudié), mais qui comportera plus d'attributs, comme par exemple l'adresse du propriétaire ainsi que son age.

On pourrait alors très bien avoir une table ressemblant à ceci :

N.NomN. télAdresseAge
1LA GLOBULE06-48-85-20-542, rue des lilas23
2Jeremy06-85-98-78-124, rue des fauvettes22
3Benoît06-55-99-10-002, rue des tulipes66
4Tibo06-98-42-01-368, rue du facteur23


Supposons alors que l'on se soit trompé dans l'age de Benoît et qu'au lieu d'avoir 66 ans (il n'est pas si vieux que ça notre Benoît !), et bien, il a tout simplement 65 ans :)
Supposons également que l'adresse de Benoît soit erronée et qu'il n'habite pas 2 rue des tulipes, mais 3 rue des tulipes.



On aura alors :

UPDATE liste_proprietaire SET adresse="3, rue des tulipes", age="65" WHERE nom="Benoît";


On remarque alors qu'il suffit de séparer les diverses modifications opérées sur un même tuple par une simple virgule.


Voyons maintenant comment effectuer ces modifications dans une page PHP.
Pour ce faire, prenons notre deuxième modification, celle concernant l'adresse et l'age de Benoît.

On aura alors :

exemple1.php
<?php
// on se connecte à notre base
$base = mysql_connect ('serveur', 'login', 'pass');
mysql_select_db ('ma_base', $base) ;
?>
<html>
<head>
<title>Modification du tél et de l'adresse de Benoît</title>
</head>
<body>
<?php
// lancement de la requête
$sql ='UPDATE liste_proprietaire SET adresse="3, rue des tulipes", age="65" WHERE nom="Benoît"';

// 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();
?>
L'adresse et l'age de Benoît viennent d'être modifiés.
</body>
</html>



Attention !!!

En effet, les modifications peuvent être vraiment dangereuses pour votre base de données.
En effet, si vous ne prenez pas un minimum de précaution pour effectuer vos modifications, vous pouvez très bien modifier un tuple d'une table et perde en même temps la jointure avec une autre table.

En effet, nous savons que nos tables liste_disque et liste_proprietaire sont liées par l'intermédiaire du numéro de propriétaire (la jointure).

Ceci implique donc que si pour une raison ou pour une autre, nous sommes amené à modifier ce numéro (dans la table liste_proprietaire par exemple), il faudra également penser à faire la modification de ce même numéro dans l'autre table (liste_disque) afin que la jointure entre les deux tables soit toujours fonctionnelle.


Que faire en plus ?

Et bien comme dans les tutoriaux précédents, vous pouvez effectuer des modifications de tuples par le biais de formulaires.

Par exemple, supposons que l'on dispose d'un page WEB comportant un formulaire disposant des champs suivants :
  • un menu déroulant (de NAME proprio) permettant de choisir le nom d'un propriétaire.
  • un champs texte classique (de NAME nouvelle_adresse) permettant à l'utilisateur de saisir une nouvelle adresse pour le propriétaire sélectionne dans le menu déroulant


Supposons ensuite que ce formulaire a pour balise ACTION la page traitement.php qui nous permet de modifier l'adresse du propriétaire en question.

On aura alors le code suivant (pour la page traitment.php) :

exemple2.php
<?php
// on se connecte à notre base
$base = mysql_connect ('serveur', 'login', 'pass');
mysql_select_db ('ma_base', $base) ;
?>
<html>
<head>
<title>Modification de l'adresse d'un propriétaire</title>
</head>
<body>
<?php
// on teste si les variables du formulaire sont déclarées
if (isset($_POST['nouvelle_adresse']) && isset($_POST['proprio'])) {

// lancement de la requête
$sql = 'UPDATE liste_proprietaire SET adresse="'.$_POST['nouvelle_adresse'].'" 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());

// on ferme la connexion à la base
mysql_close();

// un petit message permettant de se rendre compte de la modification effectuée
echo 'La nouvelle adresse de '.$_POST['proprio'].' est : '.$_POST['nouvelle_adresse'];
}
else {
echo 'Les variables du formulaire ne sont pas déclarées';
}
?>
</body>
</html>


Et maintenant, vous êtes vraiment parés pour faire vos modifications de tuples :)
LoadingChargement en cours