Informatique


Modifier un enregistrement dans une table

Création et exécution de la requête sql

Prenons un exemple simple, la table eleve de la database ttsi dont la strucure est la suivante:

Nous établissons une requête permettant de modifier un enregistrement dans la table eleve. et nous la stockons dans la variable $req.

$req="UPDATE eleve SET preno_ele='$nom',daten_ele='1998-01-23' WHERE id_ele=9";

Pour exécuter la requête on utilise l'objet PDO créé lors de la connexion sur lequel nous exécutons la méthode exec(), on récupère la réponse dans la variable $reqex.

$reqex=$con->exec($req);

Démo
<?php
include("connection.php");
$prenom="Joseph";
$dn="1999-05-12";
$req="UPDATE eleve SET preno_ele='$prenom',daten_ele='1998-01-23' WHERE id_ele=9";
$reqex=$con->exec($req);
if($reqex){echo "ok";}else{echo "erreur";}
?>
En pratique

On procédera en 3 étapes:

  • On sélectionne l'enregistrement à modifier en faisant une recherche sur l'id.
  • On récupère les infos de chaque champ et on les charges dans le formulaire destiné à la modification.
  • On modifie directement au niveau des éléments de formulaire et on actualise la base de données.

On sélectionne l'enregistrement

Voici 3 manières de récupérer l'enregistrement que l'on veut modifier.

  • On sélectionne l'enregistrement qu'on veut modifier au travers d'une boîte <select>:
    Démo
    <?php
    include("connection.php");
    ?>
    <form action="modif1_mytusol.php" method="post">
    Sélectionner un enregistrement:
    <select name="rechmodif">
    <?php
    $req="select * from eleve order by nom_ele ASC";
    $reqex=$con->query($req);
    while($ligne=$reqex->fetch(PDO::FETCH_ASSOC)){
    	echo "<option value=".$ligne['id_ele'].">".$ligne['nom_ele']." ".$ligne['preno_ele']."</option>";
    }
    ?>
    </select>
    <input type=submit value="Envoyer">
    </form>
    
  • On sélectionne l'enregistrement qu'on veut modifier au travers d'un <button>:
    Démo
    <?php
    include("connection.php");
    ?>
    <form action="modif1_mytusol.php" method="post">
    Sélectionner un enregistrement:
    <?php
    $req="select * from eleve order by nom_ele ASC";
    $reqex=$con->query($req);
    while($ligne=$reqex->fetch(PDO::FETCH_ASSOC)){
    	echo "<p>".$ligne['id_ele']." ".$ligne['nom_ele']." ".$ligne['nom_ele']."<button type=submit name=rechmodif value=".$ligne['id_ele']."> Modifier id ".$ligne['id_ele']."</button></p>";
    }
    ?>
    </form>
    
  • On sélectionne l'enregistrement qu'on veut modifier au travers d'un lien hypertexte:
    Démo
    <?php
    include("connection.php");
    ?>
    <form action="modif1_mytusol.php" method="post">
    Sélectionner un enregistrement:
    <?php
    $req="select * from eleve order by nom_ele ASC";
    $reqex=$con->query($req);
    while($ligne=$reqex->fetch(PDO::FETCH_ASSOC)){
    	echo "<p>".$ligne['id_ele']." ".$ligne['nom_ele']." ".$ligne['preno_ele']."<a href=modif1_mytusol.php?rechmodif=".$ligne['id_ele'].">Modifier</a></p>";
    }
    ?>
    </form>
    

On actualise la base de données

En récupérant l'id de l'enregistrement à modifier on va pouvoir charger un formulaire avec ces données, les modifications apportées au formulaire seront uploadées.


<?php
include("connection.php");
$rm=$_REQUEST['rechmodif'];
echo "Vous avec sélectionné l'id ".$rm;
?>
<form action="modif2_mytusol.php" method="post">
<?php
$req="SELECT * FROM eleve where id_ele=$rm";
$reqex=$con->query($req);
$ligne=$reqex->fetch(PDO::FETCH_ASSOC);
	//echo $ligne['id_ele']." ".$ligne['nom_ele']." ".$ligne['preno_ele']." ".$ligne['daten_ele'];
?>
<input type=text name=nom value="<?php echo $ligne['nom_ele']; ?>"><br>
<input type=text name=prenom value="<?php echo $ligne['preno_ele']; ?>"><br>
<input type=date name=daten value="<?php echo $ligne['daten_ele']; ?>"><br>
<input type=hidden name=id value="<?php echo $ligne['id_ele']; ?>"><br>
<input type=submit value=Modifier><br>
</form>

On fait les modifications dans la base de données:


<?php
include("connection.php");
$nom=$_POST['nom'];
$preno=$_POST['preno'];
$daten=$_POST['daten'];
$id=$_POST['id'];
$req="UPDATE eleve SET nom_ele='$nom',preno_ele='$preno',daten_ele='$daten' WHERE id_ele='$id'";
$reqex=$con->exec($req);
if($reqex){echo "ok";}else{echo "erreur";}
?>