Member 13847672 Ответов: 2

Как сохранить запись продукта более чем на один выбранный продукт?


Привет, я создал страницу оформления заказа. Если я выберу более одного продукта, то запись сохранит только одну запись второго ряда. Например, Я выбираю ABC и XYZ продукт для хранения в базе данных; но только хранить в базе данных XYZ продукт. Ниже я дал код того, что я пробовал.

Что я уже пробовал:

Вот мои данные, полученные в коде базы данных.
<form id="order_pro" action="" method="post">
	<?php
		foreach ($_SESSION['productinfo'] as $productinfo) {
	?>
		<div class="row">
			<input type="text" name="pro_name" value="<?php echo $productinfo['pro_name'];?>"/>
			<input type="text" name="pro_qua" value="<?php echo $productinfo['pro_qua'];?>"/>
			<input type="text" name="pro_price" value="<?php echo number_format($productinfo['pro_prices'] * $productinfo['pro_qua'],2); ?>"/>
		</div>
		<div class="row">
			<button type="button" class="btn btn-primary next-step button_checkout">Save and continue</button>
		</div>
	<?php 
	}                                   
	?>
</form>


Вот код хранения данных:

<?php
	
	require_once '../admin/includes/db_connect.php';		
		
	$pro_name	=	$_POST["pro_name"];
	$pro_qua	=	$_POST["pro_qua"];
	$pro_price	=	$_POST['pro_price'];

	$name		=	$_POST["name"];
	$mobile		=	$_POST["mobile"];
	$email		=	$_POST["email"];
	$address	=	$_POST["address"];
	$city		=	$_POST["city"];
	$pin		=	$_POST["pin"];
		
	if( empty($name)|| empty($mobile)|| empty($email)|| empty($address) || empty($city) || empty($pin)){
		echo '			
			<div class="alert alert-danger alert-dismissible" role="alert">
			<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
			Warning! Please fill all mandatory fields.
			</div>
		';
	}		
	else{
		$result=mysqli_query($conn, "INSERT INTO wm_orders(pro_name, pro_qua, pro_price, name, mobile, email, address, city, pin, status) VALUES ('$pro_name','$pro_qua','$pro_price','$name','$mobile','$email','$address','$city','$pin','pending')")or die("Could not insert data: " .mysqli_error($conn));
	
		echo 'data store in database';				
	}	
?>

Herman&lt;T&gt;.Instance

более 1 строки и никаких итераций по вашей коллекции строк. Это ваш следующий поиск в Google

2 Ответов

Рейтинг:
1

Peter Leow

Возвращение к основам:
1. Какую бы кнопку вы ни нажали в форме, все строки данных будут отправлены в принимающий скрипт;
2. как принимающий скрипт может отличить элементы данных из разных строк, если они имеют одинаковые значения для своих атрибутов "имя" во всех строках?
Проверить это Как создать массивы в HTML-форме?[^]


Рейтинг:
1

Patrice T

$result=mysqli_query($conn, "INSERT INTO wm_orders(pro_name, pro_qua, pro_price, name, mobile, email, address, city, pin, status) VALUES ('$pro_name','$pro_qua','$pro_price','$name','$mobile','$email','$address','$city','$pin','pending')")

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]