boucle dans boucle ... probleme

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : boucle dans boucle ... probleme

par jeanmed » 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

par Yosh » 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>

par jeanmed » 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);

par Yosh » 05 déc. 2007, 18:07

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

Indente ton code comme il faut s'il te plait

par jeanmed » 05 déc. 2007, 18:06

//code plus bas

Re: boucle dans boucle ... probleme

par Yosh » 05 déc. 2007, 17:59

Donne nous la boucle que tu utilise...

boucle dans boucle ... probleme

par jeanmed » 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