Page 1 sur 1

affichage en colonne

Posté : 03 mars 2006, 10:09
par mark
bonjour, j'appel à un peut d'aide car je débute en php et je séche, voilà ce que je cherche a faire: je voudrait afficher mes résultats en colonne et non en ligne, mon principal pb c'est que je ne souhaite répéter a chaque fois nom, nom2 ect pour chaque article. je pense que c'est pas simple car une variable ne s'affiche pas sur une ligne obligatoirement.

Code : Tout sélectionner

----------------------------------------- : resultat 1 : resultat 2 : --------------------------------------------------- : nom : variable1de1 : variable1de2 : --------------------------------------------------- : nom2 : variable2de1 : variable2de2 : : : suite variable2de1 : : --------------------------------------------------- : nom3 : variable3de1 : variable3de2 : --------------------------------------------------- .....
je sais pas si je suis clair dans mes explication (pas terrible le tableau je sais !!!) ? :oops:
merci d'avance pour votre aide.

Posté : 03 mars 2006, 10:44
par Hermès
Pourquoi ne fais tu pas simplement un tableau html ?
J'ai l'impression de pas comprendre la question en fait =)

Dans tous les cas, le HTML ne permet pas la construction d'un tableau colonne par colonne mais uniquement ligne par ligne.

Posté : 03 mars 2006, 11:30
par Cyrano
Ce n'est pas infaisable, mais tu vas peut-être avoir besoin de stocker les résultats dans un tableau indexé pour reprendre ensuite les informations dans un ordre différent.

Fais donc voir les bouts de code que tu as commencé à faire.

Posté : 03 mars 2006, 12:21
par Invité
merci pour l'aide, voila mon code:
<?php  
$nom = isset($_POST['id-article']) ? $_POST['id-article'] : ""; 
if(!empty($nom)) 
{ 
    $nb = count($nom); 
} 
$clauses = array(); 
for($i = 0; $i < $nb; $i++) 
{ 
    $clauses[] = . $nom[$i]; 
} 
$where = implode(" OR ", $clauses); 
$sql = . 
"WHERE ". $where .";"; 
?> 

<? $result = mysql_query("SELECT * FROM article WHERE id-article = '". $where ."'" ); ?> 

<table> 
  <tr> 
    <th>id-article</th> 
    <th>ref</th> 
    <th>couleur</th> 
  </tr> 
<?php 
    while($row = mysql_fetch_array($result)) 
    { 
?> 
  <tr> 
    <td><?php echo($_SESSION[$row['id-article']]); ?></td> 
    <td><?php echo($_SESSION[$row['ref']]); ?></td> 
    <td><?php echo($_SESSION[$row['couleur']]); ?></td> 
  </tr> 
<?php 
    } 
?> 
</table> 

Posté : 03 mars 2006, 12:52
par Ryle
Les tableaux html s'écrivant dans le sens de lecture (donc par ligne) tu n'as pas vraiment le choix si tu veux le faire en colonne, il te faux quand même les composer ligne par ligne.

Pour cela il faut que tu stockes le résultat de ta requête dans un tableau php à deux dimensions :

Code : Tout sélectionner

id1 | ref1 | couleur1 id2 | ref2 | couleur2 id3 | ref3 | couleur3
while($row = mysql_fetch_array($result))  {
  $tab[] = array($row['id-article'] , $row['ref'], ...); 
}
Une fois ton tableau généré, tu peux alors constituer celui en html en bouclant sur chaque colone :
for($i=0; $i<count($tab[0]); $i++) { // parcours le tableau horizontalement
  echo '<tr>';
  for($j=0; $j<count($tab) { // pour chaque colonne : parcours le tableau vertivalement
    echo '<td>' . $tab[$j][$i] . '</td>'; // affiche à la suite les valeurs de la colonne
  }
  echo '<tr>';
}
Et tu obtiens ainsi un tableau html :

Code : Tout sélectionner

<tr><td>id1 </td><td> id2 </td><td> id3 </td></tr> <tr><td>ref1 </td><td> ref2 </td><td> ref3 </td></tr> <tr><td>couleur1 </td><td> couleur2 </td><td> couleur3 </td></tr>

Posté : 03 mars 2006, 20:14
par mark
j'ai testé mais j'ai une erreur de syntax, j'ai modifié comme ça :
for($i = 0; $i < count($tab[0]); $i++) { // parcours le tableau horizontalement
  echo '<tr>';
  
}
for($j = 0; $j < count($tab); ) { // pour chaque colonne : parcours le tableau vertivalement
  echo '<td>' . $tab[$j][$i] . '</td>'; // affiche à la suite les valeurs de la colonne
  }
j'ai plus d'erreur, mais rien s'affiche ? erreur de syntax ?

Posté : 03 mars 2006, 20:29
par Ryle
Oops... il manque un j++ dans le deuxième for :)
for($i=0; $i<count($tab[0]); $i++) { // parcours le tableau horizontalement 
  echo '<tr>'; 
  for($j=0; $j<count($tab); $j++) { // pour chaque colonne : parcours le tableau vertivalement 
    echo '<td>' . $tab[$j][$i] . '</td>'; // affiche à la suite les valeurs de la colonne 
  } 
  echo '<tr>'; 
} 

Posté : 03 mars 2006, 20:41
par mark
:D ça marche, mais une derniere question je peut mettre ou les entete de ligne (1ere colonne) avec mon texte fixe du genre id-article ect... :shock:

Posté : 04 mars 2006, 01:05
par Ryle
Le plus simple c'est de faire un tableau contenant toutes tes entêtes (dans le même ordre que tes champs) et de l'interroger en début de ligne dans le premier for
$tabTitre = array("Id", "Référence", "Couleur", ... );

for($i=0; $i<count($tabTitre); $i++) { // parcours le tableau horizontalement 
  echo '<tr>'; 
  echo '<th>'.$tabTitre[$i].'</th>'; // affiche le titre de la ligne
  for($j=0; $j<count($tab); $j++) { // pour chaque colonne : parcours le tableau verticalement 
    echo '<td>' . $tab[$j][$i] . '</td>'; // affiche à la suite les valeurs de la colonne 
  } 
  echo '<tr>'; 
} 
J'en ai profité pour remplacer le count($tab[0]) du premier for par un count($tabTitre) qui est plus propre si jamais ta requête ne ramène pas de résultat ;)

Posté : 04 mars 2006, 09:16
par mark
:D ça marche, merci pour l'aide.