8795 sujets

Développement web côté serveur, CMS

Bonjour à tous,

voici mon problème. Je cherche à afficher au moyen d'une fonction, le résultat d'une requete faite sur une base de données. Ce résultat comprend des données mais aussi des images. Ma requete est correcte.

Je souhaite que l'affichage se fasse dans un tableau de 4 colonnes sur Ylignes (= dépend du nombre de résultats retournés). Dans chaque case du grand tableau vient se mettre un tableau par résultat. Je fais donc 2 boucles for + un While qui parcourt le résultat de ma requete.

Je n'arrive pas à obtenir 4 cases (<td>) par ligne (<tr>).
Soit il me met tous mes resultats sur une ligne, soit tous mes resultats dans une colonne.

Quelqu'un aurait-il une idée? Je n'arrive pas à voir ce qui ne va pas.

Merci de m'avoir lu et pour votre aide.

Voici le code qui pose problème

echo '<Table border="1">';
for ($i=1; $i<$lignes; $i++)
{
echo '<tr>';

for ($c=1; $c<$colonnes; $c++)
	{
	While($donnees=mysql_fetch_array($request))
	{
	echo '<td>';
	
		echo '<table border="1">';
			echo '<tr>';
				echo '<td>'.$donnees["commune"].'</td>';
			echo '</tr>';
			echo '<tr>';	
				echo '<td><img src='.$donnees['chemin_image'].'></td>';
			echo '</tr>';
			echo '<tr>';
				echo '<td>'.$donnees["prix"].'</td>';
			echo '</tr>';
		/* echo '</tr>'; */
		echo '</table>';
	echo '</td>';
	}
	}
	echo '</tr>';	
}
echo '</table>';


Modifié par paintbox (17 May 2010 - 23:29)
Essais avec ceci :
echo '<table border="1">';

$img_by_line = 4;
$count = 0;

while($donnees = mysql_fetch_array($request))
{
	$new_line = ($count % $img_by_line == 0) ? true : false;
	
	if( $new_line ) {
		echo '<tr>';
	}
	
	echo '<td>'; 
        echo '<table border="1">'; 
            echo '<tr>'; 
                echo '<td>'.$donnees["commune"].'</td>'; 
            echo '</tr>'; 
            echo '<tr>';     
                echo '<td><img src='.$donnees['chemin_image'].'></td>'; 
            echo '</tr>'; 
            echo '<tr>'; 
                echo '<td>'.$donnees["prix"].'</td>'; 
            echo '</tr>'; 
        /* echo '</tr>'; */ 
        echo '</table>'; 
    echo '</td>';
	
	if( $new_line ) {
		echo '</tr>';
	}
	
	$count++;
}

echo '</table>';
la structure va être très dure à aligner des tableaux dans un tableau... ça fait ce que ça veut.

l'explication de ton problème:
quand tu arrives a ta première ligne ou colonne et que tu fais un fetch dans un while.
=> il est clair que ce while va te bouffer toutes les lignes de ton résultat de requête!

il n'y a aucune raison qu'il s'arrete. ou alors il faut compléter la condition

c'est ça le problème et je pense que c'est ce que moust a essayé de gérer mieux.

je vois pas son erreur a lui et j'ai pas de base pour tester.
mais la logique du problème c'est ça ( en supposant x le nombre de colonnes comme fixe):

je crée une nouvelle ligne, je fais x fetch où je crée des colonnes
puis je referme la ligne et ré-ouvre une nouvelle ligne
etc.... jusqu'a aller au bout.

tu es obligé a mon avis de fixer quelque chose. et les colonnes c'est le plus simple.

par contre si tu n'as pas l'information sur le nombre total de résultat tu ne peux pas fixer et les colonnes et les lignes.
Bonjour,

merci pour ta réponse. J'ai trouvé une solution qui me permet d'arriver à ce que je veux obtenir. Cela fonctionne, je ne sais pas si c'est parfait.

le code est:


$colonnes=4;
$maxlignes=$TotalBiens;
$lignes=ceil($TotalBiens/4);
$y=0;	
echo '<Table class="grillebiens">';
for ($l=0; $l<$lignes; $l++)
{
echo '<tr>';
for ($c=0; $c<$colonnes; $c++)
	{
	$donnees=mysql_fetch_array($request);
		echo '<td>';
		if($y<$maxlignes)
		{
		echo '<table>';
			echo '<tr>';
				echo '<th>'.$donnees["commune"].'</th>';
			echo '</tr>';
			echo '<tr>';	
				echo '<td><img src='.$donnees['chemin_image'].'></td>';//A faire : ajouter lien vers fiche bien//
			echo '</tr>';
			echo '<tr>';
				echo '<th>'.$donnees["prix"].' Euro</th>';
			echo '</tr>'; 
		$donnees++;
		$y++;
		echo '</table>';
		}
	echo '<br />';
	echo '</td>';
	}
	echo '</tr>';
}
echo '</table>';

Salut,

je ne sais pas a qui tu dis merci. mais impec que ton problème soit solutionné.

mais n'oublies pas de rajouter à ton titre [Resolu] si tu estimes le probléme ... resolu Smiley cligne .

Pascal
Modifié par CPascal (17 May 2010 - 23:26)
Oui il y a peut-être une erreur glissée dans mon code. je n'ai pas pris le temps de tester. Enfin si ça a au moins pu te donner une piste pour arriver à ton résultat... Smiley cligne