Bonsoir je poste sur le forum concernant un petit problème que je rencontre, j'ai bien suivi le tutoriel sur la gestion des catégories, tout se passe bien sauf quand je veux modifier une catégorie, au lieu de modifier la catégorie avec l'id 1 par exemple cela insère une nouvelle catégorie j'espère avoir bien précisé le problème rencontré.

Voici mon code :

<?php
include "lib/constants.php";
include "lib/db.php";
include "lib/auth.php";
include "partials/header.php";
include "lib/input.php";
include "lib/flash.php";
$form = new form();
/*
Récupération de ka liste des catégories
*/
/* TRAITEMENT DU FORMULAIRE D'AJOUT ET D EDITION DE CATEGORIES */
if(!empty($_POST)){
    extract($_POST);
    $valid = true;

    if(!preg_match('/^[a-zA-Z\-0-9]+$/', $name)){
        $erreurname = "Le titre na pas un format valide";
        $valid = false;
    }
    if(empty($name)){
        $valid = false;
        $erreurname = "Veuillez compléter ce champ.";
    }
    if(empty($slug)){
        $valid = false;
        $erreurslug = "Veuillez compléter ce champ.";
    }
    if(!preg_match('/^[a-z\-0-9]+$/', $slug)){
        $valid = false;
        $erreurslug = "Le slug na pas un format valide";
    }
    if(empty($description)){
        $valid = false;
        $erreurdescription = "Veuillez compléter ce champ.";
    }
    if($valid){
        if(isset($_POST)){
            checkCsrf();
            $name = $db->quote($_POST'name']);
            $slug = $db->quote($_POST'slug']);
            $description = $db->quote($_POST'description']);
            if(isset($_GET'id'])){
                $db->query("UPDATE categories SET name=$name, slug=$slug, description=$description WHERE id=$id");
            }else{
                $db->query("INSERT INTO categories SET name=$name, slug=$slug, description=$description");
            }
            setFlash("La catégories a bien été ajouter","success");
            //header('Location:'.WEBROOT.'categories.php');
        }
    }
}
/*
Récupération l'id entrer par L'URL 
*/
if(isset($_GET'id'])){
    $id = $db->quote($_GET'id']);
    $select = $db->query("SELECT * FROM categories WHERE id=$id");
    if($select->Rowcount() == 0){
        setFlash("Il n'y a pas de catégories avec ID", "warning");
        header('Location:categories.php');
        die();
    }
    $_POST = $select->fetch();
}
?>
        <?php include "partials/header_menu.php"; ?>

        <div class="wrap">
            <?= flash(); ?>
            <section id="list-cat">
                <?php
                if(isset($_SESSION'Auth']'username'])):
                ?>
                <h3>Bienvenus : <?php echo $_SESSION'Auth']'username']; ?></h3>
                <?php endif; ?>
                <h1>Ajouter une nouvelle catégories </h1>
                <hr>
                <div class="add-category">
                    <form method="post" action="categories_edit.php">
                        <?= $form->input('name','name','Nom de la catégories','Veuillez compléter ce champ.');?>
                        <span class="message-error"><?php if(isset($erreurname)) { echo $erreurname;}?></span>
                        <?= $form->input('slug','slug','URL de la catégories','Veuillez compléter ce champ.');?>
                        <span class="message-error"><?php if(isset($erreurslug)) { echo $erreurslug;}?></span>
                        <?= $form->text('description','description','description de la catégories','Veuillez compléter ce champ.');?>
                        <span class="message-error"><?php if(isset($erreurdescription)) { echo $erreurdescription;}?></span>
                        <?= csrfInput(); ?>
                        <?= $form->submit('Envoyer'); ?>
                    </form>
                </div>
            </section>
        </div>

Ps : J'ai un peut adapter le code, donc il n'est pas identique au tutoriel.

Cordialement

3 réponses


Bonsoir

plusieurs soucis:
Ou récupère tu $id ?
dans ton update tu dit WHERE id = $id mais qu'est $id?
Il faudrait mettre $id = $_GET'id']
ensuite si tu fait un insert c'est tout simplement parce que tu ne récupère pas l'id dans ton GET
un get sert à récupérer un élément dans la barre d'adresse exemple
?id =1 si tu fait $_GET'id'] il te retournera 1
si tu fait
?page='accueil' si tu fait $_GET'page'] il te retournera 'accueil'.

Bonsoir comme sur le tutoriel de grafikart :

if(isset($_GET'id'])){
    $id = $db->quote($_GET'id']);
    $select = $db->query("SELECT * FROM categories WHERE id=$id");
    if($select->Rowcount() == 0){
        setFlash("Il n'y a pas de catégories avec ID", "warning");
        header('Location:categories.php');
        die();
    }
    $_POST = $select->fetch();
}

J'ai oublié ne précisez que quand rentre categories_edit.php?id=1 je vois bien les informations dans les champs mais lorsque je clique sur ajouter ça ne modifier rien ça insère une nouvelle catégorie.

Bonsoir, un petit UP car j'ai beau chercher l'erreur mais je ne trouve rien, le pire c'est qu'il ne m'indique aucune erreur rien, il me dit que la catégorie a bien été ajouter mais au lieu de la modifier il insère une nouvelle catégorie.

J'ai créé une nouvelle page nommée categories_edit.php et une page categories_add.php, dans la page categories edit, je ne fais qu'une update et à la place de modifier la catégorie il insère une nouvelle catégorie je ne vois pas tout vient le problème.

Voici mon code :

<?php 
include "lib/includes.php";
$form = new form();
$select = $db->query("SELECT id FROM users");
$users = $select->fetchAll();
if(!empty($_POST)){
    extract($_POST);
    $valid = true;

    if(empty($name)){
        $valid = false;
        $erreur_name = "Erreur : Ce champ est obligatoire";
    }

    if(!preg_match('/^[a-z\-09]+$/', $slug)){
        $valid = false;
        $erreur_slug = "Erreur: Le slug na pas un format valide";
    }

    if(empty($slug)){
        $valid = false;
        $erreur_slug = "Erreur : Che champ est obligatoire";
    }

    if(empty($description)){
        $valid = false;
        $erreur_description = "Erreur : Che champ est obligatoire";
    }

    if($valid){
        $name = $db->quote($name);
        $slug = $db->quote($slug);
        $description = $db->quote($description);
        if(isset($_GET'id'])){
           $db->query("UPDATE categories SET name=$name, slug=$slug, description=$description");
        }
        setFlash("La catégories a bien été ajouter","success");
        header('Location:category.php');
        die();
    }
}
if(isset($_GET'id'])){
    $id = $db->quote($_GET'id']);
    $select = $db->query("SELECT * FROM categories WHERE id=$id");
    if($select->Rowcount() == 0){
        setFlash("Il n'y a pas de catégories avec ID", "warning");
        header('Location:category.php');
        die();
    }
    $_POST = $select->fetch();
}
?>
<!doctype html>
<html>
    <head>
        <title>Portfolio</title>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="<?php echo WEBROOT; ?>css/style.css">
        <script type="text/javascript" src="<?php echo WEBROOT; ?>js/jquery.js"></script>
        <script type="text/javascript" src="<?php echo WEBROOT; ?>js/main.js"></script>
    </head>
    <body>
            <div class="wrap">
            <header id="header">
                <div id="left" class="logo">
                        <span>Core-Panel</span>
                </div>
                <div id="right" class="users_connected">
                    <nav id="menu">
                        <?php if(isset($_SESSION'Auth']'username'])):?>

                        <ul class="menu">
                            <li><a href="#"><img src="css/images/avatar/avatar1.png" alt="" class="images_avatar">Hi, <?php echo $_SESSION'Auth']'username']; ?><span><img src="css/images/icones/action.png" alt="Hover menu"></span></a>
                                <?php foreach ($users as $user): ?>
                                <ul>
                                    <li>
                                        <a href="message.php?id=<?= $user'id']; ?>">Message <span class="notification">11</span><span class="icones"><img src="css/images/icones/MP.png" alt="mp"></span></a>
                                    </li>
                                    <li><a href="profil.php?id=<?= $user'id']; ?>">Profil</a><span class="icones"><img src="css/images/icones/profil.png" alt="mp"></span></li>
                                    <li><a href="settings.php?id=<?= $user'id']; ?>">Settings</a><span class="icones"><img src="css/images/icones/settings-users.png" alt="mp"></span></li>
                                    <li><a href="logout.php">Logout</a><span class="icones"><img src="css/images/icones/power.png" alt="mp"></span></li>
                                </ul>

                                <?php endforeach; ?>
                            </li>
                        </ul>
                    <?php endif; ?>
                    </nav>
                </div>
            </header>
            <div id="sidebar" class="left">
                <div class="avatar">
                    <img src="<?php echo WEBROOT; ?>css/images/avatar/avatar1.png" alt="Mon avatar" class="images_avatar">
                    <?php if(isset($_SESSION'Auth']'username'])):?>
                    <h1>Hi, <?php echo $_SESSION'Auth']'username']; ?></h1>
                    <?php endif; ?>
                </div>
                <nav class="sidebar-nav">
                    <ul class="menu">
                        <li class="current">
                            <a href="#" id="active"><span><img src="css/images/icones/home.png" alt="Dashboard" class="icones"></span>Dashbord</a>
                        </li>
                        <li>
                            <a href="#"><span><img src="css/images/icones/settings.png" alt="Dashboard" class="icones"></span>Settings</a>
                        </li>
                        <li>
                            <a href="#"><span><img src="css/images/icones/users.png" alt="Dashboard" class="icones"></span>Users list</a>
                        </li>
                        <li>
                            <a href="<?php echo WEBROOT; ?>category.php"><span><img src="css/images/icones/category.png" alt="Dashboard" class="icones"></span>Categories</a>
                        </li>
                        <li>
                            <a href="#"><span><img src="css/images/icones/works.png" alt="Dashboard" class="icones"></span>works</a>
                        </li>
                        <li>
                            <a href="#"><span><img src="css/images/icones/news.png" alt="Dashboard" class="icones"></span>News</a>
                        </li>
                    </ul>
                </nav>
            </div>
            <div id="content">
                <section id="form-groupe">
                    <div class="title"><span>Add catégories</span></div>
                    <hr>
                    <div class="form-control">
                    <form method="post" action="add_category.php">
                        <div class="input">
                            <?= $form->input('text','name', array('placeholder' => 'Name catégories')); ?>
                            <?php if(isset($erreur_name)):?>
                            <span class="alert-bloc-error"><img src="css/images/type/error.png" alt="Erreur" class="type"> Erreur : <?php echo $erreur_name; ?></span>
                            <?php endif;?>
                            <?php if(isset($valid_name)):?>
                            <span class="alert-bloc-success"><img src="css/images/type/valid.png"></span>
                            <?php endif;?>
                        </div>
                        <div class="input">
                            <?= $form->input('text','slug', array('placeholder' => 'Slug catégories')); ?>
                            <?php if(isset($erreur_slug)):?>
                            <span class="alert-bloc-error"><img src="css/images/type/error.png" alt="Erreur" class="type"> Erreur : <?php echo $erreur_slug; ?></span>
                            <?php endif;?>
                            <?php if(isset($valid_slug)):?>
                            <span class="alert-bloc-success"><img src="css/images/type/valid.png"></span>
                            <?php endif;?>
                        </div>
                        <div class="input">
                            <?= $form->text('description','Description catégories',''); ?>
                            <?php if(isset($erreur_description)):?>
                            <span class="alert-bloc-error"><img src="css/images/type/error.png" alt="Erreur" class="type"> Erreur : <?php echo $erreur_description; ?></span>
                            <?php endif;?>
                            <?php if(isset($valid_description)):?>
                            <span class="alert-bloc-success"><img src="css/images/type/valid.png"></span>
                            <?php endif;?>
                        </div>
                        <div class="input">
                            <?php echo csrfInput(); ?>
                        </div>
                        <div class="input">
                            <input type="submit" value="add category" class="btn-submit">
                        </div>
                        </form>
                    </div>
                </section>
            </div>
        </div>
    </body>
</html>

Voici une capture d'écran de la page categories_edit.php :

Cordialement