J'ai eu ce travail alors quand j'ai ajouté la nouvelle catégorie Quantity
il produit maintenant cette erreur.Offset non défini: 0 dans la fonction d'édition
Undefined offset: 0 in (the form values)
Je ne vois pas où se trouve le décalage non défini. Toute aide serait appréciée.
Je sais aussi que mysql est déprécié mais je veux qu'il fonctionne avant de changer.
Comme une note, toutes les données sont rappelées à la forme d'édition est lorsque vous traitez, il produit cette erreur
également la requête a été validée et fonctionne.
Modifier Fonction
function edit_product($id, $name, $description, $price, $quantity, $picture, $category) {
$id = (int) $id;
$category = (int) $category;
$name = mysql_real_escape_string($name);
$description = mysql_real_escape_string($description);
$price = mysql_real_escape_string($price);
$quantity = (int) $quantity;
$picture = mysql_real_escape_string($picture);
mysql_query("UPDATE `shop` SET
`prod_id` = {$category},
`name` = '{$name}',
`description` = '{$description}',
`price` = '{$price}',
`quantity` = '{$quantity}',
`picture` = '{$picture}'
WHERE `id` = {$id}");
echo mysql_error();
}
Modifier la page
$post = get_posts($_GET['id']);
if (isset($_POST['name'], $_POST['description'], $_POST['price'], $_POST['quantity'], $_POST['picture'], $_POST['category'])) {
$errors = array();
$name = trim($_POST['name']);
$description = trim($_POST['description']);
$price = trim($_POST['price']);
$quantity = trim($_POST['quantity']);
$picture = trim($_POST['picture']);
if (empty($name)) {
$errors[] = 'You need to supply a title';
} else if (strlen($name) > 255) {
$errors[] = 'Title cannot be longer than 255 characters';
}
if (empty($description)) {
$errors[] = 'You need to supply text';
}
if (empty($price)) {
$errors[] = 'You need to supply text';
}
if (empty($quantity)) {
$errors[] = 'You need to supply text';
}
if (empty($picture)) {
$errors[] = 'You need to supply text';
}
if (! category_exists('id', $_POST['category'])) {
$errors[] = 'Category does not exist';
}
if (empty($errors)) {
edit_product($_GET['id'], $name, $description, $price, $quantity, $picture, $_POST['category']);
header("Location: ../admin/edit_products.php?id={$post[0]['post_id']}");
die();
}
}
?>
.....
<label for="name">Title</label>
<input type="text" name="name" value="<?php echo $post[0]['name']; ?>"><br/>
<label for="price">price</label>
<input type="text" name="price" value="<?php echo $post[0]['price']; ?>"><br/>
<label for="sale">Quantity</label>
<input type="text" name="quantity" value="<?php echo $post[0]['quantity']; ?>"><br/>
<label for="picture">Picture</label>
<input type="text" name="picture" value="<?php echo $post[0]['picture']; ?>"><br/>
<label for="description">Description</label>
<textarea name="description" rows="15" cols="50"><?php echo $post[0]['description']; ?></textarea><br/>
<label for="prod_id">Category</label>
<select name="category">
<?php
foreach (get_categories() as $category) {
$selected = ($category['name'] == $post[0]['name']) ? " selected" : '';
?>
<option value="<?php echo $category['id']; ?>" <?php echo $selected; ?>> <?php echo $category['name']; ?></option>
--------------
Fonction Obtenir post - Comme l'a demandé.
function get_posts($id = null, $cat_id = null) {
$posts = array();
$query ="SELECT `shop`.`id` AS `post_id` , `products_cat`.`id` AS `category_id` , `shop`.`name` , `description` , `price` , `quantity` , `picture`
FROM `shop`
INNER JOIN `products_cat` ON `shop`.`prod_id` = `products_cat`.`id` ";
if (isset($id)) {
$id = (int) $id;
$query .= " WHERE `shop`.`id` = {$id}";
}
if (isset($cat_id)) {
$cat_id = (int) $cat_id;
$query .= " WHERE `products_cat`.`id` = {$cat_id}";
}
$query .= " ORDER BY `shop`.`price` DESC";
$query = mysql_query($query);
echo mysql_error();
while ($row = mysql_fetch_assoc($query)) {
$posts[] = $row;
}
return $posts;
}
Etes-vous sûr que c'est dans votre fonction d'édition et non dans un endroit référencé '$ post [0] ...'? – Crontab
Sur quelle ligne ??? –
Je regarde juste votre code et je vois que vous avez 'prod_id = {$ category},' - Devrait-il être 'prod_id = '{$ category}',' - Avec le '' ''? ... Vérification juste ... –