0

我有这个工作,然后当我添加新类别Quantity时,它现在会产生这个错误。

Undefined offset: 0 in (the form values)

我看不到未定义的偏移量在哪里。任何帮助,将不胜感激。

我也知道 mysql 已贬值,但希望它在更改之前工作。

请注意,所有数据都会在您处理它时被召回到编辑表单中,它会产生该错误

查询也已验证并运行。

编辑功能

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();
    }

编辑页面

    $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>


--------------

获取发布功能 - 根据要求。

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;
}
4

1 回答 1

1

首先请不要使用 mysql_并使用 mysqli_

一会儿,在上面的代码中

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

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

这是因为该索引 $post[ 0 ]['price'] 的值尚未设置。

只需将其替换为

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

在值属性中。

希望对您有所帮助!

于 2013-01-04T15:12:15.470 回答