2016-03-30 7 views
1

Ich versuche, eine abgeschlossene Bestellung in einer Tabelle namens Aufträge in einer Datenbank zu speichern. In der Datenbank zeigt die Auftragstabelle nur das letzte Produkt an, aber ich brauche es, um alle Produkte in der Bestellung anzuzeigen.Wie Sie mehr als einen Wert in eine Datenbankspalte eingeben

unten in dem Code ($ query2) packt es alle IDs der Produkte, die in den Benutzern Warenkorb sind. (Es gibt zwei Produkte im Warenkorb)

ich sie dann eine while-Schleife verwenden, um anzuzeigen, aber wenn ich versuche, sie in die Tabelle orders ($ query3) mit der Variablen $ pro_id einzufügen, nimmt sie nur das letzte Produkt im Warenkorb und gibt es in die Datenbank ein.

Wie bekomme ich beide Produkte in die Bestellungstabelle? Muss ich irgendwie ein Array verwenden? Oder gibt es eine andere Möglichkeit, dies zu tun?

Danke!

 $ip = getIp(); 
     $query = "SELECT * FROM cart WHERE ip='$ip'"; 
     $result = mysqli_query($conn, $query); 

     if(mysqli_num_rows($result) > 0){ 
      while($row = mysqli_fetch_array($result)){ 
       $id  = $row['id']; 
       $pro_qty = $row['quantity']; 

       $query2 = "SELECT * FROM product WHERE id='$id'"; 
       $result2 = mysqli_query($conn, $query2);  

       if(mysqli_num_rows($result2) > 0){ 
        while ($row = mysqli_fetch_array($result2)){ 
         $pro_id = $row['id']; 
        } 
       } 
      } 
     } 

     if(isset($_POST['placeOrder'])){ 
      $query3 = "INSERT INTO orders (productId) VALUES ('$pro_id')"; 
      $result3 = mysqli_query($conn, $query3); 
     } 

    } 
+3

Sie können mehrere Werte in einer Spalte eingeben. Sie gestalten es so um, dass jede Spalte nur einen Wert hat. Siehe http://stackoverflow.com/questions/3653462/is-storing-a-delimited-list-in-a-database-column-really-that-bad – Mike

Antwort

1

Ich habe jemanden online gefunden, der mir einen anderen Weg gezeigt hat, was ich zu tun versuchte. Anstatt ein Array zu verwenden, um beide Produkte in einer Spalte zu speichern; Ich habe zwei Tabellen in der Datenbank erstellt ("orders" und "orderproducts"). Mit dem folgenden Code habe ich es so gemacht, dass, wenn der "placeOrder" -Button angeklickt wurde, der Auftrag des Kunden in die "orders" -Tabelle (mit einer eindeutigen Nummer, die ich erstellt und in der Variable "$ orderId" gespeichert habe) eingefügt wird.

Ich bekam dann die ID der Produkte, die im Kundenwarenkorb waren und kreierte eine while-Schleife, die durch die Produkte im Warenkorb lief und "$ query3" jedes Produkt einzeln in seine eigene Zeile in den "Bestellprodukten" eingab "Tabelle mit der" orderId = '$ orderId' "($ orderId ist die eindeutige Nummer, die ich erstellt habe) und" productId = '$ productId' ".

if(isset($_POST['placeOrder'])){ 
    $query = "INSERT INTO orders (orderId) VALUES ('$orderId')"; 
    $result = mysqli_query($conn, $query); 

    $ip = getIp(); 
    $query1 = "SELECT * FROM cart WHERE ip='$ip'"; 
    $result1 = mysqli_query($conn, $query1); 

    if(mysqli_num_rows($result1) > 0){ 
     while($row = mysqli_fetch_array($result1)){ 
      $id  = $row['id']; 

      $query2 = "SELECT * FROM product WHERE id='$id'"; 
      $result2 = mysqli_query($conn, $query2);  

      if(mysqli_num_rows($result2) > 0){ 
       while ($row = mysqli_fetch_array($result2)){ 
        $productId = $row['id']; 

        $query3 = "INSERT INTO orderproducts (orderId, productId) VALUES ('$orderId', '$productId')"; 
        $result3 = mysqli_query($conn, $query3); 
       } 
      } 
     } 
    } 
} 

dann, dass, um zu greifen, habe ich eine Abfrage wie folgt aus:

$orderNumber = 5578;(This is a fake order number) 

    $query = "SELECT * FROM orders WHERE orderId='$orderNumber'"; 
    $result = mysqli_query($conn, $query); 

    if($result){ 
     $query1 = "SELECT * FROM orderproducts WHERE orderId='$orderNumber'"; 
     $result1 = mysqli_query($conn, $query1); 
    } 
-1

Sie benötigen ein Array und die serialize es schaffen, dann können Sie es mit unserialize lesen:

$orderarray = array(); 
array_push($orderarray,$order1); 
array_push($orderarray,$order2); 
$orderarray = serialize($orderarray); 
mysql_query("INSERT INTO ..."); 

#read it with unserialize: 
$output = unserialize($output); 
-1

Sie können Ihre Variable $ pro_id ändern und ein Array-Typ wie diese machen:
$ pro_id = array();
und dann verwenden Sie es, um Ihre IDs in diesem Array zu speichern.

Verwandte Themen