Modifications et enregistrements des données

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.

Nous allons dans cette partie, voir comment on récupère et affiche les données transmit par l'url et comment on les modifient.

Dans un premier temps,  il nous faut récupérer l'identifiant (id) transmit par l'url depuis la partie admin pour afficher l'ensemble des données qui lui correspond.

Dans cette exemple, le nom de mon fichier est "modifier.php".

<?php
// On place dans une variable l'id transmit dans l'url
$id = $_GET["id"];
 
// on se connecte à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base 
de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es de
connections.'
);   //On sélectionne tout dans la table correspondant à l'id $result = mysql_query("SELECT * FROM COMMENTAIRES WHERE id = $id");   while($affiche_commentaire = mysql_fetch_array($result)) { ?>   Ici Notre formulaire.   <?php //On ferme la boucle while } // Fermeture de la connexion à la base de données mysql_close(); ?>

Pour récupérer la ou les valeurs d'une variable depuis l'url, on utilise le préfixe $_GET['....'], soit, $_GET['nom_de_ma_variable']. J'ai donc choisie comme nom pour ma variable  $id et c'est cette variable qui me permet de rechercher mes données dans la requête SQL. La différence qu'il y a dans le code ci-dessus par apport aux précédents, c'est que nous coupons en 2 parties la boucle while() ... bhaaa ouai, faut bien qu'on les affichent quelques part nos données .

C'est entre ces 2 parties que notre formulaire va être affiché avec nos données modifiables.

<?php
// On place dans une variable l'id transmit dans l'url
$id = $_GET["id"];
 
// on se connecte à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base 
de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es de
connections.'
);   //On sélectionne tout dans la table correspondant à l'id $result = mysql_query("SELECT * FROM COMMENTAIRES WHERE id = $id");   while($affiche_commentaire = mysql_fetch_array($result)) { ?>   <form action="modifier.php?id=<?php echo $id;?>" method="post"> <p>Pseudo:<br/> <input name="pseudo" size="22" value="<?php echo ''.$affiche_commentaire["pseudo"].'
';?>"
type="text"/> </p>   <p>Email:<br/> <input name="email" size="22" value="<?php echo ''.$affiche_commentaire["email"].'
';?>"
type="text"/> </p>   <p>Commentaire:<br/> <textarea name="commentaire" rows="10" cols="50" ><?php echo ''.$affiche_commentaire ["commentaire"].'';?></textarea> </p>   <input name="Modifier" value="Modifier" type="submit"/> <input name="Effacer" value="Effacer" type="reset"/>   </form>   <?php //On ferme la boucle while } // Fermeture de la connexion à la base de données mysql_close(); ?>

Normalement, vous êtes pas trop perdu là ^^  puisque l'on affiche simplement nos données dans les différents champs du formulaire par un simple echo.
Le seul truc qui peut vous "chagrinez" est la partie modifier.php?id=<?php echo $id;?> dans la balise form et l'explication est très simple...
On indique juste au formulaire et après validation, de revenir sur cette même page avec le même identifiant ...dès fois que l'on aurait zappé un truc .

Maintenant que l'on peut modifier nos données, il nous faut les enregistrer.

<?php
//Si l'action de Modifier à été faite (bouton "Modifier" du formulaire)
if(isset($_POST["Modifier"]))
{
//On se connecte à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base 
de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es de
connections.'
);   //On attribue une variable pour chaque champ du formulaire //pseudo $lechamp0 = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["pseudo"]))); //email $lechamp1 = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["email"]))); //commentaire $lechamp2 = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["commentaire"
])));   //On enregistre les données modifiées $result = mysql_query(" UPDATE COMMENTAIRES SET
pseudo='$lechamp0',
email='$lechamp1',
commentaire='$lechamp2'
WHERE id = '$id'
"
);   //Si il y a une erreur, on crie ^^ if (!$result) { die('Requête invalide : ' . mysql_error()); } else
{
//Si tout va bien, on informe que la modification est faite echo '<p>La modification à été effectué avec succès. <a href=admin.php>Retour à l\'admi
nistration.</a></p>'
; } // Fermeture de la connexion à la base de données mysql_close();   //On ferme if(isset($_POST["Modifier"])) } ?>

Pour enregistrer nos données modifiées, on utilise la commande UPDATE suivit du nom de la table. SET désigne le nom des champs de notre table avec les données de la variable modifiée.

UPDATE NOM_DE_LA_TABLE SET 
nom_du_champ_1='$ma_variable_modifie_1', 
nom_du_champ_2='$ma_variable_modifie_2', 
nom_du_champ_3='$ma_variable_modifie_3' 
WHERE id = 'numero_de_l_identifiant'

Ici, j'ai volontairement homis de vérifier chaque champ du formulaire 1 par 1. Je part du principe que vous savez ce que vous faites quand vous "modérez". Si vous effacez un champ complet de votre formulaire, PHP ne vous dira rien puisqu'il n'y a aucune condition... A vous de voir si vous souhaitez ajoutez des conditions ou pas!

Petit rappel des conditions au cas ou ^^:

//on vérifie les champs 1 par 1 pour voir si ils ne sont pas vides
if (empty($lechamp0)){
$alerte0 ='Vous n\'avez pas saisie votre pseudo.';
}
else if(empty($lechamp1)){
$alerte1 ='Vous n\'avez pas saisie votre email.';
}
else if(empty($lechamp2)){
$alerte2 ='Vous n\'avez pas saisie votre commentaire.';
}
//Si tout est ok
else
{
//on enregistre les données
***
}

Voila, vous savez maintenant comment on modifie des données depuis un simple formulaire . Prochaine étape, la suppréssion des données...

Voir/déposer un commentaire (6) | Signaler un problème