Используя скрытое поле для добавления данных в базу данных
Я добавляю данные, используя скрытое поле. Первоначально он работает и показывает всю необходимую мне информацию в моей базе данных. Однако, когда я снова работал над ним, он захватывает только то же имя, что и предыдущие, которые уже были записаны ранее.
Например, есть изображение яблока, и когда я добавляю, оно должно показывать название яблока. Затем, когда я нажимаю на изображение груши, ясно, что оно должно показывать "груша" в качестве имени в моей базе данных. Но вместо "груши" это выглядит как яблоко. Кто-нибудь знает почему?
<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() при вставке чего-либо в вашу базу данных