PHP ! probleme affichage pagination

Fermé
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 - 3 juil. 2008 à 14:39
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 4 juil. 2008 à 15:18
Bonjour,
Voici mon probleme.Mon code affiche tres bien ma pagination et le resultat de ma requete (5 lignes) en page 1.
lorsque je clic sur page2 (liste.php?page=2) il ne m'affiche pas le reste de ma requete.
je fais appel a la fonction pagination dans pagination.php dont le code est ici : http://www.notoon.com/forums/showthread.php?t=153

Voici le code affichant mes requetes et ma pagination.
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();




echo '<ul>';

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 "</ul>\n";
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"; 

Si vous voyez une erreur dites le moi, svp je galère !
PS:
j'ai remplacé dans pagination.php index.php par ma page courante qui est liste.php
A voir également:

6 réponses

dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
3 juil. 2008 à 14:49
est-ce que quelqu'un peut vraiment m'aider, voici mon adresse msn pour que je puisse lui envoyer mes 2 pages afin de trouver cette erreur.ce n'est pas facil a travers cette interface ! Merci

dubuducu@hotmail.com
0
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
3 juil. 2008 à 15:18
Sil vous plait, cela vous prendra 20 secondes avec vos yeux d'expert ! je passe sur mes fautes,sans les voir !
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 juil. 2008 à 19:08
Salut,

à mon avis tu as un pb la:

$start = ($page_courante * $entrees_par_page - $entrees_par_page);

exemple 11 entrées et 5 entrées par page

page courante=1

=> 1 * 5 - 5 =0
page courante=2
=> 2 * 5 - 5 =5

or tes enregistrements commencent à zéro ou à un ?

mets des parenthèses et rajoute speut être 1

$start = (1+($page_courante * $entrees_par_page) - $entrees_par_page);
0
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
4 juil. 2008 à 13:02
Merci Alain, c'est pas bête du tout, je n'ya avait pas pensé.je teste ceci desuite et je te tiens informé !
Vraiment merci d'avoir passé du temps a cherché!

Ce forum est vraiment une mine d'or pour les débutants comme moi !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
4 juil. 2008 à 13:13
Bon resultat du tiercé : toujours le meme probleme (qui est qu'en deuxieme page ma requete ne renvoi plus de données, le tableau est vide ! ) je desespere !
meme avec :
$start = (1+($page_courante * $entrees_par_page) - $entrees_par_page);


Merci
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 juil. 2008 à 14:19
Vas voir ce tuto il me semble qu'il ne fait pas tout a fait les meêmes claculs par rapport à la page courante

http://www.phpfrance.com/forums/voir_sujet-8874.php
0
dubuducu Messages postés 391 Date d'inscription lundi 8 novembre 2004 Statut Membre Dernière intervention 19 mai 2010 4
4 juil. 2008 à 14:54
j'ai un peu de mal a comprendre tout ce code du tuto mais effectivement le calcul n'est pas trop semblable!
en meme temps, le calcul je l'ai trouvé sur un article qui disait que cela fonctionnait !
j'invente rien moi, j'essaye de comprendre et d'evoluer !

donc la je teste tout depuis deux jours, j'en peut plus !!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 juil. 2008 à 15:18
Je n'ai pas la BDD donc je ne peux pas tester ton code;

mets des { }
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
}


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
}
    }


ensuite tu utilises dans les lignes ci dessus la variable $total_pages

alors que cette dernière est calculée et intialisée plus bas dans le script, c'est pas bon

Je ne pense pas que ce script fonctionne tel quel ou alors il nous manque le code de pagination.php
0