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>';
}
}
?>
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]<?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);
?>[/php]
dans ma page
[php]<?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>';
}
}
?>[/php]