Problème d'affichage du résultat de ma requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'affichage du résultat de ma requête

Re: Problème d'affichage du résultat de ma requête

par banban55 » 24 avr. 2012, 13:04

oups c'est moi qui déconne effectivement.. vous avez raison ! C'était la solution. Merci beaucoup

Re: Problème d'affichage du résultat de ma requête

par moogli » 24 avr. 2012, 12:13

pfffff :mrgreen:

Re: Problème d'affichage du résultat de ma requête

par xTG » 24 avr. 2012, 10:14

Je dirai même plus :
Utilises mysql_num_rows() pour effectuer cette vérification. ;)
:langue:

Re: Problème d'affichage du résultat de ma requête

par moogli » 24 avr. 2012, 09:13

je viens de faire la modification avec un mysql_fetch_row dans ma condition. Cependant le résultat le change pas j'ai encore le même soucis.
A tu bien lu la réponse de xTG ?
Utilises mysql_num_rows() pour effectuer cette vérification. ;)
@+

Re: Problème d'affichage du résultat de ma requête

par banban55 » 24 avr. 2012, 08:15

je viens de faire la modification avec un mysql_fetch_row dans ma condition. Cependant le résultat le change pas j'ai encore le même soucis.
<?php
//connexion à la base de données
	require_once '_inc/_connexion.php';
	
	$sql_marque = "
			SELECT id_annonce, marques.id, marques.marque, modeles.modele, km_annonce, prix_annonce, date_annonce, titre_proprio, fichier_pv, id_type_annonce, type_motorisation
			FROM annonce

			JOIN marques ON marques.id = id_marque_annonce
			JOIN modeles ON modeles.id = id_modele
			JOIN photo_vehicule ON id_vehicule_pv = id_annonce
			JOIN motorisation ON motorisation_annonce = id_motorisation
			JOIN nb_proprio ON id_proprio = proprietaire_annonce
			WHERE 1=1";
	
	
	// Logo marque
	if (isset($_GET['marque'])) $sql_marque .= " AND id_marque_annonce = '".$_GET['marque']."'"; // recherche par marque ( logo de gauche )
	
	// recherche depuis le menu
	if (isset($_GET['type_annonce'])) $sql_marque .= " AND id_type_annonce = '".$_GET['type_annonce']."'"; // recherche depuis le menu ( occasion ou neuf )
	
	// Type et Marque 
	if (isset($_POST['sujet']) AND $_POST['sujet'] != 0) $sql_marque .= " AND id_marque_annonce = '".$_POST['sujet']."'"; // recherche par marque
	if (isset($_POST['type']) AND $_POST['type'] != 0) $sql_marque .= " AND id_type_annonce = '".$_POST['type']."'"; // recherche par type d'annonce
	
	// année
	if (isset($_POST['de']) AND $_POST['de'] != 0) $sql_marque .= " AND date_annonce >= '".$_POST['de']."-01-01'"; 
	if (isset($_POST['a']) AND $_POST['a'] != 0) $sql_marque .= " AND date_annonce <= '".$_POST['a']."-12-31'"; 	
	
	// km
	if (isset($_POST['de_km']) AND $_POST['de_km'] != 0) $sql_marque .= " AND km_annonce >= '".$_POST['de_km']."'"; 
	if (isset($_POST['a_km']) AND $_POST['a_km'] != 0) $sql_marque .= " AND km_annonce <= '".$_POST['a_km']."'"; 	
			
	// motorisation
	if (isset($_POST['motorisation']) AND $_POST['motorisation'] != 0) $sql_marque .= " AND motorisation_annonce = '".$_POST['motorisation']."'";

	$sql_marque .= "GROUP BY id_annonce";
	$listing_marque = mysql_query($sql_marque)or die(mysql_error($sql_marque));
dans le body de ma page
<?php 
			if (mysql_fetch_row($listing_marque) AND $listing_marque >= 1) // ligne qui pose problème !!
				{
				while ($row_marque = mysql_fetch_array($listing_marque)) // ligne qui pose problème !!
					{
				echo '<div id="affichage_fiche">';
				echo '<div id="apercu_fiche_vehicule">';
				echo '<div id="maniature_photo"><a id="fancybox" href="./photos/fullsize/'. $row_marque["fichier_pv"] .'" title="'. $row_marque["marque"] .' - '. $row_marque["modele"] .'"><img class="apercu" src="./photos/min/'. $row_marque["fichier_pv"] .'" /></a></div>';
					echo'<div id="details_vehicule">';
					echo '<p class="marque_vehicule"><a class="marque_vehicule" href="vehicule_fiche.php?id='. $row_marque["id_annonce"] .'">'. $row_marque["marque"] .' '. $row_marque["modele"] .'</a></p>';
						if ($row_marque["km_annonce"] == 0)
							{
							echo '<p class="km_vehicule">Vehicule Neuf</p>';
							}
						else
							{
							echo '<p class="km_vehicule">'. $row_marque["km_annonce"] .' kms</p>';
							}
						echo '<p class="prix_vehicule">'. $row_marque["prix_annonce"] .' €</p>';
						echo '<p class="nb_proprio">'.$row_marque['titre_proprio'].'</p>';
					echo '</div>';
				echo '</div>';
				echo '</div>';
					}
				}
			else
				{
				echo '<div id="alerte_recherche"><p class="alerte">Malheureusement, nous ne pouvons pas satisfaire votre demande. Aucun véhicule en stock pour votre recherche</p></div>';
				}
				
			?>

Re: Problème d'affichage du résultat de ma requête

par xTG » 23 avr. 2012, 20:12

Utilises mysql_num_rows() pour effectuer cette vérification. ;)

Re: Problème d'affichage du résultat de ma requête

par banban55 » 23 avr. 2012, 19:58

Merci pour ta réponse !

Si je retire le premier mysql_fetch_array je vais avoir un problème pour ma première condition qui vérifie la présence d'un enregistrement dans ma table.

Re: Problème d'affichage du résultat de ma requête

par moogli » 23 avr. 2012, 18:21

Salut,

Ton code fonctionne correctement.

Pour faire ce que tu veux vire le 1 mysql_fetch_array (celui qui est en dehors du while ) c 'est lui qui 'grille' un tuple à l'affichage.
Ou utilisé un do while plutôt qu'un while
Et vire cette hérésie de where 1=1 utilise une condition pour savoir s'il faut ou non l'ajouter.

Ajout des mysql_real_escale_string purique sécuriser ton script.


@+

Problème d'affichage du résultat de ma requête

par banban55 » 23 avr. 2012, 16:44

Bonjour,

Je suis face à un étrange problème lors de l'affichage du résultat de ma requête. Je vous explique en quelques lignes mon soucis.
Lorsque j'utilise ma requête via phpMyadmin celle-ci fonctionne bien j'ai bien les résultats qu'il faut. Par contre, sur ma page php la requête fonctionne mais quand je dois avoir 3 résultats elle m'affiche seulement 2... si je dois avoir 6 résultats elle affiche 5... il manque systématiquement 1 résultat à chaque fois.

J'ai aucun message d'erreur. Je pense que le problème vient de ma condition dans ma page ou de la mise en forme de ma boucle.

Voici mon code php
<?php
//connexion à la base de données
	require_once '_inc/_connexion.php';
	
	$sql_marque = "
			SELECT id_annonce, marques.id, marques.marque, modeles.modele, km_annonce, prix_annonce, date_annonce, titre_proprio, fichier_pv, id_type_annonce, type_motorisation
			FROM annonce

			JOIN marques ON marques.id = id_marque_annonce
			JOIN modeles ON modeles.id = id_modele
			JOIN photo_vehicule ON id_vehicule_pv = id_annonce
			JOIN motorisation ON motorisation_annonce = id_motorisation
			JOIN nb_proprio ON id_proprio = proprietaire_annonce
			WHERE 1=1";
	
	
	// Logo marque
	if (isset($_GET['marque'])) $sql_marque .= " AND id_marque_annonce = '".$_GET['marque']."'"; // recherche par marque ( logo de gauche )
	
	// recherche depuis le menu
	if (isset($_GET['type_annonce'])) $sql_marque .= " AND id_type_annonce = '".$_GET['type_annonce']."'"; // recherche depuis le menu ( occasion ou neuf )
	
	// Type et Marque 
	if (isset($_POST['sujet']) AND $_POST['sujet'] != 0) $sql_marque .= " AND id_marque_annonce = '".$_POST['sujet']."'"; // recherche par marque
	if (isset($_POST['type']) AND $_POST['type'] != 0) $sql_marque .= " AND id_type_annonce = '".$_POST['type']."'"; // recherche par type d'annonce
	
	// année
	if (isset($_POST['de']) AND $_POST['de'] != 0) $sql_marque .= " AND date_annonce >= '".$_POST['de']."-01-01'"; 
	if (isset($_POST['a']) AND $_POST['a'] != 0) $sql_marque .= " AND date_annonce <= '".$_POST['a']."-12-31'"; 	
	
	// km
	if (isset($_POST['de_km']) AND $_POST['de_km'] != 0) $sql_marque .= " AND km_annonce >= '".$_POST['de_km']."'"; 
	if (isset($_POST['a_km']) AND $_POST['a_km'] != 0) $sql_marque .= " AND km_annonce <= '".$_POST['a_km']."'"; 	
			
	// motorisation
	if (isset($_POST['motorisation']) AND $_POST['motorisation'] != 0) $sql_marque .= " AND motorisation_annonce = '".$_POST['motorisation']."'";

	$sql_marque .= "GROUP BY id_annonce";
	$listing_marque = mysql_query($sql_marque)or die(mysql_error($sql_marque));
	$row_marque = mysql_fetch_array($listing_marque);
			

?>

dans ma page
<?php 
			if ($row_marque[0] == 0) 
				{
				echo '<div id="alerte_recherche"><p class="alerte">Pas de résultat</p></div>';
				}
			else
				{
			while ($row_marque = mysql_fetch_array($listing_marque)) 
					{
				echo '<div id="affichage_fiche">';
				echo '<div id="apercu_fiche_vehicule">';
				echo '<div id="maniature_photo"><a id="fancybox" href="./photos/fullsize/'. $row_marque["fichier_pv"] .'" title="'. $row_marque["marque"] .' - '. $row_marque["modele"] .'"><img class="apercu" src="./photos/min/'. $row_marque["fichier_pv"] .'" /></a></div>';
					echo'<div id="details_vehicule">';
					echo '<p class="marque_vehicule"><a class="marque_vehicule" href="vehicule_fiche.php?id='. $row_marque["id_annonce"] .'">'. $row_marque["marque"] .' '. $row_marque["modele"] .'</a></p>';
						if ($row_marque["km_annonce"] == 0)
							{
							echo '<p class="km_vehicule">Vehicule Neuf</p>';
							}
						else
							{
							echo '<p class="km_vehicule">'. $row_marque["km_annonce"] .' kms</p>';
							}
						echo '<p class="prix_vehicule">'. $row_marque["prix_annonce"] .' €</p>';
						echo '<p class="nb_proprio">'.$row_marque['titre_proprio'].'</p>';
					echo '</div>';
				echo '</div>';
				echo '</div>';
					}
				}
			?>