Почему бы вам не добавить ключ флага в массив вашего продукта, который обозначает
независимо от того, был ли продукт вставлен или нет, перед установкой продукта установите флажок.
Если вы даже не можете этого сделать, то создайте еще один массив сеансов (назовите его inserted_ids
), который содержит вставленные идентификаторы продуктов, и проверьте, находится ли product_id
в массиве inserted_ids
.
(Вы можете просто использовать in_array, для этого вам не нужно делать новый цикл).
Это должен быть ваш код:
$_SESSION[ 'inserted_ids' ] = array(); // execute this line before everything else.
if( in_array( $id, $_SESSION[ 'inserted_ids' ] ) {
return;
}
$id = $db->Insert("INSERT INTO orders SET
name = '". $_SESSION['information']['name'] ."',
address = '". $_SESSION['information']['address'] ."',
date = '". Database::Now() ."',
phone = '". (isset($_SESSION['information']['phone']) ? $_SESSION['information']['phone']:'') ."',
email = '". $_SESSION['information']['email'] ."',
city = '". $_SESSION['information']['city'] ."',
zipcode = '". $_SESSION['information']['zipcode']."'
");
$_SESSION['inserted_ids'][] = $id;
$res = $db->Execute("sql statment");
while($row = $res->GetNext()){
$db->Insert("INSERT INTO order_lines SET
price = '$round_price',
order_id = '".$id."',
product_id = '$product_id',
product_name = '$product_name',
units = '$grand_units',
status = '0',
date = '".Database::Now()."',
item_num = '".$item_num."'
");
}