Problème avec mysql_fetch_object

Fermé
Audreypf - 31 juil. 2009 à 00:49
 Audreypf - 31 juil. 2009 à 13:19
Bonjour,

J'ai fait le tour des forums et je n'ai pas trouvé la réponse pour mon cas perso.
Voila le pb :

J'ai créé un site d'annonces et un formulaire de recherche multi-critères. les résultats s'affichent mais il me manque systématiquement le résultat de l'annonce la plus récente (jai fait un ORDER BY ... DESC).

Ainsi, quand il y a 3 résultats, le nb de résultats indiqués est bien 3 mais il n'y a que 2 lignes qui s'affichent.

Voici mon code en partie. J'espère que je n'en dit ni trop ni trop peu. Je débute. Un grand merci d'avance à tous ceux qui pourront m'aider.

----------------------------------------
$increment = 20;
function nbp($total,$increment){
$reste=$total % $increment;
$total=$total-$reste;

$j=0;
for($i=0;$i<=$total; $i=$i+$increment){
$j++;
}
if($reste==0){$j--;}
return $j;
}
-------------------------------------------
if(!empty($_POST)){
$_SESSION['tab']=$_POST;
$tab=$_POST;
extract($tab);
$page=1;
}
if($_GET['flag']==1){
extract($_SESSION['tab']);
}
-------------------------------------------
if($i>0){

$sql=mysql_query("SELECT numero FROM menage_annonces WHERE membre_dpt LIKE '%$membre_dpt%' AND categorie LIKE '%$categorie%' AND numero LIKE '%$numero%'");
$nb_de_lignes=mysql_num_rows($sql);
$nb_de_pages=nbp($nb_de_lignes, $increment);


if($_GET['page']){ //test si un lien a été cliqué
$flagpage=1; // on met le drapeau à 1
$page=$_GET['page'];
}
else{$page=1;}

$debut= ($page-1)*$increment +1;

$depart_boucle=1;

if($max_pages_vues>$nb_de_pages){$max_pages_vues=$nb_de_pages;}
$fin_boucle=$max_pages_vues;

if($flagpage==1){
$depart_boucle=$page-intval($max_pages_vues/2);
$fin_boucle=$page+intval($max_pages_vues/2);

if($fin_boucle>$nb_de_pages){
$fin_boucle=$nb_de_pages;
$depart_boucle=$fin_boucle-$max_pages_vues;
}

if($depart_boucle<=0){
$depart_boucle=1;
$fin_boucle=$depart_boucle+$max_pages_vues;
}
}
}
?>
-----------------------------------------
<?php

if($i>0){

if(!$nb_de_lignes){echo "Désolé, il n'y a aucun résultat pour ces critères.";
exit;
}
echo "Nombre de résultats : ";
echo "<font face='verdana' font color='#F00006'>$nb_de_lignes </font> <br>";
echo "Nombre de pages : ";
echo "<font face='verdana' font color='#F00006'> $nb_de_pages </font><br>";

$sql=mysql_query("SELECT * FROM menage_annonces WHERE membre_dpt LIKE '%$membre_dpt%' AND categorie LIKE '%$categorie%' AND numero LIKE '%$numero%' ORDER BY numero DESC LIMIT $debut, $increment");
?>
-----------------------------------------
<table width="537" border="1" align="center">
<tr>
<td>N°</td>
<td>titre</td>
<td>ville</td>
<td>detail</td>
>/tr>

<?php while($res=mysql_fetch_object($sql)){?>

<tr>
<td><?php echo $res->numero ?></td>
<td><?php echo $res->titre ?></td>
<td><?php echo $res->ville ?></td>
<td><?php echo $res->detail ?></td>
</tr>

<?php } ?>
</table>
</p><?php } ?>

3 réponses

M@dien Messages postés 437 Date d'inscription mercredi 29 juillet 2009 Statut Membre Dernière intervention 23 septembre 2010 74
31 juil. 2009 à 10:12
Bonjour,

essaye avec $depart_boucle=0;

L'attribut LIMIT en sql commence à 0 et non à 1.
0
Merci mais non, ca ne marche pas car ce $depart_boucle concerne le nombre de page, pas le nombre de résultat... je ne vois vraiment pas d'ou ca vient... j'ai changé les $i, les $j sans vraiment savoir ce que je faisais mais rien ne marche....
0
Ca y est, j'ai résolu le pb en enlevant le "+1" à "$debut= ($page-1)*$increment +1";
j'espère que ca n'aura pas de répercussions plus tard.
0