Используя скрытое поле для добавления данных в базу данных

Я добавляю данные, используя скрытое поле. Первоначально он работает и показывает всю необходимую мне информацию в моей базе данных. Однако, когда я снова работал над ним, он захватывает только то же имя, что и предыдущие, которые уже были записаны ранее.

Например, есть изображение яблока, и когда я добавляю, оно должно показывать название яблока. Затем, когда я нажимаю на изображение груши, ясно, что оно должно показывать "груша" в качестве имени в моей базе данных. Но вместо "груши" это выглядит как яблоко. Кто-нибудь знает почему?

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>

<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>


<?php
            if (isset($_SESSION['user_id'])) {
                //$order_id = $_POST['order_id'];
                $name = $_POST['name'];
                //$quantity = $_POST['quantity'];
                $price = $_POST['price'];

                $query = "INSERT INTO order_details (name,price) VALUES ('" . $name . "','" . $price . "')";
                $status = mysqli_query($link, $query) or die(mysqli_error($link));

                if ($status) {
                    $msg = "Item has been added.<br />";
                    $msg .= "<a href='product.php'>Back</a></p>";
                }
            } else {
                $msg = "There was an error processing the form.Please try again <a href=girls.php>Back";
            }
            ?>

4 ответа

Решение

Используйте индивидуальный <form> за каждый предмет. Текущая настройка (как вы заметите, если вы установите другие параметры по-другому) всегда использует первое определение скрытых входов внутри вашей формы.

Попробуйте использовать

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>

Ваш HTML входы одинаковы name:

<input type="hidden" name="name" value="Apple"> 

<input type="hidden" name="name" value="Pear"> 

И с тех пор Apple во-первых, это первый, который обрабатывается PHP,

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

Вы используете тот же name атрибут для разных продуктов в одной форме, поэтому вы будете перезаписывать поля формы.

Вы можете использовать массивы, чтобы иметь несколько элементов с одинаковым именем:

<input type="hidden" name="name[]" value="Apple">
// etc.

А потом в php, $_POST['name'] будет также массив.

И вам действительно стоит перейти на подготовленные заявления.

Использовать две разные формы

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>
<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>

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

Другие вопросы по тегам