PHP problème d'affichage tableau

  • Auteur de la discussion Auteur de la discussion webac
  • Date de début Date de début
WRInaute occasionnel
bonjour

cela fait dejà plusiseurs POST pour le même problème mais à ce jour je ne l'ai toujours pas resolu.
Ce que je souhaite faire c'est afficher plusieurs commandes les une à coté des autres.
voici mon code :

Code:
<?php 
  include ('connexion.php');
  $idcom = $_POST['idcom'] ;
  $ids = @implode("', '", $_POST['idcom']) ; 
  $mag = $_POST['mag'] ;
  $magasin = @implode("', '", $_POST['mag']) ; 
  
  $req = "SELECT * from lignedecommande WHERE idcom IN ('$ids')";
  $res = mysql_query($req); 
  
  $tablo='';
  while($data = mysql_fetch_assoc($res)) { $tablo[]=$data; } 

  $num_semaine = strftime("%U")-1 ;
  $req2 = "SELECT * from lignedecommande WHERE Mag IN ('$magasin') AND Semaine= '$num_semaine'"; 
  $res2 = mysql_query($req2); 
   
  $tablo2='';
  while($data2 = mysql_fetch_assoc($res2)) { $tablo2[]=$data2;  } 
  

  echo '<center><table border=1 bordercolor=#000000>';
  echo '<tr>';
  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>Produits</u></b></font></td>';
  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>S</u></b></font></td>';
  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>Q</u></b></font></td>';
  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>S-1</u></b></font></td>';
  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>Q-1</u></b></font></td>';
  echo '</tr>'."\n"; 
  
  $nb = mysql_num_rows($res);
  $nb2= mysql_num_rows($res2);
  
  $i2=0; 
  for($i=0;$i<$nb;$i++){ 
  $i2++; 
  if($i2<$nb2){ 

     
  $valeur1=$tablo[$i]['Produit']; 
  $valeur2=$tablo[$i]['Stock']; 
  $valeur3=$tablo[$i]['Qte']; 
  $valeur4=$tablo2[$i2]['Stock']; 
  $valeur5=$tablo2[$i2]['Qte']; 
  $valeur6=$tablo[$i]['Mag'];
  
  echo '<tr>'; 
  echo '<td><font size=2>'.$valeur1.'</font></td><td>'.$valeur2.'</td><td>'.$valeur3.'</td><td>'.$valeur4.'</td><td>'.$valeur5.'</td>'; 
  echo '</tr>'; 
  
  } 
  }
  
  echo '</table>';  
?>
Le problème qui se pose actuellement c'est que les données sont bien récupérées mais s'affichent à la suite sur la même colonne.
moi je souhaite que chaque commande s'affiche dans une nouvelle colonne ou tableau.

Merci d'avance pour votre aide.
 
WRInaute passionné
webac> Je trouve que tu te compliques la vie avec deux requêtes. Je me demande si tu ne peux pas faire plus simple. Mais bon là c'est pas ton soucis (mais ça complique ton code peut être pour rien).

Là tu affiche une commande par ligne. C'est ce que tu demandes à ton code. (juste?)

Tes echo '<tr>'; fais les que quand tu as $i % 2 = 0 (par exemple); sinon à chaque passage dans ta boucle tu créé une nlle ligne.
Et aussi tu dois ajouter des td à ton entête.
Essaye de comprendre ton code; ça te prendra bien moins de temps après...
 
WRInaute discret
Code:
<?php
function openTab(){
  echo '<center><table border=1 bordercolor=#000000>';
  echo '<tr>';
  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>Produits</u></b></font></td>';

  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>S</u></b></font></td>';



  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>Q</u></b></font></td>';
  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>S-1</u></b></font></td>';
  echo '<td bgcolor="#5389EE"><b><u><font color=#FFFFFF>Q-1</u></b></font></td>';
  echo '</tr>'."\n";
}
function addLineTab($tab1, $tab2){
  echo '<tr>';
  echo '<td><font size=2>'.$tab1[0].'</font></td>';
  echo '<td><font size=2>'.$tab1[3].'</font></td>';
  echo '<td><font size=2>'.$tab1[4].'</font></td>';
  echo '<td><font size=2>'.$tab2[0].'</font></td>';
  echo '<td><font size=2>'.$tab2[1].'</font></td>';
  echo '</tr>'."\n";
}
function closeTab(){
  echo '</table></center>';
}
// remplace les requetes sql
$tab1 = array(array('A1', 'A2', 'A3', 'A4', 'A5'),
              array('B1', 'B2', 'B3', 'B4', 'B5'),
              array('C1', 'C2', 'C3', 'C4', 'C5')
        );
$tab2 = array(array('##A1', '##A2'),
              array('##B1', '##B2')
        );
// limite le nombre de lignes a utiliser
if( ($nb1 = sizeof($tab1)) != ($nb2 = sizeof($tab2)) ){
  if($nb1 > $nb2){
    $nb1 = $nb2;
  }
}
// affichage
openTab();
for($i=0; $i<$nb1; $i++){
  addLineTab($tab1[$i], $tab2[$i]);
}
closeTab();
?>

Voilà un code qui marche.

Par contre attention, ton code est vraiment mauvais (tant au niveau html, sql que php).

Si tu n'arrives pas à construire un tableau, va faire une pause. Et après, construit toi un tableau à la main, avant d'y intégrer tes infos via php.
Enfin, vérifies tes requêtes sql. Parce que tester à la main si le nombre de lignes renvoyées est le même est tout de même dommage...
 
WRInaute accro
Il me semble que je t'avais deja tout expliqué de A à Z. Pourquoi ne pas avoir avec continué ton post si tu n'avais pas compris ?

Tu attends qu'on te ponde une solution complète ? :(
 
WRInaute occasionnel
bonjour YoyoS,

je n'attends absolument pas une solution complete, juste à comprendre ce que je peux modifier pour pouvoir afficher mes données colonne par colonne.

Je me suis dis qu'un nouveau post serait plus visibles par les utilisateurs q'un ancien post c'est tout.
 
WRInaute accro
Pas dutout, ca embrouille plus qu'autre chose puisqu'il faut tout recommencer. Je fais quoi je copie colle ma réponse alors ? t'aurais pu au moins répondre ...
 
Discussions similaires
Haut