Page 1 sur 1

affichage par colonne

Posté : 23 mai 2005, 15:21
par yohkun
Bonjour à tous,

je cherche à afficher dans un tableau les enregistrements d'une base de données non pas par ligne mais pas colonne.

Voici mon code de trie par ligne:

while($row = mysql_fetch_array($result)) {


echo '<td>';

echo '<tr bgcolor="#feffb7"><span class="text">'.$row["cuvees_nom"].'</tr></span>';


echo '<tr bgcolor="#feffb7"><span class="text">'.$row["cuvees_annee"].'</tr></span>';


echo '<tr bgcolor="#feffb7"><span class="texte"></tr></span>';

echo '<tr bgcolor="#feffb7"><span class="text">'.$row["cuvees_commentaires"].'</tr></span>';


echo '<tr bgcolor="#feffb7"><span class="texte"></tr></span>';

echo '<tr height="42" rowspan="3" bgcolor="#feffb7"><span class="link"><a href=\'javascript:popup("cuvees_seule.php?id='. $row["id_cuvees"] .'")\'><img src="miniaturisation/'.$row["cuvees_image"].'"></tr>';

echo '</td>';

}

Merci d'avance...

Posté : 23 mai 2005, 15:23
par albat
P't-être que j'suis pas bien frais aujourd'hui, mais j'ai pô compris ce que tu veux faire. :-s

Posté : 23 mai 2005, 15:26
par zeus
tu rempli un tableau à 2 dimensions et tu affiches le tableau par colonnes au lien de par ligne !!!

Posté : 23 mai 2005, 15:28
par albat
Je dois être l'unique mammouth blond que la terre ait porté, mais je comprends toujours pas... :lol:

Posté : 23 mai 2005, 15:28
par Cyrano
D'abord je te signale que tu as inversé les <td> et <tr>, ce sont les <td> qu'on trouve dans les <tr> et non l'inverse.

Ensuite, je suis comme albat, j'ai pas vraiment saisi le but recherché ?

Posté : 23 mai 2005, 15:33
par albat
Sans oublier que les <tr> (qui devraient donc être des <td>)
et les <span> sont alternés au lieu d'être imbriqués.

C'est donc blond aussi, un magohamoth ? :shock:
J'aurais pas cru...

Posté : 23 mai 2005, 15:38
par sadeq
Non non albat t'es bien réveillé, c'est yohkun qui déraille.
Ton code yohkun est faux, selon ce que tu veux faire.
Pour afficher les enregistrement en lignes et les champs en colonnes comme le commun des mortels il faut écrire :
while($row = mysql_fetch_array($result)) { 

echo '<tr>'; 

echo '<td bgcolor="#feffb7"><span class="text">'.$row["cuvees_nom"].'</span></td>'; 

..... 

echo '</tr>'; 

} 
NOTA: en HTML :
1. il faut utiliser <tr> pour créer une ligne et <td> pour créer une colonne de <table>
2. un span ou un div doit être fermé sans chovochement d'imbrication avec des balises conteneurs

------------------------------------------------------------------
Révisez vos leçons

Posté : 23 mai 2005, 15:42
par albat
il faut écrire :
echo '<td bgcolor="#feffb7"><span class="text">'.$row["cuvees_nom"].'</td></span>';
Hum... [-X
Les <span> à l'intérieur des <td>, grand distrait !

À part ça, étant donné qu'une requête retourne son résultat ligne après ligne (= enregistrement),
je ne vois pas ce que peut signifier "un affichage en colonne".

Posté : 23 mai 2005, 15:48
par yohkun
LOL je m'excuse pour mon incompétence dans le domaine, je ne vais pas dire le contraire... Le fait que je déraille me paraissant tout à fait plausible étant donné mon niveau...

Mais en fait ce que j'aurais voulu c afficher les enregistrements par colonne et les champs par ligne, je sais c un peu bizarre mais bon... sa n'a pas l'air possible alors...

Merci pour ces réponses si enrichissantes...

Posté : 23 mai 2005, 15:48
par zeus
D'après ce que j'avais compris, ca serait :
1 champs par colonne !!

Au lieu d'afficher un enregistrement par ligne, ça serait un enregistrement par colonne.

A confirmer par le principal intéressé

Posté : 23 mai 2005, 15:52
par yohkun
OUI tout à fait c bien sa Zeus!!!!

Posté : 23 mai 2005, 15:52
par zeus
Bien sûr que si c'est possible !!

Même si plus compliqué et que je ne vois pas l'intérêt !!!

Tu rempli un tableau à 2 dimensions ($tab[$champ][$i]) puis quand tu construit ton tableau, tu fait 2 boucles imbriquées qui parcours par colonnes et non par lignes:
<table>
<?php
for($i; $i < nbcolonne; $i++) {
  echo "<tr>";
  for ($j ; $j < nblignes; $j++) {
    echo "<td>".$tab[$j][$i]."</td>";
  }
  echo "</tr>";
}
?>
<table>

Posté : 23 mai 2005, 15:54
par yohkun
Merci bcp...

je veux faire une galerie horizontale avec photos et description.

Posté : 23 mai 2005, 16:25
par sadeq
tu ne vas pas tout de même afficher toutes les photos de la base de données en colonnes (td) ? si t'as 100 photos tu auras 100 colonnes dans ta table.

Je te préconise de créer une table qui affiche tes photos à raison de N colonnes par ligne. Et dans chaque céllule la photo est affichée avec le détail de sa description dans une sous-table.

Pour ça t'as besoin de compter les enregistrements ($i) et de sauter à la ligne si un lot d'enregistrements multiple du nombre de colonnes à afficher est atteint.

Dans cet exemple, tes photos sont affichées par lot de 5 colonnes (5 photos par ligne) et chaque céllule photo contient à la fois la photo et son détail sous forme de sous-table:
$nbCol = 5;
$i=0;
echo "<table>";
while($row = mysql_fetch_array($result)) { 

//Saut à la ligne si $i est multiple de $nbCol
if ( $i % $nbCol == 0)  echo '<tr>'; 

echo '<td>'; //début d'une céllule contenant une sous-table
echo '<table><tr bgcolor="#feffb7"><td><span class="text">'.$row["cuvees_nom"].'</span></td></tr>'; 

echo '<tr bgcolor="#feffb7"><td><span class="text">'.$row["cuvees_annee"].'</span></td></tr>'; 

echo '<tr bgcolor="#feffb7"><td><span class="texte"></span></td></tr>'; 

echo '<tr bgcolor="#feffb7"><td><span class="text">'.$row["cuvees_commentaires"].'</span></td></tr>'; 

echo '<tr bgcolor="#feffb7"><td><span class="texte"></span></td></tr>'; 

echo '<tr height="42" rowspan="3" bgcolor="#feffb7"><td><span class="link"><a href=\'javascript:popup("cuvees_seule.php?id='. $row["id_cuvees"] .'")\'><img src="miniaturisation/'.$row["cuvees_image"].'"></span></td></tr>'; 

echo '</table></td>'; //fin de sous-table par céllule
$i++;
} 
echo '</table>';