2017-05-16 2 views
0
mit zwei, während zum Vergleich

Hier ist mein Code ...wie zwei mysqli_fetch_assoc Werte Schleifen

while ($guest_orders=mysqli_fetch_assoc($result_guest_orders)) { 
           $temp_guest_prod=$guest_orders['prodCode']; 
           $temp_guest_qty=$guest_orders['qty']; 
           while ($logged_orders=mysqli_fetch_assoc($result_logged_orders)) { 
            $temp_logged_prod=$logged_orders['prodCode']; 
            echo $temp_guest_prod."<br />"; 
            if($temp_guest_prod==$temp_logged_prod){ 
             echo "same product<br />"; 
            } 
            echo "logged prod code: ".$logged_orders['prodCode']." QUANTITY: ".$logged_orders['qty']."<br />"; 
           } 
           $logged_orders=""; 
           echo "temp prod code: ".$temp_guest_prod." QUANTITY: ".$temp_guest_qty."<br />"; 
           echo "guest prod code: ".$guest_orders['prodCode']." QUANTITY: ".$guest_orders['qty']."<br />"; 
          } 

Hier ist der Ausgang ...

enter image description here

Ich bin nur ein bisschen verwirrt, wie Dies geschieht. Ich muss zwei Felder vergleichen, um zu wissen, ob sie die gleichen Werte haben. Kann mir das jemand erklären? Danke im Voraus.

+0

Bleiben wir nur bei 'prodCode'. Wenn Sie jede Spalte 'prodCode' aus jeder Tabelle transponieren, erhalten Sie 2 Arrays: '$ guest_orders_prodCode = array ('rhino', 'xxx', 'Shona');' und '$ logged_orders_prodCode = array ('rhino', ' Shona ',' xxx '); ', wobei' xxx' keinen Wert bedeutet. Können Sie mir bitte jetzt etwas besser erklären, was Sie mit ihnen machen wollen? Legen Sie sie untereinander, um ein besseres Bild zu bekommen. –

+0

Dies ist das Szenario, ich habe einen Einkaufswagen, der alle Kunden bietet, unabhängig davon, ob sie eingeloggt sind oder nicht. Wenn sie versuchen, ein Produkt zu kaufen, obwohl sie nicht angemeldet sind, werden sie als Gast behandelt, dem ich eine eindeutige ID zuteile und sie beim Kauf in tblcart mit dem aktuellen Datum speichern. Wenn sie sich dann dazu entscheiden, sich einzuloggen, werden ihre Bestellungen als Gast und als eingeloggte Person zusammengeführt. Ich habe Probleme damit. –

+0

Was meinst du mit "wird zusammengeführt"? Nehmen wir an, wir sprechen nur über eine Person (Kunde): Er bestellt Produkte als Gast. Sie werden als Datensätze in der Tabelle guest_orders gespeichert. Später kommt er wieder, loggt sich ein und macht eine neue Bestellung. Diese gekauften Produkte werden dann in der Tabelle "logged_orders" gespeichert. Recht? Nun möchten Sie alle gespeicherten Datensätze (Produkte) aus 'guest_orders' und denen aus' logged_orders' übernehmen und was damit machen? Willst du sie in einen dritten Tisch bringen? –

Antwort

0

Vielen Dank für Ihre schnelle Antwort und freundliche Hilfe. Aber ich kannte das Problem bereits und bekam eine erfolgreiche Antwort. Unten ist meine Lösung.

while ($guest_orders=mysqli_fetch_assoc($result_guest_orders)) { 
           $temp_guest_prod[]=$guest_orders; 
          } 

          while ($logged_orders=mysqli_fetch_assoc($result_logged_orders)) { 
           $temp_logged_prod[]=$logged_orders; 
          } 

          foreach($temp_guest_prod as $guest_orders) { 
           foreach($temp_logged_prod as $logged_orders) { 
            if ($guest_orders['prodCode'] == $logged_orders['prodCode']){ 
             echo "guest prod code: ".$guest_orders['prodCode']." QUANTITY: ".$guest_orders['qty']."<br />"; 
             echo "logged user prod code: ".$logged_orders['prodCode']." QUANTITY: ".$logged_orders['qty']."<br />"; 
            } 

           } 

          } 

Noch immer danke!

0

können Sie verwenden:

while ($guest_orders=mysqli_fetch_assoc($result_guest_orders)) { 

    $temp_guest_prod=$guest_orders['prodCode']; 
    $temp_guest_qty=$guest_orders['qty']; 

    echo "Begin ".$temp_guest_prod." comparing :"; 

    while ($logged_orders=mysqli_fetch_assoc($result_logged_orders)) { 

    $temp_logged_prod=$logged_orders['prodCode']; 
    $temp_logged_prod_qty=$logged_orders['qty']; 
    echo "Comparing ".$temp_guest_prod." to ".$temp_logged_prod.":<br />"; 
    //You can also compare name and quantity: 
    //if(($temp_guest_prod==$temp_logged_prod) && ($temp_guest_qty==$temp_logged_prod_qty)){ run code... } 
    if($temp_guest_prod==$temp_logged_prod){ 
     echo "Same product<br />"; 
     $logged="YES"; 
     } else { 
     "Not the same<br />"; 
     } 

    echo "logged prod code: ".$temp_logged_prod." QUANTITY: ".$temp_logged_prod_qty."<br />"; 
    } 

    $logged=""; 

    echo "temp prod code: ".$temp_guest_prod." QUANTITY: ".$temp_guest_qty."<br />"; 
    echo "guest prod code: ".$guest_orders['prodCode']." QUANTITY: ".$guest_orders['qty']."<br />"; 

    echo "End of product ".$temp_guest_prod." comparing. <br /> Result:"; 

    if($logged=="YES"){ 
     echo "Match found!<br /><br />"; 
     } else { 
     echo "No match.<br /><br />"; 
     } 
} 
+0

Hallo! Ich habe es versucht. Die nächste Zeile von $ logged_orders wird jedoch nicht mit $ guest_orders verglichen. –

+0

In diesem Szenario habe ich einen Einkaufswagen, der alle Kunden abdeckt, unabhängig davon, ob sie eingeloggt sind oder nicht. Wenn sie versuchen, ein Produkt zu kaufen, obwohl sie nicht angemeldet sind, werden sie als Gast behandelt, dem ich eine eindeutige ID zuteile und sie beim Kauf in tblcart mit dem aktuellen Datum speichern. Wenn sie sich dann dazu entscheiden, sich einzuloggen, werden ihre Bestellungen als Gast und als eingeloggte Person zusammengeführt. Ich habe Probleme damit. –

+0

Sie können Ihre Antwort mit dieser Ausgabe aktualisieren. –