problème d'affichage dans une boucle

Eléphant du PHP | 70 Messages

19 mars 2012, 16:48

Bonjour à vous.

Je rencontre un problème lors de l'affichage de l'affichage du résultat de ma requête. Je vous explique en quelque mot mon soucis.
J'ai deux tables, une table annonce avec les détails de l'annonce et une table photo_vehicule qui contient toutes les photos en relation avec la l'annonce. Seulement quand je demande l'affichage de l'annonce via ma requête, elle m'affiche les autres photos dispo pour la même annonce. Ensuite je boucle simplement avec un "while" et je LIMIT à 4 enregistrements seulement.

Exemple:
le véhicule numéro 1 à 3 photos dans la table photo_vehicule -> il m'affiche donc 3 résultats avec 3 photos
le véhicule numéro 2 à 1 photo dans la table photo_vehicule -> il m'affiche bien 1 seul résultat car il y a 1 photo

aperçu
Image

ma requête en question:
SELECT DISTINCT id_annonce, marque, modele, prix_annonce, date_annonce, km_annonce, fichier_pv
FROM annonce, marques, modeles, photo_vehicule
WHERE id_type_annonce =2
AND id_marque_annonce = marques.id
AND id_modele = modeles.id
AND id_annonce = id_vehicule_pv
ORDER BY  `fichier_pv` ASC 
LIMIT 4
mon fichier php
$sql = "SELECT DISTINCT id_annonce, marque, modele, prix_annonce, date_annonce, km_annonce, fichier_pv
FROM annonce, marques, modeles, photo_vehicule
WHERE id_type_annonce =2
AND id_marque_annonce = marques.id
AND id_modele = modeles.id
AND id_annonce = id_vehicule_pv
ORDER BY  `fichier_pv` ASC 
LIMIT 4" ;

            $listing = mysql_query($sql);
			
            if (mysql_num_rows($listing))
            {
                require_once '_inc/Values.php';

                
				while ($row = mysql_fetch_array($listing))
					{
				echo '<div id="affichage_fiche_neuf">';
                echo '<table class="fiche_neuf">';
					
				   echo '<tr>';
						echo '<td class="titre_fiche_neuf" width="100%" valign="top"><a class="titre_fiche" href="vehicule.php?id='. $row["id_annonce"] .'">'. $row["marque"] .'</br>'. $row["modele"] .'</a></td>';
					echo '</tr>';
					echo '<tr>';
						echo '<td class="km_fiche_neuf" width="100%" valign="top">'. $row["km_annonce"] .' kms</td>';
					echo '</tr>';
					echo '<tr>';
						echo '<td class="prix_reel_neuf" width="100%" valign="top">'. $row["prix_annonce"] .' €</td>';
					echo '</tr>';
                    echo '<td>';
                        echo '<a rel="lightbox" href="./photos/fullsize/'. $row["fichier_pv"] .'" title="'. $row["marque"] .''. $row["modele"] .'"><img class="apercu" src="./photos/min/'. $row["fichier_pv"] .'" /></a>';
					echo '</td>';
                    echo '</tr>';
                echo '</table>';
				echo '</div>';
				}
            }

ViPHP
xTG
ViPHP | 7331 Messages

19 mars 2012, 16:55

Et c'est quoi le problème ?
Le fait que tu récupères deux autres photos alors que la première te suffit ?

Tu peux la sauvegarder dans une variable si ce n'est que ça.
$photo = null;
while( $data = mysql_fetch_array($listing) ){
  if( $photo === null )
    $photo = $data['photo'];
  echo '<img src="' . $photo . '" alt="" />';
}

Eléphant du PHP | 70 Messages

19 mars 2012, 17:02

J'aimerai simplement avoir l'affichage d'une seule photo au lieu de toutes les photos...

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

19 mars 2012, 18:46

Heu si tu relit ton 1er message tu indique la réponse => limit avec un 1 et non un 4 ;)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 70 Messages

19 mars 2012, 18:50

Heu si tu relit ton 1er message tu indique la réponse => limit avec un 1 et non un 4 ;)


@+
Oui avec le LIMIT 1 j'ai un seul résultat… mais j'ai besoin de faire apparaitre les autres résultats….

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

19 mars 2012, 19:00

Ben tu viens de dire le contraire O_o

Je crois qu'il faudrait que tu précise mieux ce que tu veux ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 70 Messages

19 mars 2012, 19:09

J'ai pour certain véhicule de la table annonce plusieurs photo


Exemple

le véhicule 1 j'ai 3 photos
Le véhicule 2 j'ai 2 photos
Le véhicule 3 j'ai 1 photo
Le véhicule 4 j'ai 10 photos

j'aimerai juste faire apparaitre les 4 premiers véhicules avec seulement une photo par véhicule( meme si pour certain il y a 3 photos ou plus…)

Petit nouveau ! | 4 Messages

19 mars 2012, 19:22

salut,
inseres-tu plusieurs fois une même annonce si elle possède plusieurs photos?? :roll:

Eléphant du PHP | 70 Messages

19 mars 2012, 19:26

non j'ai deux tables une pour l'annonce et une avec les photos. j'utilise une jointure entre id du véhicule et celui de la photo

ViPHP
ViPHP | 2577 Messages

19 mars 2012, 19:53

ajoutes un GROUP by id pour n'avoir qu'une photo.

Eventuellement, ajoute les autres colonnes (sauf photo) dans le goup by et mets un min(photo).

Eléphant du PHP | 70 Messages

19 mars 2012, 20:03

merci beaucoup ! c'est exactement la bonne solution :D

ViPHP
ViPHP | 2577 Messages

19 mars 2012, 21:57

Il m'a fallu tous les autres post pour comprendre ton problème.