2017-05-26 11 views
0
Array ([0] => Array ([0] => Array ([name] => Heart Choclates [code] => LFB-P-10 [qty] => 1 [type] => main [price] => 1200 [stock] => 5 [image] => choclates-valentines-day.jpg [quantity] => 12 [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery) [1] => Array ([name] => Birthday Pink [code] => KB-P-5 [qty] => 1 [type] => addon [price] => 600 [stock] => 7 [image] => pink-roses.jpg [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery)) [1] => Array ([0] => Array ([name] => Red & Yellow Roses [code] => KB-P-6 [qty] => 1 [type] => main [price] => 800 [stock] => 9 [image] => birthday-red-roses.jpg [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery) [1] => Array ([name] => Signature Cake [code] => KB-P-7 [qty] => 1 [type] => addon [price] => 0 [stock] => 9 [image] => signature-cake.jpg [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery) [2] => Array ([name] => Truffle Cake [code] => KB-P-8 [qty] => 1 [type] => addon [price] => 10 [stock] => 7 [image] => truffle-cake.jpg [expdate] => May 27th 2017 [exptime] => 11:00 PM to 12:00 AM [expdtype] => Mid night delivery))) 

私はこのような配列を持っています。オーダーの配列と各オーダーの配列内の製品の配列。今私はこれらの配列をデータベースに追加する必要があります。各行に注文があり、商品は<br/>で区切られています。どのように可能ですか?前もって感謝します。PHPで多次元配列をデータベースに追加

私はこれを使ってコードを印刷しました。

<?php 
    session_start(); 
    error_reporting(0); 
    print_r($_SESSION["products"]); 
    foreach($_SESSION["products"] as $row => $temp){  
?>           
<div> 
<?php 
    foreach($temp as $innerRow => $cart_itm){ 
    ?> 
     <div><?php echo $cart_itm['code']; ?></div> 
    <?php 
    } 
    ?> 
</div> 
<?php 
} 
?> 

この結果を期待

enter image description here

enter image description here

enter image description here

+0

なぜ私は "' 'を意味するのですか?今度は、これらの配列をデータベースに追加し、各行に注文を入れ、商品を' '' "で区切る必要がありますか? – mi6crazyheart

+0

ブレークが見つかりませんでした。今すぐ編集しました –

+0

もう一度、 '' '製品を
' ''で区切ってどういう意味ですか?あなたは期待される出力の例を挙げることができますか? – mi6crazyheart

答えて

1

私はこれがあなたが始めることを願っています:

$data = array(
    array(
     array(
      'name' => 'Heart Choclates', 
      'code' => 'LFB-P-10', 
      'qty' => '1' 
     ), 
     array(
      'name' => 'Birthday Pink', 
      'code' => 'KB-P-5', 
      'qty' => '1' 
     ) 
    ), 
    array(
     array(
      'name' => 'Red & Yellow Roses', 
      'code' => 'KB-P-6', 
      'qty' => '1' 
     ), 
     array(
      'name' => 'Signature Cake', 
      'code' => 'KB-P-7', 
      'qty' => '1' 
     ), 
     array(
      'name' => 'Truffle Cake', 
      'code' => 'KB-P-8', 
      'qty' => '1' 
     ) 
    ) 
); 

foreach($data as $row_item) 
{ 
    $row = array(); 

    foreach($row_item as $product) 
    { 
     foreach($product as $key => $value) 
     { 
      if(isset($row[ $key ])) 
       $row[ $key ] .= $value . ' <br> '; 
      else 
       $row[ $key ] = $value . ' <br> ';   
     } 
    } 

    //--- 
    echo 'Row: <br>'; 
    var_dump($row); 
    echo '<br><br>'; 

    //-- insert the contents of $row array into the database 
} 

出力:

enter image description here

あなたがデータベースに$row配列の内容を挿入することができます。


EDIT

上記の答えはあなたが尋ねたあなたの特定の質問に基づいて、ことに注意してください。

私はまだあなたがここで何をしているのか、まだ理解していませんでした。注文の詳細を保存しようとしている場合は、これを達成するための貧弱な方法です!あなたは別のデータベーステーブルを保持し、一緒に参加する関係を使用する必要があります。これは、リレーショナルデータベースのためのものです!

たとえば、2つのテーブルをtblOrderMastertblOrderDetailsとします。

ここで、tblOrderMasterの表に、主キーはorder_idとなり、あなたはおそらくつもりストアは合計金額、割引額、総サービス税、注文日、顧客ID、注文状況だろう、など

tblOrderDetailsテーブルには、複数の行があります。ここでは、特定の注文の各商品を保存します。たとえば、注文ID(外部キー)、商品ID、単価、数量、税金、合計(単価x数量)などを格納します。

これは適切な方法です。

+0

まだデータベースへの追加方法 –

+0

データは '$ row'変数で利用可能になります。その配列に存在するデータをデータベースに挿入するだけです! –

+0

データベースに追加できません。私はそれを印刷することができます。私の質問をデータベース –

2

このサンプルコードを試してみてください。

$orderList[1001] = array(
     0 => array(
       'name' => 'Heart Choclates', 
       'code' => 'LFB-P-10', 
       'qty' => 1, 
       'type' => 'main', 
       'price' => 1200, 
       'stock' => 5, 
       'image' => 'choclates-valentines-day.jpg', 
       'quantity' => 12, 
       'expdate' => 'May 27th 2017', 
       'exptime' => '11:00 PM to 12:00 AM', 
       'expdtype' => 'Mid night delivery' 
      ), 
     1 => array(
       'name' => 'Birthday Pink', 
       'code' => 'KB-P-5', 
       'qty' => 1, 
       'type' => 'addon', 
       'price' => 600, 
       'stock' => 7, 
       'image' => 'pink-roses.jpg', 
       'quantity' => 3, 
       'expdate' => 'May 27th 2017', 
       'exptime' => '11:00 PM to 12:00 AM', 
       'expdtype' => 'Mid night delivery' 
      ) 
    ); 

$orderList[1002] = array(
     0 => array(
       'name' => 'Red & Yellow Roses', 
       'code' => 'KB-P-6', 
       'qty' => 1, 
       'type' => 'main', 
       'price' => 800, 
       'stock' => 9, 
       'image' => 'birthday-red-roses.jpg', 
       'quantity' => 10, 
       'expdate' => 'May 27th 2017', 
       'exptime' => '11:00 PM to 12:00 AM', 
       'expdtype' => 'Mid night delivery' 
      ) 
    ); 


echo '<pre>'; 
print_r($orderList); 
echo '<pre>'; 

$productList = array(); 

foreach ($orderList as $key => $value) 
{ 
    $names = array(); 
    $quantity = array(); 

    foreach ($value as $key1 => $value1) 
    { 
     $names[] = $value1['name']; 
     $quantity[] = $value1['quantity']; 
    } 

    $productList[$key]['names'] = implode('<br>', $names); // Used `:` insted of '<br>' for separator. But, You can use whatever you want. But, better don't use any HTML tag. 
    $productList[$key]['quantity'] = implode('<br>', $quantity); 
} 

echo '<pre>'; 
print_r($productList); 
echo '<pre>'; 


// Sample DATA INSERTION Query by PDO 
try { 
    $conn = new PDO('mysql:host=localhost;dbproductName=someDatabase', $userproductName, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    // Prepare the query ONCE 
    $stmt = $conn->prepare('INSERT INTO someTable VALUES(:name, :quantity)'); 

    foreach ($productList as $key => $value) { 
     $productName = $value['names']; 
     $productQuantity = $value['quantity']; 

     $stmt->bindParam(':name', $productName); 
     $stmt->bindParam(':quantity', $productQuantity); 

     $stmt->execute(); 
    } 

} catch(PDOException $e) { 
    echo $e->getMessage(); 
} 

// Ref : https://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338 
+0

私は注文の異なる行としてデータベースにこれを追加する方法を尋ねています。私はそれを印刷することができます –

+0

出力は配列の形でその配列を任意のループで使用し、それに応じて挿入クエリをDBに挿入します。どのくらい難しいですか? – mi6crazyheart

+0

@SarathHariはコードサンプルの一番下に挿入するサンプルPDOクエリを追加しました。そのデータ配列からレコードを挿入する際に問題が発生しました。 – mi6crazyheart