[php] tableaux & whiles - juste une question de mise en forme

Bonsoir,

J’ai un petit souci d’affichage avec mon while sur un script php…

pour l’instant, j’ai ça :

<table>
<?php 
while($read = mysql_fetch_array($result))
{
	echo "<tr><td height='100' border='0'><center><table><tr><td><center><a href='#' onclick=\"window.open('$read[2]','nom','toolbar=0,menubar=0,location=0,scrollbars=1,width=800,height=600')\"><img src=$read[2] width=150 border=0></a></center></td></tr></table><br /><br /><p>Réalisation de <g>$read[1]</p><i><p>Postée le $read[3]</p></i></center></td></tr>";
}
?>
</table>

Bon, j’ai quand même un peu raccourci…

ce script affiche donc les bonnes informations, sauf que mes cellules sont toutes les unes au dessus des autres… Le problème c’est que la page s’allonge vite, et je souhaiterait afficher mes infomations sur 4 colones, histoire d’alléger un peu en hauteur, et que ce soit plus faile a lire…

mais comme le nombre de cellules est affiché en fonction du while, je ne sait pas du tout comment faire pour que le script génère les lignes avec 4 colones, et le nombre de cellules toujours en fonction du nombre d’insertions dans la bdd…

en gros, voici une page html qui ressemble pas mal à ce que je voudrais avoir (le site est pris au hasard) :
http://www.easy-tuning.com/classement-idco…rsjapon-28.html

Merci d’avance…

Cordialement, ISZ.

comme ça par exemple :


$end = false;
for (;!$end;) {
?>
  <tr>
<?php
  for ( $i = 0; $i < 4 && ($read = mysql_fetch_array($result)); ++$i)  {
    ...;
  }
  $end = !$read;
?>
  </tr>
<?php
}

A tester.

Salut Insiderz.

Je te propose ça (complete la ou c’est demandé):



//Une requete SQL pour savoir combien tu va avoir de resultat a afficher
$query = mysql_query("SELECT COUNT(*) FROM `????table???` WHERE `??SI ya un where???`"); //A modifier
list($nbresult) = mysql_fetch_array($query);
$q = floor($nbresult / 4); //Division euclifienne : $q désigne le nombre de ligne de 4 resultat possibles avec $nbresult
$r = $nbresult % 4; //Si on a pas un multiple de 4, il faut gérer une nouvelle ligne de 1 2 ou 3 resultat. $r désigne les resultat restants
//

	
$debut = 0;
$buffer = "";
for($i=0;$i<$q;$i++) //Récupère dans un tableau chque série de 4 resultats
	{
	$query = mysql_query("SELECT * FROM `concoursvt` LIMIT $debut,4"); //Vérifie si la requete est bonne (le champ et un where eventuel) pour recupere les resultat (4 maxi)
	
	while($parcours = mysql_fetch_row($query))
	{
	$buffer .= "<td align=\"center\"><a href='#' onclick=\"window.open('".$read[2]."','nom','toolbar=0,menubar=0,location=0,scrollbars=1,width=800,height=600')\"><img src=".$read[2]." width=150 border=0></a><br /><p>Réalisation de <g>".$read[1]."</p><i><p>Postée le ".$read[3]."</p></i></td>";
	}

	echo "<table cellspacing=\"0\" cellpadding=\"7\" style=\"border-style:none;\">
  <tr>$buffer</tr></table><br /><br />"	

	$debut = $debut+4;
	}
	
	//On récupère les restantes si il y en a
	if($r != 0)
	{
  $combien = $debut+$r;
  $query = mysql_query("SELECT * FROM `art_collections` LIMIT $debut,$combien"); //Vérifie si la requete est bonne (le champ et un where eventuel) pour recupere les resultat. Ca doit etre la meme que precédemment (sauf limit à ne pas changer)
  while($parcours = mysql_fetch_row($query))
  {
  $buffer .= "<td align=\"center\"><a href='#' onclick=\"window.open('".$read[2]."','nom','toolbar=0,menubar=0,location=0,scrollbars=1,width=800,height=600')\"><img src=".$read[2]." width=150 border=0></a><br /><p>Réalisation de <g>".$read[1]."</p><i><p>Postée le ".$read[3]."</p></i></td>";
  }
	
  echo "<table cellspacing=\"0\" cellpadding=\"7\" style=\"border-style:none;\">
  	<tr>$buffer</tr></table><br /><br />"	
	
  }
  


Si à la place de 4 tu veux que 3 colonnes, c’est pzs difficile a changer : tu mets tout les 4 en 3 ^^

Bravo ! Tu fais une requête à chaque fois, alors que tu peux en faire qu’une seule… (ce qui revient au même au passage hein…)

En effet ta solution est meilleure, mais c’est pas la peine d’etre aussi ironique

j’ai testé tout d’abord la solution de sans-nom, ça a l’air de marcher, pour l’instant je n’ai que 3 images d’enregistrées et elles s’affichent en ligne… savoir si quand j’en aurait 5 elles s’afficheront correctement sur le tableau aussi. Je vous tiendrais au courant :wink:

De rien :slight_smile:

Tu sais, tu remplace le 4 par 2 et ça te montrera que ça marche (ou non)

c’est bon, j’ai rajouté deux images a ma base de données, et ça marche parfaitement. merci.