Как занести в БД два товара одного заказа

arhat78

Новичок
Всем привет! Голову сломал, но так и не решил: пытаюсь занести в БД через INSERT два товара одного заказа, но в таблицу попадает только один товар, две строчки никак...

PHP:
function saveOrder( $uid, $n, $p, $e, $a, $prod_id, $title,$dt){
        global $link,$basket;
        $goods = myBasket();basketInit(); $uid=$basket['orderid'];
        foreach($goods as $item):
      
        $stmt = mysqli_stmt_init($link);
        $sql = 'INSERT INTO `orders`( uid, `name`, `phone`, `email`, `address`,`prod_id`, `title`, datetime)VALUES (?,?,?,?,?,?,?,?)';
        if(!$stmt = mysqli_prepare($link, $sql))
          return false;
        mysqli_stmt_bind_param($stmt, "ssssssss",$basket['orderid'], $n, $p, $e, $a,$item['prod_id'], $item['title'],$dt);
        mysqli_stmt_execute($stmt);
        mysqli_stmt_close($stmt);
        return true; 
        
      endforeach;   
          
        mysqli_stmt_close($stmt);
        setcookie('basket','',time()-3600);
        return true;
    }
 
 
$goods = myBasket();
    $n = clearStr($_POST['name']);
    $p = clearStr($_POST['phone']);
    $e = clearStr($_POST['email']);
    $a = clearStr($_POST['address']); $dt=date('Y-m-j H:i:s');
    foreach ($goods as $item):
    $prod_id=$item['prod_id'];
    $title=$item['title'];
   $uid=$basket['orderid'];
    endforeach;
  
    if(!saveOrder( $uid,$n, $p, $e, $a, $prod_id,$title,$dt)) {
        echo 'Произошла ошибка при добавлении товара!';
       }
       else{
        echo 'Товар успешно добавлен';
       }
    
?>
Таблица orders:


SQL:
id  INT(11) NO  PRI  NULL
    AUTO_INCREMENT 
uid VARCHAR(11) NO      NULL
        
name    VARCHAR(230)    NO       NULL
        
phone   VARCHAR(230)    NO       NULL
        
email   VARCHAR(100)    NO      NULL
        
address VARCHAR(100)    NO       NULL
        
prod_id INT(11) NO      NULL
        
title   VARCHAR(100)    NO      NULL
        
datetime    TIMESTAMP   NO       NULL
 

WMix

герр M:)ller
Партнер клуба
PHP:
foreach ($goods as $item): 
    $prod_id=$item['prod_id']; // !!! ACHTUNG !!! $prod_id, $title и $uid на каждую итерацию перезаписываются
    $title=$item['title'];
   $uid=$basket['orderid'];
    endforeach;
    
    //  !!! ACHTUNG !!! запись происходит 1х раз
    if(!saveOrder( $uid,$n, $p, $e, $a, $prod_id,$title,$dt)) {
        echo 'Произошла ошибка при добавлении товара!';
       }
       else{
        echo 'Товар успешно добавлен';
       }
 

arhat78

Новичок
foreach ($goods as $item): $prod_id=$item['prod_id']; // !!! ACHTUNG !!! $prod_id, $title и $uid на каждую итерацию перезаписываются $title=$item['title']; $uid=$basket['orderid']; endforeach;
Убрал этот цикл, в функции saveOrder завершение цикл переставил выше и всё заработало.

В данном коде (здесь не весь), у меня данные заказчика записываются в файл
PHP:
file_put_contents('admin/'.'ORDERS_LOG',$order, FILE_APPEND);
и оттуда уже достаются на страницу заказа. А можно всё заносить в БД (и данные заказчика и данные товара) и выводить сводно на страницу заказа?
 
Сверху