Aide classer resultat table par page

Résolu
Bonjour,

voici mon script php pour afficher des petites annonces classés mais je n'arrive pas a a mettre par exemple 5 ou 10 résultat par page

pourriez vous m'aider

merci

voici mon code en question

while($row = mysql_fetch_array($req))
{
$id=$row['id']; $typedannonce=$row['typedannonce'];
$marque=$row['marque']; $autres=$row['autres'];
$modele=$row['modele']; $prix=$row['prix'];
$negociable=$row['negociable']; $annee=$row['annee'];
$etat=$row['etat']; $carburant=$row['carburant'];
$kilometrage=$row['kilometrage']; $transmission=$row['transmission'];
$immatricule=$row['immatricule']; $climatisation=$row['climatisation'];
$audio=$row['audio']; $cylindre=$row['cylindre'];
$puissance=$row['puissance']; $consommation=$row['consommation'];
$couleurinterieure=$row['couleurinterieure']; $couleurexterieure=$row['couleurexterieure'];
$email=$row['email']; $message=$row['message']; $date=$row['date']; $image=$row['image'];

$i=1;
echo "<table align='center' width='700' border='0'>
<tr>
<td width='114'>
<center>
<a href='photos/avendrenp/".$row['image1']." ' alt='Voir image en grand'>
<img src='photos/avendrenp/".$row['image1']." ' width='75' />
</a>
</center></td>
<td width='258' height='78'>".$marque." ".$autres." ".$modele." ".$annee." ".$negociable."</td>
<td align='center' width='147'>".$prix."</td>
<td align='center' width='153'>".$date."</td>
</tr>";

}

2 réponses

  1. Voila essaye ça, je n'ai pas tester puisque je n'ai pas ta base de donnée mDr

    <?php
    /* On initialise les variables  */
    $limit=5; // Donc 5 articles par page
    // Sur quel page on est ?
    if (isset($_GET['page']))
    {
    $page = intval($_GET['page']);
    }
    else
    {
    $page=0;
    }
    // Maintenant le navigateur de pages
    // Affiche le page par page avec ses liens
    // Variable nombre d'enreg par page
    $debut=$page*$limit; // Debut est egale a page x limit donc page 2 sera egale a 10
    
    mysql_connect('localhost', 'arrrrrr', 'rrrrr'); 
    mysql_select_db("rrrrr"); 
    $sql = "SELECT * FROM avendrepubliee ORDER BY id DESC LIMIT ".$debut.", ".$limit." "; 
    $req = mysql_query($sql) or die(mysql_error()); 
    $count = mysql_result(mysql_query("SELECT count(*) FROM avendrepubliee"), 0);
    
    // Compte le nombre de champ
    $nav_page=true; // J'indique une variable vide, car si je ne le fais pas, j'ai des erreurs
    if ($page>0)
    {
    $precedent=$page-1;
    $nav_page.='<a href="rechercheravendre.php?page='.$precedent.'">PRECEDENT</a>&nbsp;';
    }
    $i=0; // On initialise $i => Page
    $j=1; // On initialise $j => La page afficher
    if($count>$limit)
    {
    	while($i<ceil($count/$limit))
    	{
    	// C'est une page avant ou après la position actuel
    	if($i!=$page){$nav_page.='<a href="rechercheravendre.php?page='.$i.'">'.$j.'</a>';}
    	// C'est la page en cours
    	else { $nav_page.="&nbsp;<b>".$j."</b>&nbsp;";}
    	$i++;$j++;
    	}
    }
    if($debut+$limit<$count)
    {
    $suivant=$page+1;
    $nav_page.='&nbsp;<a href="rechercheravendre.php?page='.$suivant.'">SUIVANT</a>';
    }
    /* Fin initialisation */
    
    echo "<table align='center' width='700' border='0'>";
    while($row = mysql_fetch_array($req)) 
    { 
    /* Tu n'est pas obligé de stocker tes tables dans des variables.
    De plus a l'avenir tu risque d'utiliser des jointure, du moins je l'espere pour toi
    et la tu risque de perdre une ligne.
    */
    /*
    $id=$row['id']; $typedannonce=$row['typedannonce']; 
    $marque=$row['marque']; $autres=$row['autres']; 
    $modele=$row['modele']; $prix=$row['prix']; 
    $negociable=$row['negociable']; $annee=$row['annee']; 
    $etat=$row['etat']; $carburant=$row['carburant']; 
    $kilometrage=$row['kilometrage']; $transmission=$row['transmission']; 
    $immatricule=$row['immatricule']; $climatisation=$row['climatisation']; 
    $audio=$row['audio']; $cylindre=$row['cylindre']; 
    $puissance=$row['puissance']; $consommation=$row['consommation']; 
    $couleurinterieure=$row['couleurinterieure']; $couleurexterieure=$row['couleurexterieure']; 
    $email=$row['email']; $message=$row['message']; $date=$row['date']; $image=$row['image']; 
    */
    echo "<tr> 
    <td width='114'> 
    <center> 
    <a href='photos/avendrenp/".$row['image1']." ' alt='Voir image en grand'> 
    <img src='photos/avendrenp/".$row['image1']." ' width='75' /> 
    </a> 
    </center></td> 
    <td width='258' height='78'>".$row['marque']." ".$row['autres']." ".$row['modele']." ".$row['annee']." ".$row['negociable']."</td> 
    <td align='center' width='147'>".$row['prix']."</td> 
    <td align='center' width='153'>".$row['date']."</td> 
    </tr>"; 
    
    } 
    echo "</table>";
    // Hop on affiche le navigateur
    echo $nav_page;
    ?>
    


    J'ai fais mon possible pour que se soit compréhensible
    Si tu as des erreurs envois les ici
    1. hop c est genial mais il y a un petit hic quand je clique sur la page 2 voila ca que ca m affiche
      Page Web introuvable
    2. sinon le script affiche bien les numetro de page et le suivant j'attend de tes nouvelles merci
  2. Dans ta requete SQL tu as LIMIT 0, 30 habituellement

    Traduit en français ça dit LIMIT A partir de, j'affiche autant de résultat

    Si tu veux afficher les 5 premiers résultat tu par de 0 et tu affiche 5 donc LIMIT 0, 5

    Tu es maintenant sur ta seconde pages :

    $ellement_par_page = 5;

    $page = 2; // Que tu récupère en GET ou POST
    /* moins 1 parce que le départ est 0 */
    $cette_page = $page - 1; // ici 1

    /* Math */
    // On calcul le départ pour afficher

    // donc 1 * 5 = 5
    $affiche_page=$cette_page * $ellement_par_page;

    // ici il démarre a 5 et affiche les 5 entrés suivante.
    $requete = "SELECT * FORM 'ma_table' LIMIT ".$affiche_page." , ".$ellement_par_page." ";
    1. dsl mais je ne cmprend pas tres bien

      merci
    2. Tu coince ou ?
      Limite toi a la première parti.
      Le script plus bas sera pour après
    3. je ne comprend pas concretement comment je doit m 'y prendre dsl c'est la premiere fois que j'ai a faire ca
    4. un requete standard est comme ca

      SELECT * FORM 'ma_table' LIMIT 0, 30

      Donc : prend tout dans ma_table en commencant a 0 et affichant 30 lignes

      Si tu avais mis :
      SELECT * FORM 'ma_table' LIMIT 0, 5

      Tu demande les 5 lignes en commancant de 0

      Ca va toujours pour toi ?
    5. oui ce bout la je le connait deja mon probleme c'est pour faire les bouton en bas