Affichage résultat requête

[Résolu]
Signaler
Messages postés
24
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
11 septembre 2005
-
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
-
Bonjour à tous,

Je cherche à afficher les résultats d'une requête sur la forme d'un tableau avec 4 résultats par lignes.

Malheureusement, ... et je commence à m'exciter , mes résultats s'affichent en VERTICAL, les uns en dessous des autres.

Voici mon code si quelqu'un peut y jeter un oeil... je lui rendrai

echo '';
echo '----
';
echo '';
if(!$result)
{
// redirection erreur
echo 'Pas d\'enregistrements
';
mysql_close();
exit;
}
while($row = mysql_fetch_array($result))
{
$round = round($row['Proximite'], 0);
// echo ''.$row['ID'].' ('.$row['INTITULE'].') et la distance = '.$round.'
';
//echo '----
';
//echo ', ';
echo '';
echo '';
echo '</td>';
echo '';
echo '----
';
echo '';
echo '';
echo ''.$row['INTITULE'].'
';
echo '('.$row['VILLE'].')
';
echo 'à '.$round.' km';
}
echo ', ';
echo '';
echo '
';

Merci d'avance.

19 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut,



D'un rapide jet d'oeil... je peux faire deux remarques :



1* C'est quoi ce pas fermé ? Si tu veux aligner au centre, fait <td align=center>...</td>;



2* Tu saute de ligne à l'intérieur de ta boucle while !!!

echo '</tr>';

echo '<tr>';

Et bah ? la balise "tr" c'est pour une nouvelle ligne... "td" pour une nouvelle colonne...

(Et il faut toujours mettre les td dans les tr)





Voili,

De là à te dépanner...



PS : Si tu pouvais me rendre mon oeil maintenant ;)
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
non, le <tr> dans le while

tr = debut de ligne

td = debut de cellule

donc tu met des cellules dans une ligne, et des lignes dans une table!




if(!$result)
{
// redirection erreur
echo 'Pas d\'enregistrements';
mysql_close();
exit;
}
while($row = mysql_fetch_array($result))
{


echo '<tr>';

$round = round($row['Proximite'], 0);
echo '<td width="118" height="64" align="center" valign="top">';
echo '[fiche.php?id='.$row['ID'].' ';
echo
']
';
echo '';
echo
''.$row['INTITULE'].'

';
echo '('.$row['VILLE'].')
';
echo 'à '.$round.' km';
echo '</td>';
echo '</tr>';


}

echo '</table>';



pour le $i++, c juste kil manque un pointvirgule a la fin !!!
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
je comprend pas trop ske tu veux, mais deja tu ferme ton </td> et
ton </tr> apres le } du while, alors kil devrait etre avant.
jette un oeil au source html dans ton navigateur (ilk te le rendra), tu verrra surement un bon paquet de <tr> et <td> mais moins de balises fermantes
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
bon je tiens a dire a J_G d'arreter de poster pendant que je le fais
paske la ca fai 2 fois que jarrive sur le message, ya rien et une fois
que je valide, je vois son message avant le miens Grrrrrr. faut que
japprenne a ecrire plus vite :)
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
;) Chuis pourtant loin d'être un Lucky-Luke du clavier ;)
Messages postés
24
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
11 septembre 2005

Merci J_G et Guillemouze pour votre aide.

Il me semble que l'erreur vienne bien des "tr" et "td" car en suivant le conseil de J_G, j'ai déjà enlevé mon saut de ligne dans ma boucle... désolé!
Cela a déjà une meilleur tête mais je n'ai toujours pas mon image avec dessous les champs INTITULE et VILLE puis à côté une nouvelle photo et de nouveaux champs... tout est en décalé... un peu comme les daltons!

... je cherche encore.

Ps : je vous rend vos yeux
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
ok je vois ton pb

tu veu un truc dans le genre



(je saute des lignes pour le decalage a cause de l'avatar :p)















-------------------------------------

| image1 | image2 | image3 | image4 |


| texte1 | texte2 | texte3 | texte4 |

-------------------------------------

-------------------------------------

| image5 | image6 | image7 | image8 |


| texte5 | texte6 | texte7 | texte8 |

-------------------------------------



dans ce cas ca serait du genre



<table>

----, image1</td>

----
texte1



</td>

<td>



image2,

----
texte2




</td>

<td>



image3,

----
texte3




</td>

<td>



image4,

----
texte4




</td>

</tr>

//2eme ligne

<tr>

<td>




image5,

----
texte5





</td>

....

</table>



a toi dadapter en ca au php de ton code, c pas dur ta juste a rajouter des <table>
Messages postés
24
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
11 septembre 2005

Merci les gars car c'était bien ça... les TD dans les TR!

Allez, j'abuse d'une autre question :

Comment limiter l'affichage à 4 réponses par lignes et les suivantes sur une autres sachant que je peux avoir 20 résultat à afficher?

Merci d'avance.
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Ouch!



Bon ce coup-ci tu as été plus rapide ...



Mais un peu plus violant !!! C'est un peu du gaspillage de table. Et
l'écologie, l'économie d'énergie, le respect des producteurs de table
???

<table>

<tr valign=middle height="..." >

<td align=center width="..." >



" width="..." height="..." />


Intituler : <?=$INTITULE?>


Ville : <?=$VILLE?>

</td>

et patati patatum!



En cas de retour à la ligne... je te conseil de controler les attributs
width et height. En % pour les balises tr, td (somme=100%!!!) et en px
pour l'img.



Pi Si C Pa Ca Fo L'Dir OCI !



A+
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
je reprend ton code ...



while($row = mysql_fetch_array($result))

$i = 0;
{


$round = round($row['Proximite'], 0);
// echo ''.$row['ID'].' ('.$row['INTITULE'].') et la distance = '.$round.'
';
//if ($i % 4 == 0 ) echo '<tr>';
//echo '<td width="118" height="64" align="center" valign="top">';
echo '';
echo '[fiche.php?id='.$row['ID'].' ';
echo
']</td>';
echo '</tr>';
echo '<tr>';
echo '<td width="118" height="44" align="center" valign="top">';
echo '';
echo
' '.$row['INTITULE'].'

';
echo '('.$row['VILLE'].')
';
echo 'à '.$round.' km';
echo '</td>';
if ($i % 4 == 0) echo '</tr>';


$i++

}
echo '</table>';



c ca ke tu veu?
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
oue c vrai c pas respectueux des producteurs de tables

mais ca depend de la facon dont il veut afficher tt son mic mac, g meme pas essayer de comprendre ce que c'est tant c le bordel





PS: pourquoi tu met des "=", ca remplace le echo ?? (<?=$VILLE?>)
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
PS[2] : tiens, g retrouver ton oeil sur le code J_G
Messages postés
24
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
11 septembre 2005

Je pense que c'est ça effectivement mais il me colle une erreur à la ligne $i++ si je copie ton exemple.

Mon code après modifs de tout à l'heure.

echo '';
echo '----
';
if(!$result)
{
// redirection erreur
echo 'Pas d\'enregistrements
';
mysql_close();
exit;
}
while($row = mysql_fetch_array($result))
{
$round = round($row['Proximite'], 0);
echo '';
echo '';
echo '
';
echo '';
echo ''.$row['INTITULE'].'
';
echo '('.$row['VILLE'].')
';
echo 'à '.$round.' km';
echo ', ';
}
echo '';
echo '
';

A te lire.
Messages postés
24
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
11 septembre 2005

Dis-donc Guillemouze... bordel... oui, mais bordel organisé!

Allez, je te l'accorde, c'est bien dans ces moments là que je vois que je suis nul en PHP!!

Heureusement que vous êtes là pour filer un coup de main à des "copier-colleurs" comme moi

Encore merci.
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Merci pour l'oeil ;)



Ouaip, le <?= c'est un "short-tag". Et ça fait pas vraiment pareil que echo (quoi que...)

C'est censé forcé le calcul de l'expression derrière et puis ça l'envoi sur la sortie standard!

Bref c'est comme un echo =$ce_truc; en fait.

Bref c'est pareil.



SAUF QUE y'a des mecs qui n'aiment pas ça. Même que c'est écrit dans la doc officielle de PHP : "C'est pas bieeeeen".



Le short-tag peut être désativé dans le php.ini (c'est comme le asp-tag
<%%> et le html-tag <script type=PHP></script>). Mais
bon, c'est tellement plus joli quand il s'agit d'incruster un tout
petit mot... en pasant...
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
pas de prob ;)



par contre si tu pouvai juste accepter la (les) reponse(s) qui te
satisfont, ca evite aux gens de venir essayer daider alors que c plus
la peine et donc perdre du temps



a+
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
PS : Je dis n'importe quoi... vous pourriez me le faire remarquer quand même !!!

<?

$a=1;

$b=1;

$c=1;

$d=1;

?>

a=<?=$a++?>


b=<? echo $b++?>


c=<? $c++;echo $c?>


d=<? $d=$d++;echo $d?>





Renvoi :

a=1


b=1


c=2


d=1



Et echo =$d; affiche un message d'erreur ;)

A méditer
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
tu dis nimporte quoi JG !!!



etrange ton code, quel est le but?!!!

sachat que $i++ renvoie la valeur de$i, puis l'incremente ensuite

il est normal que $c vale 2

par contre pour le $d, je me suis pas poser la question mais je pênse que c'est ce que j'aurai supposer

paske la ca veut dire "$d = $d puis incrementer $d" mais eske
l'incrementation du $d de droite equivaut a celle de gauche?!!! nous
avons maintenant la reponse : NON. en fait tout compte fait c'est
normal vu que le ++ s'effectue avant l'affectation. donc je pense que
ce qui se passe est :

retrourne le $d de droite, l'incremente, puis affecte le $d retourne au
debut au $d de gauche. donc d prend successivement les valeurs 1, 2, 1,
tout ca en une seule expression. C'est beau, ca m'emeut de voir ca
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
ET oui, tout a fait n'importe quoi.



Tu as raison concernant le cheminement pris par $d= $d++;



"c'est normal vu que le ++ s'effectue avant l'affectation"

Mais pourtant... Il est dit que l'opérateur ' =' est prioritaire sur l'opérateur '++'.



Ce problème tombe à tout les coups dans le programme de certification, noyé au milieu de d'une jolie fonction.



Il faut le savoir... .- (=== point-barre)