2010-12-22 10 views
0

Ich habe eine Minute Problem mit verschachtelten Schleifen.Ich habe zwei Tabellen Produkt und Produkt_option Jedes Produkt hat eine Option, Preis Beispiel Ring ($ 25) mit Option rot ($. 50) und gelb ($ 75). Also die Tabelle ist so etwas wie dieses Produkt (ID, Preis, Beschreibung) und Produkt_Option (Produkt_ID, Optionsname, Optionspreis) Wenn ich Daten von PHP abrufen, sollte die Ausgabe in etwa so aussehen Ring ($ 25) insgesamt -Preis 25,75 rot (.50), gelb (0,25)Php Nested Schleifen mit wiederholten Werten

Aber meine Ausgabe gezeigt so etwas wie dieses

Ring ($ 25)
rot (.50), rot (.50)

Unten finden Sie den Code ein

session_start(); 
require_once './classes/cartclass.php'; 
$val = new carts(); 

While($cartContent = mysql_fetch_assoc($cartContents)) 
{ 
if($cartContent['ctsid']==session_id()) 
{ 
$cartid=$cartContent['ctid']; 
$subTotal += $cartContent['ctprice'] * $cartContent['ctqty']; 
echo $cartContent['iname']; 
echo $cartContent['mprice']; 
echo $cartContent['mdesc']; 
$count=mysql_num_rows($val->getCartopt($cartid)); 

if($count>0){ 

       $CartOpt = mysql_fetch_assoc($val->getCartopt($cartid)); 
       foreach($CartOpt as $Cartopts){ 

        echo $CartOpts."".$CartOpt['ctopname']; 
        $i++; 
        if($i==$count) 
         break; 

        } 

       } 
     } 
    } 

Antwort

0

Ich habe den letzten Teil Ihres Codes korrigiert, der überhaupt keinen Sinn ergab. diese Versuchen:

session_start(); 
require_once './classes/cartclass.php'; 
$val = new carts(); 

While($cartContent = mysql_fetch_assoc($cartContents)) 
{ 
    if($cartContent['ctsid']==session_id()) 
    { 
     $cartid=$cartContent['ctid']; 
     $subTotal += $cartContent['ctprice'] * $cartContent['ctqty']; 
     echo $cartContent['iname']; 
     echo $cartContent['mprice']; 
     echo $cartContent['mdesc']; 

     if(mysql_num_rows($val->getCartopt($cartid)) > 0) 
     { 
      while ($Cartopts = mysql_fetch_assoc($val->getCartopt($cartid))) 
      { 
       echo $CartOpts['ctopname']; 
      } 
     } 
    } 
} 
+0

Ok, ich über ein bereits versucht, bekommt die während in unendliche loop.Inorder zu vermeiden, dass ich eine Zählung hinzugefügt und brechen in meinem vorherigen Code – user501307

+0

eine Zählung hinzufügen und eine Pause ist völlig nutzlos in meine ehrliche Meinung. Eigentlich sollte es niemals zu einer Endlosschleife kommen, da die Schleife auf Ergebnissen basiert, die von einer Datenbank kommen, die niemals endlos sein kann. Was ich sicher bin, ist, dass die foreach-Schleife kombiniert mit mysql-Ergebnissen und einer Zählung gleich einer einfachen Weile ist. while (mysql_fetch_assoc ($ result)) führt für jedes Element des Arrays eine Schleife aus, so dass das Zählen der Ergebnisse und das Abbrechen der Schleife, wenn sie endet, völlig nutzlos ist. – Shoe