PHP Pagination

Bonjour,
mon code m'affiche -5 a la valeur $start ... ce qui fait que mes requetes ne renvoient aucunes données ... Mon affichage est donc nul ! pouvez vous resoudre ceci sil vous plait ?
session_start();
include('bdd.php');
include ('pagination.php');
	
	$b = $_POST['thematique_projet'];	
	$_SESSION['b'] = $b;
	$k = $_SESSION['k'];
		
$entrees_par_page = 5; 
$start = ($page_courante * $entrees_par_page - $entrees_par_page);		

 
if ( ($a == 'null'))
{
	if ($b == 'null')
	{
	 $sql = "SELECT * FROM devis_table  WHERE sous_categorie = '" . $k . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page  "; 
	$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() );
	$nb_entrees = mysql_num_rows($result);
	$total_pages = ceil($nb_entrees/$entrees_par_page);

	
	}
	else
	$sql = "SELECT * FROM devis_table  WHERE thematique_projet = '" . $b . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page  "; 
	$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
$nb_entrees = mysql_num_rows($result);
$total_pages = ceil($nb_entrees/$entrees_par_page);	

	}
else
{
$sql = "SELECT * FROM devis_table  WHERE departement = '" . $a . "' AND thematique_projet = '" . $b . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page "; 
$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
$nb_entrees = mysql_num_rows($result);
$total_pages = ceil($nb_entrees/$entrees_par_page);

}
echo "$start";
echo "$entrees_par_page";
Configuration: Windows XP
Internet Explorer 6.0

10 réponses

  1. help please !
    je deteste quand ca fonctionne presque mais en fait ca fonctionne pas ... :(
    j'ai besoin d'un oeil nouveau sur mon code, mes erreurs je ne les voients plus.je passe dessus sans faire attention.

    Merci beaucoup
    1. Mince et si tu copi colle le texte de celui ci dans un bloc note ?
      1. Alors voila, j'ai donc fait deux requetes identiques sauf que pour l'une j'ai enlevé le limit ! ca me donne le bon nombre de page.
        Mon nouveau probleme (y'en a pas mal aujourd'hui) est que lorsque j'appui sur page 2 (liste.php?page=2) rien ne s'affiche
        session_start();
        include('bdd.php');
        include ('pagination.php');
        	
        	$b = $_POST['thematique_projet'];	
        	$_SESSION['b'] = $b;
        	$k = $_SESSION['k'];
        		
        $entrees_par_page = 5; 
        	
        if(!isset($_GET['page'])){
                $page_courante = 1; // si aucune page n'existe dans l'URL, on attribue 1 à la page courante
            } else {
                $page = $_GET['page'];
                if ($page<1) $page_courante=1; // on ne peut avoir de page inférieure à 1 : dans ce cas la valeur par défaut est 1
                elseif ($page>$total_pages) $page_courante=$total_pages; // on ne peut avoir de page supérieure au nombre total de pages : dans ce cas la valeur par défaut est la dernière page
                else $page_courante=$page; // sinon la page courante est celle indiquée dans l'URL
            }
        	
        	
        $start = ($page_courante * $entrees_par_page - $entrees_par_page);	
        if ( ($a == 'null'))
        {
        
        	if ($b == 'null')
        	{
        	$sql_entree = "SELECT * FROM devis_table  WHERE sous_categorie = '" . $k . "' ORDER BY '" . $a ."'  "; 
        	$result_entree = mysql_query( $sql_entree) or die( "Erreur : " . mysql_error() );
        
        	 $sql = "SELECT * FROM devis_table  WHERE sous_categorie = '" . $k . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page  "; 
        	$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() );
        	$nb_entrees = mysql_num_rows($result_entree);
        	$total_pages = ceil($nb_entrees/$entrees_par_page);
        	}
        	else
        	$sql_entree = "SELECT * FROM devis_table  WHERE thematique_projet = '" . $b . "' ORDER BY '" . $a ."'  "; 
        	$result_entree = mysql_query( $sql_entree) or die( "Erreur : " . mysql_error() ); 
        	$sql = "SELECT * FROM devis_table  WHERE thematique_projet = '" . $b . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page  "; 
        	$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
        	$nb_entrees = mysql_num_rows($result_entree);
        	$total_pages = ceil($nb_entrees/$entrees_par_page);	
        
        	}
        else
        {
        $sql_entree = "SELECT * FROM devis_table  WHERE departement = '" . $a . "' AND thematique_projet = '" . $b . "' ORDER BY '" . $a ."'  ";
        $result_entree = mysql_query( $sql_entree) or die( "Erreur : " . mysql_error() );
        $sql = "SELECT * FROM devis_table  WHERE departement = '" . $a . "' AND thematique_projet = '" . $b . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page "; 
        $result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
        $nb_entrees = mysql_num_rows($result_entree);
        $total_pages = ceil($nb_entrees/$entrees_par_page);
        
        }
        
        
        
        
        if ( $thematique_projet == 'null')
        
        {		
        echo"<b><center>Votre Recherche porte sur <br> $k / Toutes les Thematiques <br><br><br></center></b>\n";
        }
        else
        {		
        echo"<b><center>Votre Recherche porte sur <br> $k / $thematique_projet <br><br><br></center></b>\n";
        }
        
        
        
        if($result) { 
        // debut du tableau 
        echo '<form action="confirmation.php" method="post">';
         echo '<font size="2" face="Arial" >';
         
        echo '<table bgcolor="#FFFFFF" border="0" align="center">'."\n"; 
        // première ligne on affiche les titres dans 4 colonnes 
        echo '<tr>'; 
        echo '<td width="80" bgcolor="#3366ff"><b><u><font color="#FFFFFF">Devis n° :</font></u></b></td>'; 
        echo '<td bgcolor="#3366ff"><b><u><font color="#FFFFFF">Département </font></u></b></td>­'; 
        echo '<td bgcolor="#3366ff"><b><u><font color="#FFFFFF">Commentaires</font></u></b></td>'; 
        echo '<td bgcolor="#3366ff"><b><u><font color="#FFFFFF">Clics Restants</font></u></b></td>'; 
        echo '<td bgcolor="#3366ff"><b><u></u></b></td>'; 
        echo '</tr>'."\n"; 
        // lecture et affichage des résultats sur 4 colonnes, 1 résultat par ligne. 
        
        
        
        
        $i=0; 
        $timeout = 604800;
        $heure = time();
        
        
        
        
        
        while($row = mysql_fetch_array($result)) 
        { 
        	if ( ( $heure < ($row['time'] + $timeout )) || ( $row['time'] == "0" ))
        		
        		
        		if ( $row['clic'] != "0" )
        				
        		
        			{
        
        				{
        				echo '<tr>'; 
        				echo '<td width="80" bgcolor="#e8e2e2">'.$row[id].'</td>'; 
        				echo '<td bgcolor="#e8e2e2">'.$row[departement].'</td>'; 
        				echo '<td bgcolor="#e8e2e2">'.$row[commentaires].'</td>'; 
        				echo '<td bgcolor="#e8e2e2">'.$row[clic].'</td>';			
        				echo '<td><input type="checkbox" name="option'.$i.'" value="'.$row[id].'">acheter</td>';
        				echo '</tr>'; 
        				$i = $i+1; 
        				
        				
        				
        				echo '<tr>';
        				echo '<td></td>';
        				echo '<td bgcolor="#e8e2e2"><h5><i>Ajouté le :<br> </h5></i></td>';
        				echo '<td bgcolor="#e8e2e2"><h5><i>'.$row[Date].'</h5></i></td>';
        	echo '<td bgcolor="#e8e2e2"><h5><i>'.$row[objet_message2].'</h5></i></td>';
        				echo '<td></td>';
        				echo '</tr>';	
        				
        				echo '<input type="hidden" name="variable" value="'.$i.'">'; 
        				
        			
        	
        				}	
        			}
        			
        		
        } 
        
        
        echo '</table>'."\n"; 
        
        echo "<input type='submit' value='Commander Devis' /></form>"; 
        
         echo '</font>';
        // fin du tableau. 
        
        } 
        
        else 
        {
        echo 'Pas d\'enregistrements dans cette table...'; 
        }
        echo '<center>'."\n"; 
        echo pagination($total_pages,$page_courante);
        echo '</center>'."\n"; 


        Merci
        1. hum ! jai donc ici un autre probleme . je calcule le nombre de ligne de ma requete alors qu'elle est limitée a 5 lignes .
          c'est pour ca que j'obtien nombre_page = 1
          car 5/5 = 1
          que dois-je faire ?
          1. $page_courante la vau 0 ; je le voi nul par dans ton code; peut etre dans l'include?? modif: post trop tard ;)
            1. $entrees_par_page = 5; 
              	
              if(!isset($_GET['page'])){
                      $page_courante = 1; // si aucune page n'existe dans l'URL, on attribue 1 à la page courante
                  } else {
                      $page = $_GET['page'];
                      if ($page<1) $page_courante=1; // on ne peut avoir de page inférieure à 1 : dans ce cas la valeur par défaut est 1
                      elseif ($page>$total_pages) $page_courante=$total_pages; // on ne peut avoir de page supérieure au nombre total de pages : dans ce cas la valeur par défaut est la dernière page
                      else $page_courante=$page; // sinon la page courante est celle indiquée dans l'URL
                  }
              	
              	
              $start = ($page_courante * $entrees_par_page - $entrees_par_page);	
              if ( ($a == 'null'))
              {
              
              	if ($b == 'null')
              	{
              	
              
              	 $sql = "SELECT * FROM devis_table  WHERE sous_categorie = '" . $k . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page  "; 
              	$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() );
              	$nb_entrees = mysql_num_rows($result);
              	$total_pages = ceil($nb_entrees/$entrees_par_page);
              	}
              	else
              	
              	$sql = "SELECT * FROM devis_table  WHERE thematique_projet = '" . $b . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page  "; 
              	$result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
              	$nb_entrees = mysql_num_rows($result);
              	$total_pages = ceil($nb_entrees/$entrees_par_page);	
              
              	}
              else
              {
              
              $sql = "SELECT * FROM devis_table  WHERE departement = '" . $a . "' AND thematique_projet = '" . $b . "' ORDER BY '" . $a ."' LIMIT $start, $entrees_par_page "; 
              $result = mysql_query( $sql) or die( "Erreur : " . mysql_error() ); 
              $nb_entrees = mysql_num_rows($result);
              $total_pages = ceil($nb_entrees/$entrees_par_page);
              
              }
              
              echo "$start";echo "_";
              echo "$entrees_par_page";echo "_";
              echo "$total_pages";echo "_";
              echo "$page_courante";
              echo "_";
              


              je ne sais pas ou placer mon if get page !!:!
              1. Où initialises-tu $page_courante ? Si ça vaut 0, c'est que probablement l'initialisation ne se fait pas correctement.
                1. bin justement page courante ca devait etre 1 .
                  1 * 5 - 5 = 0 !!
                  je ne sais vraiment pas :(
                  1. $page_courante * $entrees_par_page - $entrees_par_page
                    0 * 5 - 5 =-5

                    alors je c pas ce que tu veux afficher comme parametre
                    0 * (5-5) =0