Page 1 sur 1

affichage image

Posté : 04 nov. 2006, 13:24
par gil83
Bonjour a tous
je voudrais afficher sur ma page toutes les photos de base de données contact ... ca marche mais mon tableau cree une nouvelle ligne pour chaque enregistrement.
comment faire pour avoir 3 ou 4 enregistrement par ligne???
merci d avance

voila mon code

<html>
<!-- Date de création: 01/11/2006 -->
<head>
<title></title>

</head>
<body bgcolor="#000000" text="#FFFFFF">

<H3 align="center"><font color = white>Cliquez pour afficher la fiche complete</font></h3>
<?php
$user="root";
$host="localhost";
$password="";
$database="contacts";

$connection=mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible");
$db=mysql_select_db($database,$connection) or die ("Sélection de la base de données impossible");

// selectionner toutes les photos presentes dans la table profils
$query="SELECT * FROM profils";
$result= mysql_query($query) or die ("Exécution de la sélection impossible");

//créer le tableau affichage

$compteur=1;
while ($ligne=mysql_fetch_array($result))
{extract($ligne); ?>


<table width="90%" border="0" align="center">
<tr>
<td aling="center" width=210><a href="detail.php"><img src="<?php echo $ligne['Photo']; ?>" width= 200 border=0></a></td>
</tr>
</table><hr width="90%" size="2" color="#FFFFFF" align="center"><?php
$compteur++;
}
?>

</body>
</html>

Posté : 04 nov. 2006, 16:22
par mankas
tu réflechis un peu et tu te dis que tout les 3 enregistrements tu passes une ligne dans ton tableau au lieu de passer une ligne à CHAQUE enregistrement.
$compteur=0;
?>
<table width="90%" border="0" align="center">
<tr>
<?php
$nb_ligne=mysql_num_rows($result);
while ($ligne=mysql_fetch_array($result))
{
?>
<td aling="center" width=210><a href="detail.php"><img src="<?php echo $ligne['Photo']; ?>" width= 200 border=0></a></td>
<?php
if($compteur%3==0) {
    echo "</TR>".((($nb_ligne+1)!=$compteur)?"<TR>":"");

$compteur++;
}?>

</table><hr width="90%" size="2" color="#FFFFFF" align="center"> 

Posté : 04 nov. 2006, 18:01
par gil83
merci de ton aide ...
mais j ai une erreur

Parse error: parse error in c:\program files\easyphp1-8\www\contacts\catalogue1.php on line 48


//créer le tableau affichage

$compteur=0;
while ($ligne=mysql_fetch_array($result))
{extract($ligne); ?>


<table width="90%" border="0" align="center">
<tr>
<?php
$nb_ligne=mysql_num_rows($result);
while ($ligne=mysql_fetch_array($result))
{
?>
<td aling="center" width=210><a href="detail.php"><img src="<?php echo $ligne['Photo']; ?>" width= 200 border=0></a></td>
<?php
if($compteur%3==0) {
echo "</TR>".((($nb_ligne+1)!=$compteur)?"<TR>":"");

$compteur++;
}?>

</table><hr width="90%" size="2" color="#FFFFFF" align="center">

</body>
</html>

et la ligne 48 c est ma balise de fin HTML ????????????????

Posté : 04 nov. 2006, 19:12
par polo
Bonjour, la boucle while n'est pas refermé, il manque donc une } !
Voila :D

Posté : 04 nov. 2006, 20:21
par gil83
exact
mais je dois la mettre ou mon accolade???
thanks

Posté : 04 nov. 2006, 20:25
par Cyrano
gil83, il y a des règles dans ces forums, elles s'appliquent à tous et leur lecture n'est pas optionnelle.

Lorsque tu postes, il y a dans le formulaire de saisie des boutons dédiés pour insérer du code. Tu es invité à les utiliser ainsi qu'à éditer ton message pour corriger la présentation.
J'ajoute que le multipostage est interdit, la copie est partie à la poubelle.

Merci

Posté : 05 nov. 2006, 10:00
par polo
Bonjour, on peut dire que tu ne te foule pas toi, hein?
exact
mais je dois la mettre ou mon accolade???
thanks
En suivant ton code avec la souris tu aurais pus déjà trouvé qu'il te manqué une accolade, et corriger toi même, quand tu vois quelque par un accolade comme ceci { il doit forcément en avoir une autre comme } ça pour fermer, la boucle.

Donc un peu d'effort, le tout cuit ne t'aidera pas à progresser :D
Si tu n'y arrive vraiment pas je te donnerais la solution, mais ça ne t'aura pas beaucoup aidé.

Posté : 05 nov. 2006, 17:11
par gil83
je suis desole je ne trouve pas, je m enlise de + en + et ca me prend la tete a force... rire jaune

je ne veux la solution bete, j aimerai la solution avec explication pour enfin comprendre...
et desole , je debute et c est pas evident pour moi tout cela

merci

Posté : 05 nov. 2006, 19:32
par polo
Voila , la solution, mais je t'ai déjà expliqué la manière pour savoir si un boucle est bouclé ou pas!

Bon ce n'est pas grave je recommence :D
//créer le tableau affichage

$compteur=0;
while ($ligne=mysql_fetch_array($result))
{ // début de la boucle
extract($ligne);
 ?>
<table width="90%" border="0" align="center">
<tr>
<?php
$nb_ligne=mysql_num_rows($result);
while ($ligne=mysql_fetch_array($result))
{ // début boucle 2
?>
<td aling="center" width=210><a href="detail.php"><img src="<?php echo $ligne['Photo']; ?>" width= 200 border=0></a></td>
<?php
} // fin boucle 2
if($compteur%3==0) 
{ /* début if -> accolade fonctionnant pareil qu'une boucle, pour chaque { il faut un } */
echo "</TR>".((($nb_ligne+1)!=$compteur)?"<TR>":"");

$compteur++;
} // fin du if
?>

</table>
<?php
} //fin boucle 1
?>
<hr width="90%" size="2" color="#FFFFFF" align="center">
</body>
</html>
Voila normalement ça devrais être juste, et tu n'avais pas une mais deux boucle mal fermées, ps: tu pourrais essayé de ne faire qu'un seul while

Vu que tu est débutant voici quelque liens qui te serons utile:
PHPFrance
Site du zero
PHP débutant

Voila ça devrait t'être utile :D

Posté : 05 nov. 2006, 23:03
par gil83
effectivement grace a tes commentaires c est deja un peu plus clair... donc un grand merci et aussi pour tes liens

par contre un dernier soucis mon code ne fait ce que je veux
je voulais afficher 3 photos par lignes et la elles sont toutes sur la meme ligne... grrrrrrrrr

apres j embete plus personne promis... lol

Posté : 08 nov. 2006, 17:10
par polo
bonjour,
Regarde du côté de $i++
et d'un petit if ^^
Clique ici

Le principe:
En gros, au bout de 3 photos, tu dois faire un saut de ligne (par exemple tu peut aussi travailler avec un tableau), donc dans la boucle ou tu génère les image tu insère un $i++, ce qui aura pou effet de faire +1 a la valeur de $i que tu aura préalablement déclaré CF, le lien ci dessus, juste après le { de ta boucle tu doit placer un if, qui dit si jamais $i = 3 hop je fais <br /> je remet $i à zéro (-> en faisant ceci $i = '0';) et le tour est joué :D

Voila :D

Posté : 08 nov. 2006, 18:14
par artotal
Pardon mais je ne comprend, l'utilisation du "masque" si s'en est un

Code : Tout sélectionner

if($compteur%3==0)
$compteur est à 0 ?

Posté : 08 nov. 2006, 18:36
par polo
Désolé, mais je ne vois pas le rapport :-s

Mais le code, que tu a poster, veut dire:
quand $compteur%3 est strictement égal à zéro on fait .....

Mais je ne vois pas vraiment le rapport avec ce sujet ?

Posté : 08 nov. 2006, 18:48
par artotal
ha ok, je connaissais pas :
je croyais que strictement c'était
===
aucun rapport ave ce post, c'est vrai.