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";}
?>