Modification et enregistrement des pages

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 créer une nouvelle page nommé "modifier-article.php" qui sera enregistrée dans le dossier "admin" et qui va nous permettre de modifier nos pages ou articles.

Pour ne pas changer, on récupère l'identifiant transmit dans l'url depuis la page "voir-categorie.php", puis on va chercher les données correspondant dans la table adéquate.

Petit rappel du lien de la page "voir-categorie.php" :

<a href="modifier-article.php?id='.$affiche['id'].'"><img src="images/modifier.png" 
alt="Modifier"/></a>

On va donc récupérer nos données et les afficher une fois de plus directement dans un formulaire. Dans un premier temps, on fait notre requête pour allé chercher les éléments qui nous intéresse.

<?php
 
// on se connecte à la base de données
include('../connexion_bd.php');
 
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 du fichier connexion_bd.php.');
 
$page = mysql_query("SELECT * FROM CONTENU WHERE id='".mysql_real_escape_string
(
$id_transmit)."'");   while($affiche = mysql_fetch_array($page)) { $id_categorie=$affiche['id_categorie']; $titre=$affiche['titre']; $description=nl2br($affiche['description']); $contenu=stripcslashes($affiche['texte']); } ?>

Je vous rappel que notre contenu sera affiché grâce au logiciel CKeditor ... donc il ne faut pas oublier le script dans l'entête du site ainsi qu'au niveau du textarea.

 <p>Contenu de la page :<br/>
 <textarea name="contenu" rows="10" cols="50" ><?php echo $contenu;?></textarea>
<script type="text/javascript">
CKEDITOR.replace( 'contenu' );
</script></p>

Il faut également afficher notre liste déroulante avec l'affichage de la bonne catégorie dans celui-ci.

 <p>Catégorie :<br/>
 <select name="cat">
 <option value="">Selectionnez une catégorie</option>
 <?php
//On selectionne les données pour créer le formulaire déroulant
$categorie = mysql_query("SELECT id,nom_categorie FROM CATEGORIES ORDER BY id ASC");
//on boucle
while($affiche = mysql_fetch_array($categorie))
 {
echo '<option value="'.$affiche['id'].'" ';
//Si la catégorie correspond à celle enregistré, on l'affiche
if ($affiche['id']==$id_categorie) {echo "selected='selected'";}
echo '>'.$affiche['nom_categorie'].'</option>';
 }
 ?>
 </select>
 </p>

Dans ce code, on compare le numéro du champ "nom_categorie" de la table "CATEGORIES" avec le numéro contenu dans le champ "id_categorie" de la table "CONTENU", ce qui nous amène à la comparaison suivante pour afficher la bonne catégorie:

if ($affiche['id']==$id_categorie) {echo "selected='selected'";}

Pour le reste, ça devient de la routine ... traitement du formulaire->vérification->modification des données (UPDATE).

Le fichier modifier-article.php dans son ensemble :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">
 
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<link href="../style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../ckeditor/ckeditor.js"></script> 
<title>Modifier un article</title>
</head>
 
<body>
 
<div id="moncadre">
<?php include('menu.php');?>
 
<div class="cadrecentrale">
 
<h1>Modifier un article</h1>
 
<?php
$id_transmit=$_GET['id'];
// on se connecte à la base de données
include('../connexion_bd.php');
 
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 du fichier connexion_bd.php.');
 
//Traitement du formulaire
if(isset($_POST["Valider"]))
{
	$titre = htmlspecialchars(stripcslashes(trim($_POST["titre"])));
	$description = htmlspecialchars(stripcslashes($_POST["description"]));
	$contenu = stripcslashes($_POST["contenu"]);
	$categorie = $_POST["cat"];
 
	//Vérification du formulaire
	if(empty($titre)){
		$alerte0 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de titre.</div>';
	}
	else if(empty($description)){
		$alerte1 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de description.</div>';
	}
	else if(empty($contenu)){
		$alerte2 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas saisie de contenu.</div>';
	}
	else if(empty($categorie)){
		$alerte3 ='<div class="erreur"><a name="ok"></a>Vous n\'avez pas sélectionné de catégorie.</div>';
	}
	//Si tout est ok
	else
	{
		// on enregistre les données
		$result = mysql_query(" UPDATE CONTENU SET  id_categorie='".mysql_real_escape_string($categorie)."',  titre='".mysql_real_escape_string($titre)."',  description='".mysql_real_escape_string($description)."', texte='".mysql_real_escape_string($contenu)."' WHERE id = '$id_transmit'");
 
		//Si il y a une erreur, on crie ^^
		if (!$result) {
			die('Requête invalide : ' . mysql_error());
		}
		else{
			//Si tout est ok, on informe le webmaster
			$message_ok = '<div class="erreur"><a name="ok"></a><b>Page modifi&eacute;e avec succ&egrave;s!</b></div>';
		}
		//On ferme else
	}
	//On ferme if(isset($_POST["Valider"]))
}
//On sélectionne les données pour les afficher dans le formulaire
$page = mysql_query("SELECT * FROM CONTENU WHERE id='".mysql_real_escape_string($id_transmit)."'");
 
while($affiche = mysql_fetch_array($page))
{
	$id_categorie=$affiche['id_categorie'];
	$titre=$affiche['titre'];
	$description=nl2br($affiche['description']);
	$contenu=stripcslashes($affiche['texte']);
}
?>
 
<?php 
if(isset($message_ok))
{
echo $message_ok;
}
?>
<form action="#ok" method="post">
<?php 
if(isset($alerte0))
{
echo $alerte0;
}
?>
<p>Titre de la page :<br/>
<input name="titre" size="65" value="<?php echo $titre;?>" type="text"/></p>
<?php 
if(isset($alerte1))
{
echo $alerte1;
}
?>
<p>Description de la page :<br/>
<textarea name="description" rows="10" cols="50" ><?php echo $description;?>
</textarea></p>
<?php 
if(isset($alerte2))
{
echo $alerte2;
}
?>
<p>Contenu de la page :<br/>
<textarea name="contenu" rows="10" cols="50" ><?php echo $contenu;?> </textarea>
<script type="text/javascript">
CKEDITOR.replace( 'contenu' );
</script></p>
<?php 
if(isset($alerte3))
{
echo $alerte3;
}
?>
<p>Catégorie :<br/>
<select name="cat">
<option value="">Selectionnez une catégorie</option>
 
<?php
//On sélectionne les données pour créer le formulaire déroulant
$categorie = mysql_query("SELECT id,nom_categorie FROM CATEGORIES ORDER BY id ASC");
 
while($affiche = mysql_fetch_array($categorie))
{
	echo '<option value="'.$affiche['id'].'" ';
	if($affiche['id']==$id_categorie) {echo "selected='selected'";}
	echo '>'.$affiche['nom_categorie'].'</option>';
}
?>
</select></p>
<p>
<input name="Valider" value="Valider" type="submit"/>
<input name="Effacer" value="Effacer" type="reset"/>
</p>
</form>
 
</div>
 
<?php include('../footer.php');?>
 
</div>
 
</body>
 
</html>
Voir/déposer un commentaire (0) | Signaler un problème