2013-01-04 3 views
0

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; 
} 
+1

Etes-vous sûr que c'est dans votre fonction d'édition et non dans un endroit référencé '$ post [0] ...'? – Crontab

+1

Sur quelle ligne ??? –

+0

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 ... –

Répondre

4

La première chose s'il vous plaît ne pas user mysql_ et aller pour mysqli_

Pendant un certain temps, Dans le code ci-dessus

Undefined offset: 0 error is cooming from lines as you said 

<input type="text" name="price" value="<?php echo $post[0]['price']; ?>"> 

En effet, la valeur à l'indice $ post [] ['price'] n'a pas encore été défini.

Il suffit de le remplacer par

<?php echo isset($post[0]['price'])?$post[0]['price']:''; ?> 

dans l'attribut de valeur.

J'espère que ça va vous aider!

+1

Brillant. Merci pour l'aide sandip. Vous étiez très patient. Et ouais im passer à l'autre code une fois que je suis tout trié :) – user1941674

+1

Travail intelligent sandip. Continuez. Tu bouges nous bougeons. –

Questions connexes