Problème mis en forme tableau dynamique

WRInaute occasionnel
Bonjour,

Je n'arrive pas à mettre mon tableau en forme qui s'alimente avec des requêtes sql.
Les données sont bien récupérées mais l'affichage ce n'est pas trop ce que je veux.
voici mon code :

Code:
<? include ('connexion.php'); 
$idcom = $_GET['idcom'] ;
$mag = $_GET['mag'] ;
$datecom = substr("$idcom", 0,-6);
?>
<center>Détail de la commande de <? echo $mag ;?> du <? echo $datecom; ?></center>
<table width="25%" border="1" align="center" bordercolor="#FFFFFF" style="border: 1 solid #FFFFFF">
 <br />
 <td bgcolor="#5389EE" class="intitule" width="23%"><B><font size="5" color=white></font></B><center>
 <b><font size="1" color="#FFFFFF">Produits</font></b>
 </center></td>
<td bgcolor="#5389EE" class="intitule" width="1%"><B><font size="5" color=white></font></B><center>
 <b><font size="1" color="#FFFFFF">Stock</font></b>
 </center></td>
<td bgcolor="#5389EE" class="intitule" width="1%"><B><font size="5" color=white></font></B><center>
<b><font size="1" color="#FFFFFF">Qte</font></b>
</center></td>
<td bgcolor="#5389EE" class="intitule" width="1%"><B><font size="5" color=white></font></B><center>
<b><font size="1" color="#FFFFFF">Stock S-1</font></b>
</center></td>
<td bgcolor="#5389EE" class="intitule" width="1%"><B><font size="5" color=white></font></B><center>
<b><font size="1" color="#FFFFFF">Qte S-1</font></b>
</center></td>
<?php

$num_semaine = strftime("%U")-1 ;

$sql = "SELECT * from lignedecommande WHERE idcom = $idcom";

$resultat = mysql_query ($sql);

$nblignes = mysql_num_rows($resultat); 
$i = 0;
while ($cl = mysql_fetch_array ($resultat))
{

$couleur = "#5389EE";
$i++;

	if ($i % 2 ==1)
	{
	$couleur = "#0066CC";
	}
  $prod   = $cl['Produit'];
  $stock  = $cl['Stock'];
  $qte    = $cl['Qte'];
  
  echo "<tr BGCOLOR=$couleur>";
  echo "<td><font size=2 color=white><b>$prod<b></font></td>";
  echo "<td><font size=2 color=white><b>$stock<b></font></td>";
  echo "<td><font size=2 color=white><b>$qte</font></td>";
  
  }
$sql2 = "SELECT * from lignedecommande WHERE Mag = '$mag' AND Semaine= '$num_semaine'";
$result = mysql_query ($sql2);

$lignes = mysql_num_rows($result); 
$a = 0;
while ($col = mysql_fetch_array ($result))
{

$couleur = "#5389EE";
$a++;

	if ($a % 2 ==1)
	{
	$couleur = "#0066CC";
	}
  $stock1  = $col['Stock'];
  $qte1     = $col['Qte'];
  $prod1   = $col['Produit'];
   
  echo "<td><font size=2 color=white><b>$prod1<b></font></td>";
  echo "<td><font size=2 color=white><b>$stock1<b></font></td>";
  echo "<td><font size=2 color=white><b>$qte1</font></td>";
  echo "</tr>";
}

echo "</table>";
mysql_close()
?>

Pouvez-vous m'aider?

Merci.
 
WRInaute passionné
Dans ton premier while tu ne fermes pas ton <tr>. La première ligne non plus d'ailleurs (ac les entêtes)

Y'a un BR dans un <table>

Et utilise des styles CSS pour rendre ça lisible, et modifiable facilement ;) car là c'est assez horrible à lire. Un simple style sur le tr te sauverais la vie.
 
WRInaute occasionnel
bonjour Bacteries,

Toujours là pour les autres j'apprecie beaucoup.

Tout dabord merci pour la balise BR que j'avais oublié, je vais m'occuper des CSS mais j'explique la mise en forme du tableau que je souhaite obtenir :


Produits Stock Qte Produits Stock S-1 Qte S-1

Produit1 0 1 Produit1 0 2
Produit2 0 2 Produit2 1 3



etc... les chiffres sont à titre d'exemple.

mon tableau actuellement s'affiche comme ceci :

Produit 1 Stock Qte Produits Stock S-1 Qte S-1

Produit1 0 1
Produit2 0 2
Produit1 0 2
Produit2 1 3

Peux tu m'éclairer?
 
WRInaute passionné
Ton <tr> mal placé alors. L'erreur est là, après à lire le code c'est assez difficile, surtt ac la mise en forme HTML.

Là je ne vois qu'a un seul moment où tu as des tr, après chaque tuple (ligne) de ta requête SELECT * from lignedecommande WHERE Mag = '$mag' AND Semaine= '$num_semaine'.

Donc je ne vois pas cmt tu mettre en forme comme tu le souhaite.
 
WRInaute accro
Il te faut écrire les résultats de tes requêtes dans des tableaux et ensuite lire les tableaux en même temps. J'ai mis une limite dans les requêtes pour éviter un décalage en sortie html.

Code:
<?php
  $req = "SELECT * from lignedecommande WHERE idcom = $idcom LIMIT 5";
  $res = mysql_query($req);
  //place les données dans un tableau
  while($data = mysql_fetch_assoc($res)) { $tablo[]=$data;  }


  $req2 = "SELECT * from lignedecommande WHERE Mag = '$mag' AND Semaine= '$num_semaine' LIMIT 5";
  $res2 = mysql_query($req2);
  //place les données dans un tableau
  while($data2 = mysql_fetch_assoc($res2)) { $tablo2[]=$data2;  }


  echo '<table>';
  $nb=count($tablo); 
  for($i=0;$i<$nb;$i++){ 
    
  //les valeurs à afficher 
  $valeur1=$tablo[$i]['Produit'];
  $valeur2=$tablo[$i]['Stock'];
  $valeur3=$tablo[$i]['Qte'];

  $valeur4=$tablo2[$i]['Produit'];
  $valeur5=$tablo2[$i]['Stock'];
  $valeur6=$tablo2[$i]['Qte'];

  echo '<tr>';
  echo '<td>'.$valeur1.'</td><td>'.$valeur2.'</td><td>'.$valeur3.'</td><td>'.$valeur4.'</td><td>'.$valeur5.'</td><td>'.$valeur6.'</td>';
  echo '</tr>';

  } 
  echo '</table>';  ?>
 
WRInaute occasionnel
Merci beaucoup Koogar c'est effectivement beaucoup plus comprehensible et plus clair comme ça et ça fonctionne nickel.

Merci à tous
 
Discussions similaires
Haut