boucle dans boucle ... probleme

Eléphanteau du PHP | 41 Messages

05 déc. 2007, 17:33

Bonjour,

Voila je dois réaliser un tableau dynamiquement à partir d une base Mysql.

voici le model du tableau que je dois réaliser :
<table width="100%" cellspacing="0" cellpadding="3">
  <tr>
    <th scope="col">reference</th>
    <th scope="col">designation</th>
    <th align="center" valign="middle" scope="col">100</th>
    <th align="center" valign="middle" scope="col">200</th>
    <th align="center" valign="middle" scope="col">300</th> 
    <th align="center" valign="middle" scope="col">400</th>
  </tr>
  <tr>
    <td>CFFS50</td>
    <td>Super top il est boo</td>
    <td align="center" valign="middle">25</td>
    <td align="center" valign="middle">30</td>
    <td align="center" valign="middle">35</td>  
    <td align="center" valign="middle">60</td>
  </tr>
  <tr>
    <td>FFRR</td>
    <td>Super moins bien</td>
    <td align="center" valign="middle">-</td>
    <td align="center" valign="middle">25</td>
    <td align="center" valign="middle">-</td> 
    <td align="center" valign="middle">50</td>
  </tr>
  <tr>
    <td>RRTT88</td>
    <td>Moins topopop</td>
    <td align="center" valign="middle">25</td>
    <td align="center" valign="middle">10</td>
    <td align="center" valign="middle">-</td> 
    <td align="center" valign="middle">-</td>
  </tr>
  <tr>
    <td>PPP</td>
    <td>56666fvsdjfjh sdjkfhsdjk</td>
    <td align="center" valign="middle">63</td>
    <td align="center" valign="middle">69</td>
    <td align="center" valign="middle">70</td>
    <td align="center" valign="middle">90</td>
  </tr>
</table>


Voici ma base de donnée "quantité"

Code : Tout sélectionner

id;id_famille;_ip_produit;quantite;prix 1;1;1;25;100 2;1;1;30;200 3;1;1;35;300 4;1;1;60;400 5;1;2;25;200 6;1;2;50;400 7;1;3;25;100 8;1;3;10;200 9;1;4;60;100 10;1;4;69;200 11;1;4;70;300 12;1;4;90;400
Voila pour la refrence et la designation je passe par l id produit et je recupere les info d une autre table.

Exeplication : le haut de mon tableau doit afficher toutes les quantitées disponibles dans la tables quantité. Pas de pb j ai fai une requette avec disctinct :
$requetteQt="SELECT DISTINCT `quantite` FROM `tarif_quantite` WHERE `id_famille` =1";
je fait un tableau avec les valeurs de quantité puis je fais un sort($tabQt, SORT_DESC);

Puis grace une boucle for je concatène le reste de l entête de mon tableau.


Mon problème c est la suite : je dois tous les élément avec le même id_produit sur la même ligne en dessous de la bonne quantité. (voir exemple html)

Je bloque une idée.
merci de votre aide
Modifié en dernier par jeanmed le 05 déc. 2007, 18:08, modifié 2 fois.

Mammouth du PHP | 568 Messages

05 déc. 2007, 17:59

Donne nous la boucle que tu utilise...

Eléphanteau du PHP | 41 Messages

05 déc. 2007, 18:06

//code plus bas
Modifié en dernier par jeanmed le 05 déc. 2007, 18:59, modifié 2 fois.

Mammouth du PHP | 568 Messages

05 déc. 2007, 18:07

oulala, c'est carrément illisible...

Indente ton code comme il faut s'il te plait

Eléphanteau du PHP | 41 Messages

05 déc. 2007, 18:14

Voila c est mieux ???
<?


		$tdQt="";
		$tdQt2='<tr><td align="center"  id="filetTRb"><span id="titre">fdsfsdfsd</span></td><td align="center"  id="filetTRb"><span id="titre">fdsfsdfsd</span></td>';


//recuperer le nombre de quantité différent q	nq doublons
		$requetteQt="SELECT DISTINCT `quantite` FROM `tarif_quantite` WHERE `id_famille` =1";
		$req_Qt = mysql_query($requetteQt) or die('Erreur SQL (Ligne Quantite) : <br />'.$requetteQt);
			while($BoucQt=mysql_fetch_array($req_Qt))
				{
					$tabQt[]=array("qt"=>$BoucQt['quantite']);
				}
//tabelau trié
		sort($tabQt, SORT_DESC); 
		$nbQt=count($tabQt);

//fabrication du haut du tableau
		for($i=0;$i<$nbQt;$i++)
			{
			$tdQt.='<td align="center"  id="filetTRb"><span id="titre">'.$tabQt[$i]['qt'].'</span></td>';
			}

//fin tableau
//boucle sur toute les quantié avec comme id famille 1
		$leprod="";
		$requetteCompQt="SELECT * FROM `tarif_quantite` WHERE `id_famille` =1 ORDER BY `tarif_quantite`.`id_produit` ASC ";
		$req_Comp = mysql_query($requetteCompQt) or die('Erreur SQL (Ligne Quantite) : <br />'.$requetteCompQ);
		$n=0;


while($BouCo=mysql_fetch_array($req_Comp))
	{

		//si quantité pas comme dans tableau
		if($tabQt[$n]["qt"]==$BouCo['quantite'])
			{print("egal : valeur tab -".$tabQt[$n]["qt"]." / valeur quantité -".$BouCo['quantite']."<br>");
				$qtTemp='';}
		else
			{print("pas egal : valeur tab -".$tabQt[$n]["qt"]." / valeur quantité -".$BouCo['quantite']."<br>");
			$qtTemp='<td align="center"  id="filetTRb"><span id="titre"> - </span></td>'; }
//tentative de faire un teste sur les quantité mais sa merde
		$n++;
//tentative de faire une ligne par id_produit sa marche apparement !!!
//print($leprod."<br>");
		if($leprod=="")
			{
			$leprod=$BouCo['id_produit'];
			$tdQt2.=$qtTemp.'<td align="center"  id="filetTRb"><span id="titre">'.$BouCo['prix_ht'].'</span></td>';<br>
			}

		elseif($leprod==$BouCo['id_produit'])
			{$tdQt2.=$qtTemp.'<td align="center"  id="filetTRb"><span id="titre">'.$BouCo['prix_ht'].'</span></td>';
			$leprod=$BouCo['id_produit'];}

		else
		{
		$tdQt2.=$qtTemp.'</tr><tr><td align="center"  id="filetTRb"><span id="titre">fdsfsdfsd</span></td><td align="center"  id="filetTRb">
		<span id="titre">fdsfsdfsd</span></td><td 	align="center"  id="filetTRb"><span id="titre">'.$BouCo['prix_ht'].'</span></td>';
		$leprod=$BouCo['id_produit'];
		}


}
//fabrication du menu du haut



$tdQt2.='</tr>';


//je print le tous pour faire un tableau html

$modTemp=' ';

$modTemp.='<table width="100%" border="0" cellspacing="0" cellpadding="0" id="tableauTarif">
  <tr>
    <td align="center" id="filetTRb"><span id="titre">Reference</span></td>
    <td align="center"  id="filetTRb"><span id="titre">Designation</span></td>
	
  '.$tdQt.'

  </tr>'.$tdQt2.'';


$modTemp.='</table>';
print($modTemp);
?>

Ma base mysql :

Code : Tout sélectionner

CREATE TABLE IF NOT EXISTS `tarif_quantite` ( `id` int(11) NOT NULL auto_increment, `id_produit` varchar(255) NOT NULL default '', `id_famille` int(11) NOT NULL default '0', `quantite` varchar(255) NOT NULL default '', `prix_ht` varchar(255) NOT NULL default '', `poid` varchar(255) NOT NULL default '', `promo` enum('ok','no') NOT NULL default 'no', `date_deb` date NOT NULL default '0000-00-00', `date_fin` date NOT NULL default '0000-00-00', `remise` decimal(10,0) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ; -- -- Contenu de la table `tarif_quantite` -- INSERT INTO `tarif_quantite` (`id`, `id_produit`, `id_famille`, `quantite`, `prix_ht`, `poid`, `promo`, `date_deb`, `date_fin`, `remise`) VALUES (1, '1', 1, '100', '13.63', '0.153', 'ok', '0000-00-00', '0000-00-00', 50), (2, '1', 1, '250', '15.79', '0.359', 'ok', '0000-00-00', '0000-00-00', 0), (3, '1', 1, '500', '19.93', '0.711', 'no', '0000-00-00', '0000-00-00', 0), (4, '1', 1, '1000', '25.08', '2.914', 'no', '0000-00-00', '0000-00-00', 0), (5, '1', 1, '2000', '39.37', '4.291', 'no', '0000-00-00', '0000-00-00', 0), (6, '1', 1, '3000', '53.66', '2.914', 'no', '0000-00-00', '0000-00-00', 0), (7, '1', 1, '4000', '67.95', '5.668', 'no', '0000-00-00', '0000-00-00', 0), (8, '1', 1, '5000', '82.25', '7.045', 'no', '0000-00-00', '0000-00-00', 0), (9, '1', 1, '7500', '120.53', '10.648', 'no', '0000-00-00', '0000-00-00', 0), (10, '1', 1, '10000', '156.25', '14.09', 'no', '0000-00-00', '0000-00-00', 0), (11, '1', 1, '20000', '304.27', '28.18', 'no', '0000-00-00', '0000-00-00', 0), (12, '2', 1, '300', '40', '', 'no', '0000-00-00', '0000-00-00', 0), (13, '2', 1, '400', '50', '', 'no', '0000-00-00', '0000-00-00', 0), (14, '1', 1, '100', '56', '', 'no', '0000-00-00', '0000-00-00', 0), (15, '3', 1, '500', '56', '', 'no', '0000-00-00', '0000-00-00', 0), (16, '3', 1, '600', '95', '', 'no', '0000-00-00', '0000-00-00', 0);

Mammouth du PHP | 568 Messages

05 déc. 2007, 18:24

Je pense que tu a mal formulé ta question tu veux créé dynamiquement l'entête de ton tableau?

EN gros tu veux générer dynamiquement les cellules

Code : Tout sélectionner

<th align="center" valign="middle" scope="col">100</th> <th align="center" valign="middle" scope="col">200</th> <th align="center" valign="middle" scope="col">300</th> <th align="center" valign="middle" scope="col">400</th>

Eléphanteau du PHP | 41 Messages

05 déc. 2007, 18:39

l entête c est bon c est le reste du tableau en faite.

je voudrais arriver à créer un listing complet sur l idfamille en question.

donc pour l entête c est bon maintenant je dois créer des lignes avec chaque tu tableau avec par exemple tous les éléments dont l id famille = 1 et ou l id produit = 1 et sur tout faire correspondre les bon prix avec les bonnes conditions du haut du tableau ...

C est plus claire ??

voici un plan explicatif : Image

Merci les gas