Prob de boucles imbriquées pour générer un xml!

Petit nouveau ! | 2 Messages

21 déc. 2007, 14:58

Salut tout le monde,

Je dois générer un xml, en déclinant des produits (produits parents) en sous-produits (produits enfants).

Exemple:

Produit A:
description
produit A1
couleur, stock, ...
produit A2
couleur, stock, ...
Produit B:
description
produit B1
couleur, stock, ...
produit B2
couleur, stock, ...

Tout est ok, sauf que la premiere boucle qui sort les données des produits parent s'arrête au premier produit.

J'obtiens donc:
Produit A:
description
produit A1
couleur, stock, ...
produit A2
couleur, stock, ...

Puis plus rien.

Auriez vous une idée svp, j'ai cherché partout sans trouver de solution.

Merci

Le code:

$sql=@mysql_unbuffered_query('SELECT *
FROM jos_vm_product_rdc
LEFT JOIN jos_vm_product_mf_xref ON jos_vm_product_mf_xref.product_id = jos_vm_product_rdc.product_id
LEFT JOIN jos_vm_manufacturer ON jos_vm_product_mf_xref.manufacturer_id = jos_vm_manufacturer.manufacturer_id
LEFT JOIN jos_vm_product_price ON jos_vm_product_price.product_id = jos_vm_product_rdc.product_id where product_price IS NOT NULL');
while($res=@mysql_fetch_assoc($sql))
	{
		if ($res['product_parent_id'] == 0) {
  echo '<description><![CDATA['. $res['product_s_desc'] .']]></description>';
    $test=$res['product_id'];
	while($rest=@mysql_fetch_assoc($sql))
	{
	if ($rest['product_parent_id']==$test) {
  echo '<references>';
  echo '<reference currency="EUR" id="'.$rest['product_sku'].'" available="Y">';
  echo '<characteristic name="weight" unit="kg"><![CDATA['. $rest['product_weight']*100 .']]></characteristic>';
  echo '</reference>';
  echo '</references>';
  }
  }
  echo '<option type="display"><![CDATA[ featuredproduct  ]]></option>';
  echo '</options>';
	}
	}

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 déc. 2007, 15:38

Le problème vient probablement du fait que tes deux boucles while se font sur la même ressource "$sql". Du coup le pointeur est déplacé par la seconde qui parcours tous les enregistrements et quand tu reviens à la principale, il n'y a plus rien à lire :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

21 déc. 2007, 16:49

Dans ce cas, comment puis-je faire pour utiliser une autre ressource, sachant que les données sont dans la même table?