PHP ссылка добавить значок в корзину и количество

Привет, ребята, у меня есть проблема и не знаю, как решить эту проблему …
так выглядит стол

У меня есть это меню на каждой странице ресторана. Проблема в том, что я не знаю, как связать значок добавления в корзину с количеством … (хотелось бы, чтобы в php была функция getElementById, но ее нет)
Когда я нажимаю на иконку, я получаю идентификатор еды из БД, используя метод GET … Есть предложения?

Это код:

   <?php
session_start();
include('header.php');
?>

<!-- +++++ Projects Section +++++ -->

<div class="container pt">
<div class="row mt">
<div class="col-lg-6 col-lg-offset-3 centered">
<h3>BAGGER DAVE'S</h3>
<hr>
<p>Bagger Dave's is an American Tavern restaurant chain that was founded in Michigan in 2008.
The restaurant specializes in Craft Burgers, beer and also sells macaroni and cheese,
chili, beer, wine, and bourbon.</p>
</div>
</div>
<div class="row mt centered">
<div class="col-lg-8 col-lg-offset-2">
<p><img class="" src="assets/img/portfolio/5.jpg" alt="" style="position: centered"></p>
<br>
<h3 id="menu">MENU</h3>
<br>
<br>
<table border="2">
<tr>
<td style="font-size: 20px"><b>food name</b></td>
<td style="font-size: 20px"><b>ingradients</b></td>
<td style="font-size: 20px"><b>price €</b></td>
<?php
if (isset($_SESSION["login_user"])) {
echo "<td style='font-size: 20px'><b>quantity</b></td>";
}
?>
</tr><?php
$conn = mysqli_connect(DBHOST, DBUSER, DBPASS, DBNAME);
$sql = "select * from meals where restaurant_id='5'";
$result = $conn->query($sql);
$n = $result->num_rows;

if ($result->num_rows > 0) {
// output data of each row
$i = 0;
while($row = $result->fetch_assoc()) {
//echo "<br> id: ". $row["id"]. " - Name: ". $row["firstname"]. " " . $row["lastname"] . "<br>";
echo "<tr>";
echo "<td>".$row["meal_name"]."</td>";
echo "<td>".$row["ingradients"]."</td>";
echo "<td>".$row["price"]."</td>";
if (isset($_SESSION["login_user"])) {
echo "<td><input type='number' id='".$row['id']."' size='2' min='1' max='20' value='1'></td>";
echo "<td><a href='restaurant05.php?food_id=".$row["id"]."'><img src='assets\img\shopping_cart.png'></a></td>";
}
echo "</tr>";
}
}

if (isset($_GET["food_id"])) {
if (!isset($_SESSION["sum"])) {
$_SESSION["sum"] = 0;
}
if (!isset($_SESSION["counter"])) {
$_SESSION["counter"] = 0;
}
$fid = $_GET["food_id"];
$sql2 = "select price from meals where id='".$fid."'";
$result = $conn->query($sql2);
$row = $result->fetch_assoc();
//echo $row["price"];
$_SESSION["sum"] += $row["price"];
$_SESSION["counter"]++;
//echo "TOTAL: " . $_SESSION["sum"];
echo '<script>document.location.replace("restaurant05.php#menu");</script>';
}
?></table>

</div>
</div><!-- /row -->
</div><!-- /container -->

<?php
include('footer.php');
?>

-2

Решение

Вам нужно сгенерировать форму для каждой строки таблицы

 <form action="" method="get">
<input name="quantity" type="number" min="1" max="20" value="1" />
<input name="food_id" type="hidden" value="{$row["id"] // it's a variable, not a current code}" />
<input name="addToBasket" type="submit" />
</form>

разберите эту форму на tr, td (s), как вы хотите, и стилизуйте кнопку отправки со значком вашей корзины, тогда вы должны проверить что-то вроде

<?php
if(isset($_GET['addToBasket'])){
$quantity = $_GET['quantity'];
$foodId = $_GET['food_id'];
}
?>

Есть много других способов, этот должен быть эффективным и достаточно простым для вас.

0

Другие решения

Прежде всего, давайте избавимся от красных селедок. Код, который генерирует соответствующий HTML-код:

echo "<td><input type='number' id='".$row['id']."' size='2' min='1' max='20' value='1'></td>";
echo "<td><a href='restaurant05.php?food_id=".$row["id"]."'><img src='assets\img\shopping_cart.png'></a></td>";

Все остальное совершенно не связано с вопросом. У меня нет доступа к фактическому выводу, но он должен выглядеть следующим образом (я особенно нахожу его более читабельным):

<td><input type='number' id='31416' size='2' min='1' max='20' value='1'></td>
<td><a href='restaurant05.php?food_id=31416'><img src='assets\img\shopping_cart.png'></a></td>

Ваш добавить в корзину Скрипт ожидает GET-параметры, поэтому может выбирать между формой или ссылкой. Однако эти параметры не могут быть исправлены — они должны настраиваться пользователем. Имея это в виду, вы можете выбрать два метода:

  • Статический HTML:
    1. Оберните свой стол в правильном <form></form> набор тегов
    2. Превратите свою текущую ссылку в кнопку отправки, чтобы передать соответствующий food_id
  • JavaScript:
    1. Назначить onchange обработчик события для количество поле
    2. Перепишите ссылку на строку, чтобы отразить новую сумму

Поскольку ваше приложение уже использует JavaScript, какой из них выбрать, в основном вопрос предпочтений.

Я бы посоветовал вам также попытаться очистить дизайн, который сочетает в себе PHP, SQL, HTML и JavaScript в лучших традициях спагетти-кода. И последнее, но не менее важное: имейте в виду, что ваши продукты отображаются в произвольном порядке, у вас есть проблемы с кодировкой, и ваш сайт открыт для SQL-инъекций и, возможно, XSS.

0

По вопросам рекламы [email protected]