I had this working then when I added the new category Quantity
it now produces this error.
Undefined offset: 0 in (the form values)
I cannot see where the undefined offset is. Any help would be appreciated.
I also know mysql is depreciated but want it working before changing.
As a note, all the data is recalled to the edit form it is when you process it, it produces that error
Also the query has been validated and runs.
Edit Function
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();
}
Edit 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>
--------------
Get Post function - As requested.
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;
}
$post[0]...
? - WWWprod_id = {$category},
- Should't it beprod_id = '{$category}',
- With the'
? ... Just checking... - John Bustosmysql_*
functions in new code. They are no longer maintained and are officially deprecated. See the red box? Learn about prepared statements instead, and use PDO or MySQLi - this article will help you decide which. If you choose PDO, here is a good tutorial. - Naftali$post = get_posts($_GET['id']);
returning an array or is it empty? Might want to run aprint_r($post)
to make sure it is getting something. Otherwise$post[0]
doesn't exist. - Pitchinnate