Делаю корзину покупок. Когда добавляю PHP: <a href="index.php?page=products&action=add&id=<?php echo $row['id_product'] ?>">Add to cart</a Получаю ошибку: "Undefined index: id_product in ........" Вот полный код страницы : PHP: <?php if(isset($_GET['action']) && $_GET['action']=="add"){ $id=intval($_GET['id']); if(isset($_SESSION['cart'][$id])){ $_SESSION['cart'][$id]['quantity']++; }else{ $sql_s="SELECT * FROM products WHERE id_product={$id}"; $query_s=mysqli_query($sql_s); if(mysqli_num_rows($query_s)!=0){ $row_s=mysqli_fetch_array($query_s); $_SESSION['cart'][$row_s['id_product']]=array( "quantity" => 1, "price" => $row_s['price'] ); }else{ $message="This product id it's invalid!"; } } } ?> <h1>Product List</h1> <?php if(isset($message)){ echo "<h2>$message</h2>"; } ?> <table> <tr> <th>Name</th> <th>Description</th> <th>Price</th> <th>Action</th> </tr> <?php $mysqli = new mysqli('.....','....','....','tutorials'); $sql = 'SELECT name,description,price FROM products'; $result = $mysqli->query($sql); while($row = $result->fetch_array()){ ?> <tr> <td><?php echo $row['name'] ?></td> <td><?php echo $row['description'] ?></td> <td><?php echo $row['price'] ?>$</td> <td><a href="index.php?page=products&action=add&id=<?php echo $row['id_product'] ?>">Add to cart</a></td> </tr> <?php } ?> </table> Подскажите, почему индекс неопределен? Как исправить ?
@rita345, где подключение к БД в первой ветке? Поналепили, что черт ногу сломит. При ООП-синтаксисе подключения к БД нужно использовать отдельную ф-цию определения ошибки. Также нужно проверять результат выполнения каждого запроса, прежде чем его использовать. --- Добавлено --- P.S. Учитесь отделять работу с БД от разметки. В реале так, как вы показали, даже индусы не делают.
Верно. Но теперь другая ошибка. Когда нажимаю 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 " В чем здесь может быть причина?
Вам перевести или сами найдете переводчик? Первое – у query() при проц. синтаксисе должно быть два параметра: коннект и текст запроса. Второе – значение параметра имеет тип, отличный от mysqli_result, потому что не проверяете его перед использованием, как я написал выше. --- Добавлено --- Второе – это скорее всего результат первого, но проверять результат запроса нужно в любом случае.
Я знаю перевод. Как это исправить? Думаю все дело в PHP: $sql_s="SELECT * FROM products WHERE id_product={$id}"; $query_s=mysqli_query($sql_s); if(mysqli_num_rows($query_s)!=0){ $row_s=mysqli_fetch_array($query_s);
ну читай документацию по функциям. кликни на название функцию в коде который ты выложил, это же ссылки на описание функции