boucle ligne tableau

tropik99
Invité n'ayant pas de compte PHPfrance

26 oct. 2006, 10:28

Bonjour, je voudrais réaliser la chose suivante:
après une requete, les données reçues içi des images doivent s'afficher dans un tableau cote à cote et ligne après ligne.
il faudrait que la premiere image soit d'une taille de 300px et positionné sur la première ligne du tableaux centré, et les suivantes, seraient à la suite dans la ligne en dessous, et de taille de 100px de large chacunes

pour l'instant j'ai ce code:
<?php
echo("<table>");
$nbCol = 5;

$r = mysql_query($query_RS_Artistes);
$nb = mysql_num_rows($RS_Artistes);
$nbLigne = ceil($nb/$nbCol);

for($l=0;$l<$nbLigne;$l++)
{
  echo("<tr>");
  for($c=0;$c<$nbCol;$c++)
 {
  if($ligne=mysql_fetch_array($r)) echo("<td><a href=\"fiche_oeuvre2.php?id=$ligne[id_oeuvre]\"><img src=\"$ligne[vignette_multimedia]\" width=\"300\" border=\"0\"><br></td>");
   // nomCol = nom du champs
    else echo("<td></td>");
  }
  echo("</tr>");
}
echo("</table>");
?>
merci de m'aider
Cordialement
TROPIK99

Mammouth du PHP | 1776 Messages

26 oct. 2006, 10:32

Pense déjà à mettre ton code entre balises php :wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

26 oct. 2006, 10:41

modération : en tant qu'invité, il ne peut pas le faire. Je viens de le faire pour lui.

@tropik99 : pense-y la prochaine fois ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 1776 Messages

26 oct. 2006, 10:50

modération : en tant qu'invité, il ne peut pas le faire. Je viens de le faire pour lui.

@tropik99 : pense-y la prochaine fois ;)
Il y pensera mais ne pourra pas le faire non plus ^^
C'est possible d'ouvrir cette possibilité aux invités ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 oct. 2006, 11:16

C'est la possibilité d'éditer son message qu'il n'a pas en tant qu'invité, mais il peut utiliser le tag [ php ] s'il y pense ;)

Pour en revenir à ta question, actuellement, tu rempli ton tableau ligne après ligne avec des images de 300px de large. Commence donc par changer ceci en remplaçajt le width=300 par un width=100 pour n'avoir que des vignettes de 100px de large.

Ensuite, ce qui t'interesse, c'est de récupérer la premier image et d'effectuer un traitement spécifique pour la placer dans la première ligne de ton tableau (avec une largeur de 300px)
Pour cela, il te suffit avant ta première boucle for() d'ajouter une ligne spécifique et d'utiliser le même code que dans tes autres cellules (pour afficher l'image en 300px). La seule différence serait au niveau du td ou tu ajouterais un colspan égal à ton $nbCol pour qu'elle prenne toute la largeur de la ligne et un align="center" pour que l'image soit centrée :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

26 oct. 2006, 11:41

Cela est bien ce que je veux faire, merci, :D par contre je voudrais quel'image plus grande soit centrée dans la cellule, et que les suivantes le soient aussi mais en dessous dans une autre ligne tout cela marche, mais je ne sais pas comment faire un saut de ligne !
<?php
echo("<table>");
$nbCol = 5;

$r = mysql_query($query_RS_Artistes);
$nb = mysql_num_rows($RS_Artistes);
$nbLigne = ceil($nb/$nbCol);

for($l=0;$l<$nbLigne;$l++)
{
  echo("<tr>");
  if($ligne=mysql_fetch_array($r)) echo("<td><div align=\"center\"><a href=\"fiche_oeuvre2.php?id=$ligne[id_oeuvre]\"><img src=\"$ligne[vignette_multimedia]\" width=\"300\" border=\"0\"></div></td>");
  for($c=0;$c<$nbCol;$c++)
  {
  if($ligne=mysql_fetch_array($r)) echo("<td><a href=\"fiche_oeuvre2.php?id=$ligne[id_oeuvre]\"><img src=\"$ligne[vignette_multimedia]\" width=\"100\" border=\"0\"><br></td>");
   // nomCol = nom du champs
    else echo("<td></td>");
  }
  echo("</tr>");
}
echo("</table>");
?>
merci beaucoup de ton aide
TROPIK99

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 oct. 2006, 11:53

Pour un retour à la ligne ce serait un <br>, mais ce que je te conseil c'est de lui donner toute une ligne <tr></tr> en jouant sur la taille de la cellule :)
for($l=0;$l<$nbLigne;$l++) 
{ 
// affichage de la première illustration en 300px dans une ligne
// potentiellement à mettre avant le for(), ca dépend de ce que tu veux faire :)
if($ligne=mysql_fetch_array($r)) {
  echo "<tr>"; 
  echo "<td colspan=\"$nbCol\">"; // le colspan te permet d'étendre la cellule sur plusieurs colonnes
  echo "<div align=\"center\"><a href=\"fiche_oeuvre2.php?id=$ligne[id_oeuvre]\"><img src=\"$ligne[vignette_multimedia]\" width=\"300\" border=\"0\"></div>";
  echo "</td>"; 
  echo "</tr>"; 
}

// le reste ne change pas
echo("<tr>");
for($c=0;$c<$nbCol;$c++) { 
  ...
} 
echo("</tr>"); 
} 
J'en ai profité pour virer les parenthèses de tes echo, elles ne sont pas nécessaire, donc pas la peine de surcharger le code ;)

Ps : comme dit plus haut, pense à utiliser les balises [ php ] quand tu postes du code, c'est 'achement plus lisible, et du coup 'achement plus facile pour t'aider à corriger :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

26 oct. 2006, 12:39

comment et ou se mettent-elles ces balises
merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 oct. 2006, 13:05

Ben je t'ai donné un bel exemple avec les echo "<tr>" et "</tr>" et le "<td colspan='..'>" pour mettre ta photo sur une nouvelle ligne :cry:
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

26 oct. 2006, 13:52

Non non, je te remercie pour tous tes conseils, ils m'ont servis admirablement, je voulais juste te parler des balises
 qu'ils faut placer dans le post pour que vous puissiez voir le code php correctement !

Encore merci pour ton aide !
tropik99

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 oct. 2006, 13:58

Arf oki :)

Les balises [ php ] [ /php] se placent dans ton message autour de ton code php : tu peux aussi surligner avec ta souris la partie code de ton message et de cliquer sur le bouton PHP juste au dessus du champ de saisie (comme si tu voulais le mettre en gras ou en italique, y un bouton pour le mettre en php ;)) pour qu'il t'ajoute directement les balises là ou il faut

Ca permet d'avoir le code en couleur et formaté correctement, ce qui est beaucoup plus lisible :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 4 Messages

26 oct. 2006, 14:41

Voiçi le code terminé !
<?php
//Premier tableaux
echo "<table width=\"955\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
$nbCol = 6;

$r = mysql_query($query_RS_Artistes);
$nb = mysql_num_rows($RS_Artistes);
$nbLigne = ceil($nb/$nbCol);
//1ère ligne du tableau centré avec 1 seule image et de taille 180px
	echo"<tr>";
 if($ligne=mysql_fetch_array($r)) echo"<td width=\"955\"><div align=\"center\"><a href=\"fiche_oeuvre2.php?id=$ligne[id_oeuvre]\"><img src=\"$ligne[vignette_multimedia]\" width=\"180\" border=\"0\"></div></td>";
	echo"</tr>";
	echo"</table>";
// un espace entre les 2 tableaux
		echo"<br><br><br>";
// second tableaux
	echo"<table width=\"760\" background=\"images/page/olds/fond-inner-container.gif\" align=\"center\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
for($l=0;$l<$nbLigne;$l++)
{
//2ème ligne du tableau centré avec les images et de taille 90px 
  echo"<tr>";
  for($c=0;$c<$nbCol;$c++)
    {
  if($ligne=mysql_fetch_array($r)) echo"<td><div align=\"center\"><a href=\"fiche_oeuvre2.php?id=$ligne[id_oeuvre]\"><img src=\"$ligne[vignette_multimedia]\" width=\"90\" border=\"0\"></div></td>";
  else echo"<td></td>";
  }
  echo"</tr>";
}
echo"</table>";
echo"<br>";
?>
si cela peut aussi servir à d'autres !