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>


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

Post 関数を取得 - 要求どおり。

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 に答える