Probleme tuto Portfolio

Par Reeko94, il y a 11 ans


Bonjour,

Je suis actuellement entrain de suivre le tutoriel de Grafikart sur la creation d'un portfolio de A à Z, et quand j'edite une categorie ou une realisation, je n'ai pas le nom ni le contenu ni le slug, mais l'id dans les 3 champs.
Je vous mets les pages correspondantes :

work_edit.php

<?php include '../lib/includes.php'; if(isset($_POST['name']) && isset($_POST['slug'])) { checkCSRF(); $slug = $_POST['slug']; if(preg_match('/^[a-z\-0-9]+$/', $slug)) { $name = $db->quote($_POST['name']); $slug = $db->quote($_POST['slug']); $category_id = $db->quote($_POST['category_id']); $content = $db->quote($_POST['content']); if(isset($_GET['id'])) { $id = $db->quote($_GET['id']); $db->query("UPDATE works SET name=$name, slug=$slug, content=$content, category_id=$category_id WHERE id=$id"); setFlash('La réalisation a bien été modifie'); } else { $db->query("INSERT INTO works SET name=$name, slug=$slug, content=$content, category_id=$category_id"); setFlash('La réalisation a bien été ajouté'); } header('Location: work.php'); die(); }else { setflash('Le slug n\'est pas valide', 'danger'); } } if(isset($_GET['id'])) { $id = $db->quote($_GET['id']); $select = $db->query("SELECT * FROM works WHERE id=$id"); if($select->rowCount() == 0) { setFlash("Il n'y a pas de réalisation avec cet ID", 'danger'); header('Location: work.php'); die(); } $_POST = $select->fetch(); } $select = $db->query('SELECT id, name from categories ORDER BY name ASC'); $categories = $select->fetchAll(); $categories_list = array(); foreach($categories as $category) { $categories_list[$category['id']] = $category['name']; } include '../partials/admin_header.php'; ?> <h1>Editer une réalisation</h1> <form action="#" method="POST"> <div class="form-group"> <label for="name">Nom de la réalisation</label> <?= input('name'); ?> </div> <div class="form-group"> <label for="slug">URL de la réalisation</label> <?= input('slug'); ?> </div> <div class="form-group"> <label for="content">Contenu de la réalisation</label> <?= textarea('content'); ?> </div> <div class="form-group"> <label for="category_id">Nom de la catégorie</label> <?= select('category_id', $categories_list); ?> </div> <?= csrfInput(); ?> <button type="submit" class="btn btn-default">Enregistrer</button> </form> <?php include '../partials/footer.php'; ?>

form.php

<?php function input($id) { $value = isset($_POST[$id]) ? $_POST['id'] : ''; return "<input type='text' class='form-control' id='$id' name='$id' value='$value'>"; } function textarea($id) { $value = isset($_POST[$id]) ? $_POST['id'] : ''; return "<textarea type='text' class='form-control' id='$id' name='$id'>$value</textarea>"; } function select($id, $options = array()) { $return = "<select class='form-control' id='$id' name='$name'>"; foreach($options as $k => $v) { $selected = ''; if(isset($_POST['id']) && $k == $_POST['id']) { $selected = ' selected="selected"'; } $return .= "<option value='$k' $selected>$v</option>"; } $return .= '</select>'; return $return; } ?>

Merci de votre aide :)

3 réponses

Carouge10, il y a 11 ans

Bonjour,

Je sais pas si cela peut jouer mais il y a un FROM en minuscule dans une requête.
De plus, regarder votre form.php, il y a des erreurs sur les conditions linéaires....

Reeko94, il y a 11 ans

Merci de m'avoir répondu aussi vite, je viens de modifier le from en majuscule . Mais pouvez-vous m'en dire plus sur les erreurs des conditions linéaires ?

Carouge10, il y a 11 ans

Quelque soit la valeur de $_POST[$id], vous prenez $_POST['id']

$value = isset($_POST[$id]) ? $_POST['id'] : '';