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 :)
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....
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 ?
Quelque soit la valeur de $_POST[$id], vous prenez $_POST['id']
$value = isset($_POST[$id]) ? $_POST['id'] : '';