За последние 24 часа нас посетили 22663 программиста и 1037 роботов. Сейчас ищут 689 программистов ...

Undefined index: id_product

Тема в разделе "PHP и базы данных", создана пользователем rita345, 13 дек 2018.

Метки:
  1. rita345

    rita345 Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    Делаю корзину покупок. Когда добавляю
    PHP:
    1. <a href="index.php?page=products&action=add&id=<?php echo $row['id_product'] ?>">Add to cart</a
    Получаю ошибку: "Undefined index: id_product in ........"
    Вот полный код страницы :
    PHP:
    1. <?php
    2. if(isset($_GET['action']) && $_GET['action']=="add"){
    3.         $id=intval($_GET['id']);
    4.         if(isset($_SESSION['cart'][$id])){
    5.         $_SESSION['cart'][$id]['quantity']++;
    6.         }else{
    7. $sql_s="SELECT * FROM products
    8. WHERE id_product={$id}";
    9. $query_s=mysqli_query($sql_s);
    10. if(mysqli_num_rows($query_s)!=0){
    11. $row_s=mysqli_fetch_array($query_s);
    12.                 $_SESSION['cart'][$row_s['id_product']]=array(
    13.                 "quantity" => 1,
    14.                 "price" => $row_s['price']  );
    15.                 }else{
    16.                 $message="This product id it's invalid!"; } } } ?>
    17. <h1>Product List</h1>
    18.                 <?php
    19.                if(isset($message)){
    20.                echo "<h2>$message</h2>";  }
    21.                ?>
    22. <table>
    23. <tr>
    24.             <th>Name</th>
    25.             <th>Description</th>
    26.             <th>Price</th>
    27.             <th>Action</th>
    28. </tr>
    29.         <?php
    30. $mysqli = new mysqli('.....','....','....','tutorials');
    31. $sql = 'SELECT name,description,price FROM products';
    32. $result = $mysqli->query($sql);  
    33. while($row = $result->fetch_array()){
    34.     ?>
    35.         <tr>
    36.             <td><?php echo $row['name'] ?></td>
    37.             <td><?php echo $row['description'] ?></td>
    38.             <td><?php echo $row['price'] ?>$</td>
    39. <td><a href="index.php?page=products&action=add&id=<?php echo $row['id_product'] ?>">Add to cart</a></td>
    40.         </tr>
    41. <?php
    42.     }
    43. ?>
    44. </table>
    Подскажите, почему индекс неопределен? Как исправить ?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.821
    Симпатии:
    736
    Адрес:
    Татарстан
    ну определите )))
    вы ж в select'e не выбираете данное поле, отчего оно появится? от сырости?
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.744
    Симпатии:
    1.319
    Адрес:
    Лень
    31 строка
    $sql = 'SELECT name,description,price FROM products';
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @rita345, где подключение к БД в первой ветке? Поналепили, что черт ногу сломит.

    При ООП-синтаксисе подключения к БД нужно использовать отдельную ф-цию определения ошибки. Также нужно проверять результат выполнения каждого запроса, прежде чем его использовать.
    --- Добавлено ---
    P.S. Учитесь отделять работу с БД от разметки. В реале так, как вы показали, даже индусы не делают.
     
  5. rita345

    rita345 Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    Верно. Но теперь другая ошибка. Когда нажимаю add в корзину выходит сообщение :
    "This product id it's invalid!"
    "mysqli_query() expects at least 2 parameters, 1 given in //////products.php on line 9" и
    "mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in/////products.php on line 10
    "
    В чем здесь может быть причина?
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Вам перевести или сами найдете переводчик?

    Первое – у query() при проц. синтаксисе должно быть два параметра: коннект и текст запроса. Второе – значение параметра имеет тип, отличный от mysqli_result, потому что не проверяете его перед использованием, как я написал выше.
    --- Добавлено ---
    Второе – это скорее всего результат первого, но проверять результат запроса нужно в любом случае.
     
  7. rita345

    rita345 Новичок

    С нами с:
    1 ноя 2018
    Сообщения:
    16
    Симпатии:
    0
    Я знаю перевод. Как это исправить? Думаю все дело в
    PHP:
    1. $sql_s="SELECT * FROM products
    2. WHERE id_product={$id}";
    3. $query_s=mysqli_query($sql_s);
    4. if(mysqli_num_rows($query_s)!=0){
    5. $row_s=mysqli_fetch_array($query_s);
     
  8. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    498
    Симпатии:
    57
    ну читай документацию по функциям.
    кликни на название функцию в коде который ты выложил, это же ссылки на описание функции