Commentaire(s) Modification et enregistrement des catégories








Note :Si votre commentaire contient du code, sélectionner votre code avec votre souris puis utiliser la liste "Styles" et sélectionner "Code".


hpi1957m
Nombre de commentaire : 8

Commentaire(s)

  • #396 Commentaire de Pierrot posté le 26/05/11 à 17:47:18 :
  • Pierrot
  • Bonjour,

    Votre tutoriel marche bien sauf que je ne comprends pas votre histoire de modifier une catégorie. Je créé une catégorie qui s'appelle par exemple "J'AIME LE PHP" avec comme contenu "le php est très utile" je l'enregistre ça me l'affiche là ou il y a toutes mes catégories créées. Je reviens sur l'admin je veux modifier donc ma catégorie "J'AIME LE PHP"  en par exemple "JE N'AIME PAS LE PHP" en gardant le même contenu, j'enregistre mais cela ne change rien quand j'affiche toutes mes catégories; et je ne sais pas pourquoi !

    Si vous pouviez m'aider je vous en serait reconnaissant

    Cordialement

    Pierre Baslé
    Développeur junior

  • #397 Commentaire de c00lman posté le 26/05/11 à 18:37:30 :
  • c00lman
  • Bonjour Pierrot,

    Le "hic", c'est que sans erreur ou sans bout de codes je ne peux strictement rien faire!
    Pour moi, le soucis est au niveau de l'Update :

    $result = mysql_query(" UPDATE CATEGORIES SET 
    nom_categorie='".mysql_real_escape_string($titre)."', 
    description_categorie='".mysql_real_escape_string($description)."' WHERE id = '$id'");

  • #398 Commentaire de Pierrot posté le 26/05/11 à 20:40:51 :
  • Pierrot
  • Tout d'abord, je vous remercie pour votre réactivité!

    Bien justement c'est cela le problème, ça ne modifie rien quand je créé une catégorie avec un article et que je retourne dans l'admin pour le modifier le nom de la catégorie ainsi que le contenu ne change pas. Il n'y a pas d'erreur et j'ai bien pris votre script. A moins que je n'ai pas compris cette fonction modifier.

    Et je pense aussi que c'est au niveau de l'update mais je ne comprends pas ce qu'il ne va pas.

    Pierrot

  • #399 Commentaire de c00lman posté le 27/05/11 à 08:10:29 :
  • c00lman
  • Mon fichier modifier-categorie.php :

    <!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>Modifier une cat&eacute;gorie</title>
    </head>

    <body>

    <div id="moncadre">
    <?php include('menu.php');?>

    <div class="cadrecentrale">
    <h1>Modifier cat&eacute;gorie</h1>
    <?php

    if(isset($_POST["Modifier"]))
    {
    // 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 data_bd.php.');

    $titre = htmlspecialchars(stripcslashes(trim($_POST["titre"])));
    $description = htmlspecialchars(stripcslashes($_POST["description"]));

    // on enregistre les données
    $result = mysql_query(" UPDATE CATEGORIES SET 
    nom_categorie='".mysql_real_escape_string($titre)."', 
    description_categorie='".mysql_real_escape_string($description)."' WHERE id = '$id'");

    //Si il y a une erreur, on crie ^^
    if (!$result) {
        die('Requête invalide : ' . mysql_error());
    }
    else {
    //on informe que le message est enregistré
    echo '<div class="cadre"><p>La modification à été éffectué avec succès. <a href=index.php>Retour à l\'administration.</a></p></div>';
    }
    //on ferme if(isset($_POST["Modifier"]))
    }
    ?>

    <form action="modifier-categorie.php?id=<?php echo $id;?>" method="post">
    <fieldset>

    <?php
    $id = $_GET["id"];

    $result = mysql_query("SELECT * FROM CATEGORIES WHERE id = $id");

    while($affiche = mysql_fetch_array($result))
     {
     ?>

       <p>Titre de la cat&eacute;gorie :<br/>
        <input name="titre" size="65" value="<?php echo $affiche['nom_categorie'];?>" type="text"/>
       </p>

      <p>Description de la cat&eacute;gorie :<br/>
       <textarea name="description" rows="10" cols="50" ><?php echo $affiche['description_categorie'];?></textarea>
      </p>
      
       <input name="Modifier" value="Modifier" type="submit"/>
       <input name="Effacer" value="Effacer" type="reset"/>

     </fieldset>

    </form>
    <?php
    //On ferme la boucle while
     }
    ?>

    </div>

    <?php include('../footer.php');?>

    </div>

    </body>

    </html>
    Si ça ne fonctionne toujours pas, le soucis vient alors de la base de données.

  • #467 Commentaire de Neiss posté le 26/09/11 à 20:15:50 :
  • Neiss
  • J'ai fait tout exactement comme tu le dit mais lorsque je clique sur modififier un premier message d'erreur s'affiche :

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C/....

    Les boutons Modifier et Effacer reste visible et si je rappui sur Modifier voilà les messages d'erreurs qui s'affiche qui veulent surement dire qu'il ne reconnait pas les variables titre et description


    Notice: Undefined index: titre in C: on line 35

    Notice: Undefined index: description in C:\ on line 36

    Qu'elle est le problème?

    voici le code avec quasiment aucune modification:

    <h1>Modifier cat&eacute;gorie</h1>
    <form action="modifier-categorie.php?id=<?php echo $id;?>" method="post">
    <fieldset>   
    <?php
    //On récupère l'id transmit par url pour la placer dans une variable
    $id = $_GET["id"];   
    $result = mysql_query("SELECT * FROM CATEGORIES WHERE id = $id");   
    while($affiche = mysql_fetch_array($result))
    {
        ?>
        <p>Titre de la cat&eacute;gorie :<br/> 
        <input name="titre" size="65" value="<?php echo $affiche['nom_categorie'];?>"  type="text"/> </p>
        <p>Description de la cat&eacute;gorie :<br/> 
        <textarea name="description" rows="10" cols="50" ><?php echo $affiche['description_categorie'];?></textarea> </p>
        <?php
        //On ferme la boucle while
    }
    ?>
    <input name="Modifier" value="Modifier" type="submit"/>
    <input name="Effacer" value="Effacer" type="reset"/>   
    </fieldset>
    </form>
    <?php
    //Si l'action de modifier a été faite
    if(isset($_POST["Modifier"]))
    {

        $titre = htmlspecialchars(stripcslashes(trim($_POST["titre"])));
        $description = htmlspecialchars(stripcslashes($_POST["description"]));  
        //on enregistre les données
        $result = mysql_query("UPDATE CATEGORIES SET nom_categorie='".mysql_real_escape_string($titre)."', description_categorie='".mysql_real_escape_string($description)."'  WHERE id = '$id'");
        //Si il y a une erreur, on crie ^^
        
        if (!$result){
            die('Requête invalide : ' . mysql_error());
        }
        else
        {
            //on informe que le message est enregistré
            echo '<div class="cadre"><p>La modification à été éffectué avec succès. <a href=index.php> Retour à l\'administration.</a></p></div>';
        }                  
        //on ferme if(isset($_POST["Modifier"]))
    }
    ?>



  • #469 Commentaire de c00lman posté le 29/09/11 à 14:44:02 :
  • c00lman
  • Salut Neiss,

    Ton code ne suit pas ce que j'ai écrit dans le tutoriel http://creer-un-site.fr/modification-et-enregistrement-des-categories-157.php. Tu as ton formulaire suivit du traitement des données alors que moi le traitement des données est au dessus du formulaire. Par ailleurs, je ne vois aucune connexion à la bd non plus!!
    Fait un copier/coller du dernier code de la page indiqué juste au dessus (sans ajout) et teste.

  • #470 Commentaire de Neiss posté le 29/09/11 à 17:28:54 :
  • Neiss
  • Bon là j'ai reprit exactement ton code avec seulement une légère modif pour l'adapter à mon site que je créé mais cette modif je l'ai fait pour les autres page et ça fonctionne mais les erreurs persistent:

    <!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>Modifier une cat&eacute;gorie</title>
    </head>   
     
    <body>   
    <div id="contenu">
     
    <div class="homepage">
    <h1>Modifier cat&eacute;gorie</h1>
    <?php //on se connecte à la base de données
    include("../includes/connect_base.php");

    if(isset($_POST["Modifier"]))
    {
        $titre = htmlspecialchars(stripcslashes(trim($_POST["titre"])));
        $description = htmlspecialchars(stripcslashes($_POST["description"]));  
        //on enregistre les données
        $result = mysql_query("UPDATE CATEGORIES SET nom_categorie='".mysql_real_escape_string($titre)."', description_categorie='".mysql_real_escape_string($description)."'  WHERE id = '$id'");
        //Si il y a une erreur, on crie ^^
        if (!$result){
            die('Requête invalide : ' . mysql_error());
        }
        else
        {
            //on informe que le message est enregistré
            echo '<div class="cadre"><p>La modification à été éffectué avec succès. <a href=index.php> Retour à l\'administration.</a></p></div>';
        }                  
        //on ferme if(isset($_POST["Modifier"]))
    }
    ?>
    <form action="modifier-categorie.php?id=<?php echo $id;?>" method="post">
    <fieldset>   
    <?php
    //On récupère l'id transmit par url pour la placer dans une variable
    $id = $_GET["id"];   
    $result = mysql_query("SELECT * FROM CATEGORIES WHERE id = $id");   
    while($affiche = mysql_fetch_array($result)){
        ?>
        <p>Titre de la cat&eacute;gorie :<br/> 
        <input name="titre" size="65" value="<?php echo $affiche['nom_categorie'];?>"  type="text"/> </p>
        <p>Description de la cat&eacute;gorie :<br/> 
        <textarea name="description" rows="10" cols="50" ><?php echo $affiche['description_categorie'];?></textarea> </p>
        <?php
        //On ferme la boucle while
    }
    ?>
    <input name="Modifier" value="Modifier" type="submit"/>
    <input name="Effacer" value="Effacer" type="reset"/>   
    </fieldset>
    </form>  
    </div>
    </div>   
    </body>   
    </html>

    j'ai changé seulement les titres des <div> pour l'adapter à mon fichier CSS.  et j'ai inclus la connexion à la bd qui contient exactement ce que tu avait donné directement dans le code.
    Voici les erreurs :

    Notice: Undefined index: titre in C:/modifier-categorie.php on line 19

    Notice: Undefined index: description in C:\modifier-categorie.php on line 20

    Notice: Undefined variable: id in C:\modifier-categorie.php on line 22

    et aussi:
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\modifier-categorie.php on line 41

    L'erreur semble venir de la condition if( isset($_POST["Modifier"]) à l'intèrieur de celle ci on dirai qu'il ne connait pas les variables titre, description, id.
    et l'autre erreur semble venir de la boucle:
    while($affiche = mysql_fetch_array($result))

    Aide moi que je puisse continuer ton super tutoriel!

  • #472 Commentaire de c00lman posté le 30/09/11 à 14:38:15 :
  • c00lman
  • Salut Neiss,

    J'ai pris ton code telle quelle, un vulgaire copié/collé que j'ai fourré dans mon fichier et envoyé sur ma démo. Aucune erreur sur Free et tout s'enregistre/modifie correctement  !
    Je ne vois pas pourquoi tu as ces erreurs.... change le nom de la variable $result à l'intérieure de ta condition if(isset($_POST["Modifier"])) par $result1 ..peut être que le soucis provient de là puisque tu as 2 fois la même variable dans ton code.