Afficher un tableau dans une table HTML aux colonnes horizontales

Résolu
milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007
- 3 oct. 2005 à 09:57
milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007
- 4 oct. 2005 à 09:56
Voila, je voudrai afficher toutes mes données ce trouvant dans ma base mysql par colonne de 3. Le probleme etant que tous ce fait en colonne de 1 :s c'est a dire tous saffiche en dessous de l'autre...
Il maffiche aucune erreur, laffichage ce fait normalement, mais le hic c'est que ce n'est pas en colonne de trois ? mais par 1 (en dessous de lautre ) ... Merci
-----------------------------------
<?
function pc_grid_horizontal($tableau, $taille){


//calcule la largeur des <td> en pourcentage


$largeur_table = 100;
$largeur = intval($largeur_table / $taille);


//definit comment les balises <tr> ET <TD> apparaissent
//sprintf() necessite l'utilisation de %% pour % literal


$tr = '<tr align="center">';
$td = "<td width="$largeur_table%">$tr";


//boucle sur les entrées et les affiche dans les lignes de taille $taille
//$i sait quand nous avons besoin dune nouvelle ligne


$i = 0;
foreach($tableau as $e) {
$grille = sprintf($td, $e);
$i++;


//fin d'une ligne
//ferme la ligne et en commence une nouvelle


if (!($i % $taille)){
$grille .= "</tr>$tr";
}
}
//remplit les cellules restantes avec des blancs


while($i % $taille) {
$grille .= sprintf($td, '&nbsp;');
$i++;


}


//ajoute </tr> si necessaire


$fin_tr_longueur = strlen($tr) * -1;
if (substr($grille, $fin_tr_longueur) != $tr) {
$grille .='</tr>';
} else {
$grille = substr($grille, 0, $fin_tr_longueur);
}

//ferme la table
$grille .= '</table>';

return $grille;
}

// etablir la connection


include("config.php");

mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
or die("Impossible de se connecter au serveur de bases de données.");
mysql_select_db($BD_base)
or die("Impossible de se connecter à la base de données.");


$requete = "SELECT * FROM news";
$result = mysql_query($requete);

//charge les données dans le tableau depuis la base de données.
while ($enreg = mysql_fetch_array($result)) {
$news[] = $enreg['id'];
$grille = pc_grid_horizontal($news, 3);


echo'

'.$enreg["auteur"].'



'.$enreg["titre"].'



['.$enreg[ ]&nbsp;';


}


?>


Merci a vous

12 réponses

milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

3 oct. 2005 à 12:37
oh oh oh... ténerve pas ;) loooool
de toute maniere j'ai réécris ca ! et c'est tjs le meme resultat !
il affiche : et ensuite il va a la ligne etc.... et pas a coté de l'autre !
il y a 4 resultats qui saffichent au total depuis la base ! puisque il y a 4 news entrées...
jai testé avec 6 news et 8 news ! tjs en dessous de l'autre...
3
milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

4 oct. 2005 à 09:56
Apres reflexion hier ! j'ai enfin trouvé reponse : Pour les interessés, jai mi ma requete SQL et jai ajouter ceci :

<?include("config.php");


@mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
or die("Impossible de se connecter au serveur de bases de données.");
@mysql_select_db($BD_base)
or die("Impossible de se connecter à la base de données.");
$requete = "SELECT * FROM news";
$result = mysql_query($requete);
echo'';
$i=0;
$nb_lignes=3;
while ($enreg=mysql_fetch_array($result)){

if ($i%$nb_lignes == 0)
echo\"----
\"; // nouvelle ligne

echo\"";
?>
')"
onMouseOut="HideBulle()"><? echo'
'; ?>
<?
echo'

'.$enreg["auteur"].'

'.$enreg["fonction"].'

&nbsp;';

echo", \";
$i++;
}
echo'
';


mysql_free_result($result);


?>

c'est dix fois plus simple et ca me cassera pas les couilles !
3
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
3 oct. 2005 à 10:33
Bonjour,



Je pensai que tu trouverai la solution aprés une bonne nuit ;)

$td = "<td width="$largeur_table%">$tr";



Il faut placer le tr avant le td !!!!! Et puis si tu met un tr à chaque td, il n'y'aura jamais qu'une colone...







echo "\";

for( $i=0; $i<$nb_ligne; $i++) {

echo \"----
\";

for( $j=0; $j<$nb_col; $j++) {

echo\", \";

}

echo \"\";

}

echo "
";
0
milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

3 oct. 2005 à 10:45
Daccord je vois ce que tu veux dire... mais le hic c que je place ou ton code? ca aurai été plus simple de me faire un petit copie coller de tous mon code est reparé lerreur... parce que la franchement je vois pas.. et en effet, j'en ai marre de cacher a chaque fois ! c'est embetant ! c incroyable ! mais c comme ca ;)
je viens de remarquer aussi que meme si on enlever la partie du haut + les deux lignes en dessous du while ca fesai la meme chose...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
3 oct. 2005 à 10:52
Dis donc !

Prend la peine de relire mes deux boucles for... C'est quand même pas sorcier !!!!!!!
0
milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

3 oct. 2005 à 10:57
Avant de te répondre, j'ai pris la "Peine" de lire tes deux boucles ! je lai ai meme installé sur mon script etc... ! colonne de 1! jai fai apparaitre té variables etc..
la franchement je comprend pas c pourquoi je tai repondu ca ...
0
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
3 oct. 2005 à 11:19
function pc_grid_horizontal($tableau, $taille){
//calcule la largeur des <td> en pourcentage



$largeur_table = 100;
$largeur = intval($largeur_table / $taille);



//definit comment les balises <tr> ET <TD> apparaissent
//sprintf() necessite l'utilisation de %% pour % literal



$tr = '<tr align="center">';
$td = "<td width="$largeur_table%">";







// nombre d'élément dans ton tableau

$nb = count($tableau);

// nombre de lignes :

$nb_ligne = $nb/3;

// nombre de colone :

$nb_col = $taille;



// on part du début du tableau :

reset($tableau);



// LES DEUX BOUCLES !!!!!!!!

$grille = "\";

for( $i=0; $i<$nb_ligne; $i++) {

$grille.= \"----
\";

for( $j=0; $j<$nb_col; $j++) {

// ici : quoi on affiche dans la case du tableau

list($key,$value) = each($tableau);

$grille.= \"$value, \";

}

$grille.= \"\";

}

$grille.= "
";


// ET ALORS !!!!!!!! ?????????? !!!!!!!!! PAS TROP DUR MINCE

return $grille;



}
0
milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

3 oct. 2005 à 11:25
ha la la lala ! la prochaine fois ! je demande un congès sans solde ! appel au syndicat :( il manquerai plus que je te telephone et que tu vienne le copier et coller depuis mon editeur ! c possible ca ! bien sur c bénévole ! et si tu compte prendre le train ! les frais sont a ta charge ! hi hi hi !
mais non je rigole ;) en tous cas j'aprecie le temps que tu prend a maider !
merci beaucoup
0
milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

3 oct. 2005 à 11:27
Mais tu vois, c'est toujours pareil ! ca affiche qu'une colonne en dessous de l'autre...
0
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
3 oct. 2005 à 11:58
Ca me ferait mal !!!



Echauffe mieux ton "combo touch" : ctrl+c ctrl+v





PS: Cette ligne a changé...l'as tu re-copiée ?

$td = "<td width="$largeur_table%">";
0
milkasoprano
Messages postés
239
Date d'inscription
jeudi 21 juillet 2005
Statut
Membre
Dernière intervention
1 juillet 2007

3 oct. 2005 à 12:18
Oui ! et emme si on met celle la ou l'autre ca affiche pareil
0
J_G
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
3 oct. 2005 à 12:32
$td = "<td width="$largeur%">";



Et pas largeur_table !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0