Création et enregistrement des catégories

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 maintenant créer la page permettant de créer et d'enregistrer les catégories. Cette nouvelle page se nomme "ajouter-categorie.php".

Pour ce faire, nous partons d'un simple formulaire :

<form action="#ok" method="post">
 <p>Titre de la cat&eacute;gorie :<br/>
 <input name="titre" size="65" value="<?php
if (!empty($_POST["
titre"])) {
echo stripcslashes(htmlspecialchars($_POST["
titre"],ENT_QUOTES));
}?>"
type="text"/></p>   <p>Description de la cat&eacute;gorie :<br/> <textarea name="description" rows="10" cols="50" ><?php if (!empty($_POST["description"])) { echo stripcslashes(htmlspecialchars($_POST["description"],ENT_QUOTES)); }?></textarea></p>   <p> <input name="Valider" value="Valider" type="submit"/> <input name="Effacer" value="Effacer" type="reset"/> </p> </form>
Traitement et enregistrement des données :
<?php
//Si l'action de valider a été faite
if(isset($_POST["Valider"]))
{
$titre = htmlspecialchars(stripcslashes(trim($_POST["titre"])));
$description = htmlspecialchars(stripcslashes($_POST["description"]));
//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>'
; } //Si tout est ok else { //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.');   //on enregistre les données $result = mysql_query("INSERT INTO CATEGORIES VALUES
(
'',
'"
.mysql_real_escape_string($titre)."',
'"
.mysql_real_escape_string($description)."'
)
"
); //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>Cat&eacute;gorie enregistr&eacute;e
avec succ&egrave;s!</b></div>'
; } //On ferme else } //On ferme if(isset($_POST["Valider"])) } ?>

Quelques explications :

htmlspecialchars : Convertit les caractères spéciaux en entités HTML.
stripcslashes : Retourne la chaîne après avoir supprimé tous les antislashs.
trim : Supprime les espaces (ou d'autres caractères) en début et fin de chaîne.
mysql_real_escape_string : Protège les caractères spéciaux d'une commande SQL.

Affichage des erreurs :

  <?php 
  if(isset($message_ok))
  {
  echo $message_ok;
  }
  ?>
<form action="#ok" method="post">
  <?php 
  if(isset($alerte0))
  {
  echo $alerte0;
  }
  ?>
 <p>Titre de la cat&eacute;gorie :<br/>
 <input name="titre" size="65" value="<?php  if (!empty($_POST["titre"])) {  echo stripcslashes(htmlspecialchars($_POST["titre"],ENT_QUOTES));  }?>" type="text"/></p>
  <?php 
  if(isset($alerte1))
  {
  echo $alerte1;
  }
  ?>
 <p>Description de la cat&eacute;gorie :<br/>
 <textarea name="description" rows="10" cols="50" ><?php
 if (!empty($_POST["description"])) {
 echo stripcslashes(htmlspecialchars($_POST["description"],ENT_QUOTES));
 }?></textarea></p>
 
 <p>
 <input name="Valider" value="Valider" type="submit"/>
 <input name="Effacer" value="Effacer" type="reset"/>
 </p> 
</form> 
if(isset($message_ok)) : signifie que si la variable "$message_ok" existe on affiche le contenu de la variable.

Le fichier "ajouter-categorie.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"/> <title>Ajouter une cat&eacute;gorie</title> </head>   <body>   <div id="moncadre"> <?php include('menu.php');?>   <div class="cadrecentrale"> <h1>Ajouter une cat&eacute;gorie</h1> <?php //Si l'action de valider a été faite if(isset($_POST["Valider"])) { $titre = htmlspecialchars(stripcslashes(trim($_POST["titre"]))); $description = htmlspecialchars(stripcslashes($_POST["description"])); //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>'; } //Si tout est ok else { //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.');   //on enregistre les données $result = mysql_query("INSERT INTO CATEGORIES VALUES ( '', '".mysql_real_escape_string($titre)."', '".mysql_real_escape_string($description)."' ) "); //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>Cat&eacute;gorie enregistr&eacute;e avec succ&egrave;s!</b></div>'; } //On ferme else } //On ferme if(isset($_POST["Valider"])) } ?>   <?php if(isset($message_ok)) { echo $message_ok; } ?> <form action="#ok" method="post"> <?php if(isset($alerte0)) { echo $alerte0; } ?> <p>Titre de la cat&eacute;gorie :<br/> <input name="titre" size="65" value="<?php if (!empty($_POST["titre"])) { echo stripcslashes(htmlspecialchars($_POST["titre"],ENT_QUOTES)); }?>" type="text"/></p> <?php if(isset($alerte1)) { echo $alerte1; } ?> <p>Description de la cat&eacute;gorie :<br/> <textarea name="description" rows="10" cols="50" ><?php if (!empty($_POST["description"])) { echo stripcslashes(htmlspecialchars($_POST["description"],ENT_QUOTES)); }?></textarea></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>
Il va de soit que cette nouvelle page est à enregistrer dans la partie "admin" ^^.
Attention : cette page n'est pas prévue pour apporter des modifications à votre catégorie suite à une première validation. A chaque fois que vous appuyez sur le bouton "Valider", c'est une nouvelle catégorie qui est créé..!
Pour éviter tout erreur, vous pouvez effectuer une redirection Javascript comme ci-dessous:
$message_ok = '<div class="erreur"><a name="ok"></a><b>Cat&eacute;gorie enregistr&eacute;e avec succ&egrave;s!</b><br/>Vous allez être redirigé automatiquement d\'ici quelques secondes.</div>';
echo '<script> function redirection(page)   {window.location=page;} setTimeout(\'redirection("index.php")\',7000); </script>';
Voir/déposer un commentaire (17) | Signaler un problème