Невозможно удалить без ошибки «Неопределенное смещение» - PullRequest
0 голосов
/ 05 декабря 2018

Я делаю очень простой проект для своего задания, и он о корзине покупок.Я создал страницу корзины, используя SESSION с массивом и индексом для отслеживания порядка пользователя.Проблема заключается в том, что всякий раз, когда я удаляю еду из списка корзин, возникает ошибка «Уведомление: неопределенное смещение: 1», «Уведомление: неопределенное смещение: 2» и т. Д. Я прилагаю свои коды здесь:

Это страница моей корзины.В сообщении об ошибке говорится, что в строке, которую я прокомментировал, есть кое-что сделать:

<form method="POST" action="save_cart.php">
<table class="table">
<tbody>

<thead>
      <th></th>
      <th>Name</th>
      <th>Price</th>
      <th>Quantity</th>
      <th>Subtotal</th>
</thead>


  <?php
        //initialize total
        $total = 0;
        if(!empty($_SESSION['cart'])){

        //create array of initail qty which is 1
        $index = 0;
        if(!isset($_SESSION['qty_array'])){
          $_SESSION['qty_array'] = array_fill(0, count($_SESSION['cart']), 1);
        }
        $sql = "SELECT * FROM meal WHERE meal_id IN (".implode(',',$_SESSION['cart']).")";
        $query = $conn->query($sql);
          while($row = $query->fetch_assoc()){
            ?>

          <tr>

              <td class="removebtn" style="text-align: center;">
                <a href="delete_item.php?id=<?php echo $row['meal_id']; ?>&index=<?php echo $index; ?>" >Remove</a>
              </td>
              <td><?php echo $row['meal_name']; ?></td>
              <td>RM <?php echo number_format($row['meal_price'], 2); ?></td>
              <input type="hidden" name="indexes[]" value="<?php echo $index; ?>">
              <td class="qtyinput" ><input type="number" min="1" max="5" class="form-control" value="<?php echo $_SESSION['qty_array'][$index]; ?>" name="qty_<?php echo $index; ?>"></td>

              //THE ERROR IS HERE

              <td>RM <?php echo number_format($_SESSION['qty_array'][$index]*$row['meal_price'], 2); ?></td>
              <?php $total += $_SESSION['qty_array'][$index]*$row['meal_price']; ?>
            </tr>
            <?php
            $index ++;
          }
        }
        else{
          ?>
          <tr>
            <td colspan="5" class="text-center"  style="text-align: center;">No Meal in Cart</td>
          </tr>
          <?php
        }

      ?>
      <tr>
        <td colspan="4" align="left"><b>Total</b></td>
        <td><b>RM <?php echo number_format($total, 2); ?></b></td>
      </tr>
</tr>

Вот моя страница удаления:

session_start();

//remove the id from our cart array
$key = array_search($_GET['meal_id'], $_SESSION['cart']);   
unset($_SESSION['cart'][$key]);

unset($_SESSION['qty_array'][$_GET['index']]);
//rearrange array after unset
$_SESSION['qty_array'] = array_values($_SESSION['qty_array']);

$_SESSION['message'] = "<script>alert('Meal is deleted from your cart');</script>";
header('location: cart.php');

Мне очень нужна твоя помощь.Заранее спасибо!

1 Ответ

0 голосов
/ 05 декабря 2018

Это ошибка индекса, потому что индекс не существует в массиве, замените ваш HTML-код PHP внутри цикла внутри этого.

<tr>

<td class="removebtn" style="text-align: center;">
<a href="delete_item.php?id=<?php echo $row['meal_id']; ?>&index=<?php echo $index; ?>" >Remove</a>
</td>
<td><?php echo $row['meal_name']; ?></td>
<td>RM <?php echo number_format($row['meal_price'], 2); ?></td>
<input type="hidden" name="indexes[]" value="<?php echo $index; ?>">
<td class="qtyinput" ><input type="number" min="1" max="5" class="form-control" value="<?php echo (isset($_SESSION['qty_array'][$index]) ? $_SESSION['qty_array'][$index] : 0); ?>" name="qty_<?php echo $index; ?>"></td>

//THE ERROR IS HERE

<td>RM <?php 
$qty = (isset($_SESSION['qty_array'][$index]) ? $_SESSION['qty_array'][$index] : 0);
echo number_format($qty *$row['meal_price'], 2); ?></td>
<?php $total += $qty*$row['meal_price']; ?>
</tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...