Bonjour tout le monde, je suis entrain de suivre le tuto créer un portfolio de A à Z 3/5, mais je bloque à la partie de mise à jour ( update),il ne fait pas la mise à jour d'une catégorie,et il ne me sort aucune erreur ..voici mon code :

<?php 

    include'../lib/includes.php';
    include'../patials/admin-index.php';

    /**
    *
    * AJOUTER OU MODIFIER UNE CATÉGORIE
    *
    **/

    if (isset($_POST'name']) && isset($_POST'slug'])) {
        checkCsrf();
        $slug=$_POST'slug'];
        if (preg_match('/^[a-z\-0-9]+$/', $slug)) {
            $slug=$bd->quote($_POST'slug']);
            $name=$bd->quote($_POST'name']);                
            if (isset($_GET'id'])) {
                /**
                *
                * modifier une categorie
                *
                **/             
                $id=$_GET'id'];         
                $bd->query("update categoris set name=$name,slug=$slug where id=$id");  

            }
            else{       
                /**
                *
                * Ajouter une catégorie
                *
                **/         
                $bd->query("insert into categoris set name=$name,slug=$slug");              

            }           
            setflash('votre catégorie a été bien ajouter');
            header("location:categorie.php");
            die();
        }
        else{
            setflash('le slug n\'est pas valide!!','danger');
        }
    }

        /**
    *
    * récupérer les donnée pour faire une modification 
    *
    **/
    if (isset($_GET'id'])) {    
        $id=$bd->quote($_GET'id']);
        $a=$id;
        $select="select*from categoris where id=$id";           
        $res=$bd->query($select);
        if ($res->rowCount()==0) {
            setflash("il n'y a pas une catégorie avec cet ID merci de bien vérfier l ID","danger");
            header("location:categorie.php");
        }
        $_POST=$res->fetch();
    }
?>
<form action="category_edit.php" method="POST"> 
    <div class="container">
        <h2>Editer ou ajouter une categorie</h2>

        <div class="form-group">
            <label for="name">Nom:</label>
            <?php echo input('name'); ?>
        </div>
        <div class="form-group">
            <label for="slug">URL de Slug:</label>
            <?php echo input('slug'); ?>
        </div>
        <?php echo inputcsrf(); ?>
        <button type="submit" class="btn btn-primary">Enregistrer</button>

    </div>
</form>
<?php

    include'../patials/footer.php';
?>

J'ai l'impression qu'il n'entre pas dans la condition

if (isset($_GET'id'])) {
                /**
                *
                * modifier une categorie
                *
                **/             
                $id=$_GET'id'];         
                $bd->query("update categoris set name=$name,slug=$slug where id=$id");  

            }

1 réponse


Bonjour,

Après lecture de ton code, rien ne me choque.
Maintenant, le problème peut venir de beaucoup d'endroits.

Il faut que tu vérifie que le flux de ton code soit correct.
Je te conseil de commenter toutes tes redirections, et de laisser des die().
(Au passage, il en manque un après le header de la ligne 62).

Si tu ne vois pas déjà le contenu des variables $_POST et $_GET, met les 2 lignes suivantes au tout début de ton fichier

var_dump($_GET);
var_dump($_POST);

Met des var_dump avec une chaine unique à des endroits clés, comme par exemple a la première ligne d'un if, pour t'assurer que le flux est bien rentré dedans.

L'objectif est de retracer le parcours de ton code, et ensuite d'analyser pourquoi il n'a pas pris le chemin attendu.

Bon courage ^^

Azerus