28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous,

Débutant en PHP, j'aimerai savoir comment faire pour générer automatiquement plusieurs données depuis une BDD sur une même ligne d'une table.

Je m'explique:

Je veux mettre pouvoir aligner sur une même ligne 5 bonhommes constitutés chacuns de 3 éléments distincts. J'ai donc dans ma table une ligne avec la tête, une avec le corps et une avec le nom vous l'aurez compris Smiley lol
Chacun des différents éléments et des relations entre eux sont défini dans une BDD.

Le code auquel je voudrais parvenir en HMTL est le suivant (les noms et les images sont les mêmes pour plus de simplicité) : http://takeaphoto.eu/wof/table.html

<center><table width="800px" cellspacing="0px" cellpadding="0px">
<tr>
<td><center><img src="http://takeaphoto.eu/wof/images/head_fr.png" alt="head_fr" width="50" border="0" valign="bottom"/></center></td>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
</tr>
<tr>
<td><center><img src="/wof/images/man_green.png" alt="man_green" height="99" border="0"/></center></td>
<td><center><img src="/wof/images/man_green.png" alt="man_green" height="99" border="0"/></center></td>
<td><center><img src="/wof/images/man_green.png" alt="man_green" height="99" border="0"/></center></td>
<td><center><img src="/wof/images/man_green.png" alt="man_green" height="99" border="0"/></center></td>
<td><center><img src="/wof/images/woman_green.png" alt="man_green" height="99" border="0"/></center></td>
</tr>
<tr style="padding-top:-10px;">
<td><center><p>Bob ARTHUR</p></center></td>
<td><center><p>Bob ARTHUR</p></center></td>
<td><center><p>Bob ARTHUR</p></center></td>
<td><center><p>Bob ARTHUR</p></center></td>
<td><center><p>Bob ARTHUR</p></center></td>
</tr>
<tr>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
<td><center><img src="/wof/images/head_fr.png" alt="head_fr" width="50" border="0"/></center></td>
</tr>
<tr>
<td><center><img src="/wof/images/man_green.png" alt="man_green" height="99" border="0"/></center></td>
<td><center><img src="/wof/images/man_green.png" alt="man_green" height="99" border="0"/></center></td>
<td><center><img src="/wof/images/man_green.png" alt="man_green" height="99" border="0"/></center></td>
<td><center><img src="/wof/images/man_green.png" alt="man_green" height="99" border="0"/></center></td>
<td><center><img src="/wof/images/woman_green.png" alt="man_green" height="99" border="0"/></center></td>
</tr>
<tr style="padding-top:-10px;">
<td><center><p>Bob ARTHUR</p></center></td>
<td><center><p>Bob ARTHUR</p></center></td>
<td><center><p>Bob ARTHUR</p></center></td>
<td><center><p>Bob ARTHUR</p></center></td>
<td><center><p>Bob ARTHUR</p></center></td>
</tr>
</table></center>


Alors que quand je crée mon code en PHP, je ne suis capable que de mettre un seul bonhomme par ligne : http://takeaphoto.eu/wof/index.php

<center><table width="800px" cellspacing="0px" cellpadding="0px">
<?php
mysql_connect("XXX", "XXX", "XXX");
mysql_select_db("XXX");
$retour = mysql_query('SELECT a.id,a.first_name,a.last_name, a.id_body, a.id_flag,b.id,b.image_body,c.id,c.country,c.image_flag FROM wof_name AS a, wof_body AS b, wof_flag AS c WHERE a.id_body=b.id AND a.id_flag=c.id ORDER BY a.last_name DESC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news.
{
?>
<tr>
<td><?php echo stripslashes($donnees['image_flag']); ?></td>
</tr>
<tr>
<td><?php echo stripslashes($donnees['image_body']); ?></td>
</tr>
<tr style="padding-top:-10px;">
<td><p><?php echo stripslashes($donnees['first_name']); ?> <?php echo stripslashes($donnees['last_name']); ?><p></td>
</tr>
<?php
} // Fin de la boucle qui liste les news.
mysql_close();
?>
</table></center>


Voila je suis sûr qu'il y a une réponse très simple à cette longue explication, merci d'être indulgent avec un débutant Smiley sweatdrop

merci d'avance pour votre aide Smiley lol
Modifié par dark.tonin (08 Jul 2011 - 14:26)
Bonjour,

A chaque occurrence de ta boucle while, tu ouvre et ferme 3 balises <tr> (donc 3 lignes).

Pour afficher 4 éléments sur chaque ligne, il faudrait que tu stoque les 4 premiers résultats de ta requête mysql (par exemple dans un tableau), et que tu les affiche ensuite dans le même <tr>.

J'espère t'avoir éclaircit un peu

ps: je pense que ton message aurait plus sa place dans la section développement web..
Modifié par Romain.E (08 Jul 2011 - 16:09)
Merci pour la réponse,

Je pense que je vois ce que tu veux dire.

Après je ne suis pas sûr de savoir le coder (maudit PHP quant on est débutant Smiley sweatdrop ) mais je vais essayer.

Merci en tout cas!!!

Ps: je suis d'accord quant au fait que ce topic devrait être dans la section développement. J'ai longuement hésité. Si un modérateur passe dans le coin Smiley confused ...
Modifié par dark.tonin (13 Jul 2011 - 14:42)
Alors après moult efforts (aller sur la lune à pied aurait été plus simple pour moi Smiley sweatdrop )

J'ai réussi à obtenir cela : http://takeaphoto.eu/wof/index.php en utilisant un modulo (même si je ne suis pas sûr que ca soit la meilleure option)

<center><table width="800px" cellspacing="0px" cellpadding="0px"><tr>
<?php
mysql_connect("localhost:8889", "root", "root");
mysql_select_db("takeaphoto_eu");
$retour = mysql_query('SELECT a.id,a.first_name,a.last_name, a.id_body, a.id_flag,b.id,b.image_body,c.id,c.country,c.image_flag FROM wof_name AS a, wof_body AS b, wof_flag AS c WHERE a.id_body=b.id AND a.id_flag=c.id ORDER BY a.last_name ASC');
$i=1;

while ($donnees = mysql_fetch_array($retour)) 
{
	$flag=$donnees['image_flag'];
	$body=$donnees['image_body'];
	$first_name=$donnees['first_name'];
	$last_name=$donnees['last_name'];
?>
<td><?php echo $flag; ?></td>
<td><?php echo $body; ?></td>
<td><p><?php echo $first_name; ?><br/><?php echo $last_name; ?></p></td>

<?php 
if ($i%5 == 0) 
{ 
?> 
</tr> 
<tr> 
<?php 
} 

$i++; 
} 
mysql_close();
?> 
</tr>
</table></center>


Petit problème, ca me donne ce que je veux mais en colonne alors que moi je les voudrais en ligne.

Mais je n'arrive pas à placer mes <tr> correctement ... Un dernier petit coup de pouce serait apprécié Smiley biggrin

Merci encore

PS: définitivement, ce topic doit aller dans la section developpement ... Je réitère mon appel aux modérateurs Smiley confused
Modifié par dark.tonin (13 Jul 2011 - 14:54)