#php #html
#php #HTML
Вопрос:
Я работаю над проектом электронной коммерции, в котором я должен добавить товар в корзину с выбранным цветом, размером и количеством. Товар успешно добавлен в корзину, но значения цвета, размера и количества возвращают значение null. Я пытался использовать amp;_POST
$_GET
метод, но значения по-прежнему не возвращаются.
Добавить в корзину Интерфейс
<div class='product-action d-flex flex-row align-items-center mb--10 mt--20'>
<select name='sizes' id='sizes' class='customDrop'>
$listSizes
</select>
<select name='colors' id='colors' class='customDrop' style='width:15rem'>
$listColors
</select>
<div class='quantity'>
<input type='number' class='quantity-input' name='qty' id='qty' value='1' min='1' max='10' readonly>
</div>
<a href='shop.php?add_wishlist=$pro_id'><i class='dl-icon-heart2'></i></a>
</div>
<div class='product-action d-flex flex-row align-items-center mb--30 mt--20'>
<a href='shop.php?add_cart=$pro_id'>
<button type='button' class='btn btn-style-1 btn-semi-large add-to-cart'>
Add To Cart
</button>
</a>
</div>
Функция корзины PHP:
function cart(){
global $conn;
if(isset($_GET['add_cart'])){
$ip_address = getIp();
$size = $_GET['sizes'];
$color = $_GET['colors'];
$quantity = $_GET['qty'];
$product_id = $_GET['add_cart'];
$check_product = "SELECT * FROM cart WHERE ip_address = '$ip_address' AND product_uid = '$product_id'";
$run_check_product = mysqli_query($conn, $check_product);
if(mysqli_num_rows($run_check_product) > 0){
echo "";
} else {
$insert_product = "INSERT INTO cart (ip_address, product_uid, product_color, product_size, quantity) VALUES ('$ip_address','$product_id', '$color', '$size', '$quantity')";
$run_insert_product = mysqli_query($conn, $insert_product);
echo "<script>window.open('shop.php', '_self')</script>";
}
}
}
Этот URL успешно вставляет товар shop.php?add_cart=$pro_id
, но остальные значения возвращаются пустыми.
Чего я хочу добиться при Add To Cart
клике shop.php?add_cart=$pro_idamp;size=(selected size)amp;color=(selected color)amp;qty=(selected qty)
, как мы можем это сделать?
Я новичок в PHP и MySQL, буду признателен за любую помощь, спасибо!
Ответ №1:
Вы обернули свои входные данные и выбрали в теге? Кажется, что у вас нет.
<div class='product-action d-flex flex-row align-items-center mb--10 mt--20'>
<form action="/shop.php" method="get"></form>
<select name='sizes' id='sizes' class='customDrop'>
$listSizes
</select>
<select name='colors' id='colors' class='customDrop' style='width:15rem'>
$listColors
</select>
<div class='quantity'>
<input type='number' class='quantity-input' name='qty' id='qty' value='1' min='1' max='10' readonly>
</div>
<a href='shop.php?add_wishlist=$pro_id'><i class='dl-icon-heart2'></i></a>
</div>
<div class='product-action d-flex flex-row align-items-center mb--30 mt--20'>
<a href='shop.php?add_cart=$pro_id'>
<button type="submit" value="Submit">Add to Cart</button>
</a>
</form>
</div>
Завершите ввод и выберите под тегом формы, а также измените кнопку «Добавить в корзину» на «Отправить». Если вам нужен ваш идентификатор продукта, вы также можете создать скрытый ввод, чтобы сохранить его для передачи shop.php .
https://www.w3schools.com/tags/att_input_type_hidden.asp
Ответ №2:
Вы не отправляете выбранные значения для размеров и цветов, если ваша кнопка отправки заключена в тег, который ссылается на другой URL, а не на ваш атрибут действия формы.
Просто измените свою форму.
<form id="product-form" action="./shop.php" method="get">
<input type="hidden" name="product_id" value="<?= htmlspecialchars( $product_id ) ?>">
<!-- all your product property inputs here -->
<button type="submit">add to card</button>
</form>
Просто используйте тег формы с правильными атрибутами. не заключайте ни один элемент в a-тег, который не будет передавать значения формы.
Кроме того, ваш запрос к базе данных широко открыт для внедрения sql. Это серьезная проблема безопасности. вы должны использовать подготовленные инструкции, чтобы оставаться в безопасности.
Комментарии:
1. Он не добавляет
add_cart=$pro_id
в URL, вместо этого он выполняется так же, как/shop.php?sizes=XLamp;colors=Royal Blueamp;qty=3
как я могу добавить это после shop.php ?2. Я отредактировал свой ответ и добавил элемент ввода типа hidden. Этот скрытый элемент ввода получил имя
product_id
. В данном примере это приведет кshop.php?product_id={product_id}amp;sizes={sizes}amp;colors={colors}amp;qty={qty}
.3. Спасибо, это сработало! И спасибо, что дали мне знать, я изменю эти запросы в подготовленные инструкции, это много значит!