PHP Demande Aide personalisée

dubuducu Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   -  
dubuducu Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je galère actuellement depuis pas mal de temps sur un script de pagination me permettant d'afficher un certain nombre d'entrées par page.Le problème est le meme depuis le début, les resultats sont bien affichés en premiere page mais en page2 page3 cela me met n'importe quoi!

Si vous avez un peu de temps a passer sur mon code, je vous donne mon adresse msn afin de vous passer les 2 pages car je pense que les exposer sur ce post serait un peu lourd.Dites moi je suis devant l'ordi toute la journée !

dubuducu@hotmail.com

Merci !
A voir également:

1 réponse

dubuducu Messages postés 391 Date d'inscription   Statut Membre Dernière intervention   4
 
Bdd
CREATE TABLE `devis_table` (
  `id` int(11) NOT NULL auto_increment,
  `objet_message` varchar(255) NOT NULL default '',
  `nom` varchar(155) NOT NULL default '',
  `email` varchar(250) NOT NULL default '',
  `telephone` varchar(155) NOT NULL default '',
  `adresse` varchar(250) NOT NULL default '',
  `ville` varchar(155) NOT NULL default '',
  `departement` varchar(155) NOT NULL default '',
  `thematique_projet` varchar(155) NOT NULL default '',
  `date_projet` varchar(155) NOT NULL default '',
  `type_client` varchar(155) NOT NULL default '',
  `commentaires` text NOT NULL,
  `time` int(14) default NULL,
  `Date` date NOT NULL default '0000-00-00',
  `categorie` varchar(255) NOT NULL default '',
  `sous_categorie` varchar(255) NOT NULL default '',
  `clic` int(5) NOT NULL default '0',
  `objet_message2` varchar(155) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=551 ;


pagination.php
<?php

include('bdd.php');
require_once('config.php');
function pagination($total,$courante)
{
    /* on définit quelques variables dont on aura besoin */
    $prec = $courante - 1; // numéro de la page précédente
    $suiv = $courante + 1; // numéro de la page suivante
    $avder = $total - 1; // avant dernière page
    $adjacentes = 3; // nombre de pages à afficher de chaque côté de la page courante


    /*
    On commence la pagination que l'on stocke dans la variable à retourner
    pagination() pourra ainsi être appelée plusieurs fois, en haut et en bas d'une page par exemple
    */

    $pagination = ""; // s'il n'ya pas au moins deux pages, on n'affiche rien

    if($total > 1) // il y a au moins deux pages
    {
        // on commence par stocker dans $pagination le <div> d'ouverture
        $pagination .= "<div class=\"pagination\">\n";


        // on affiche d'abord le bouton précédent
        if ($courante == 2) // si on est sur la page 2, le bouton précédent renvoit sur la page initiale, il est inutile de mettre ?page=1 sinon on se retrouve avec un duplicate content
            $pagination.= "<a href=\"liste.php?total_pages=$total\">« préc</a>";
        elseif ($courante > 2) // si la page actuelle est supérieure à 2 le bouton précédent renvoit sur la page dont le numéro est immédiatement inférieur
            $pagination.= "<a href=\"liste.php?page=$prec&total_pages=$total\">« préc</a>";
        else // sinon on est sur la page 1 : on désactive le bouton précédent. on est nécessairement sur la page 1 car on a fait le traitement des pages dans liste.php, pas besoin de mettre elseif ($courante==1)
            $pagination.= "<span class=\"desactive\">« préc</span>";


        /**
        On affiche maintenant les pages. On cherchera à afficher au maximum 11 numéros de page en général, et 12 dans le cas 1 où il n'y a pas de troncature :
        - dans un 1er cas, il n'y a pas assez de pages  pour "tronquer la pagination" : on affiche toutes les pages
        - dans le 2ème cas, il y a trop de pages : la troncature s'effectue selon la page sur laquelle on est positionnée
        */

        // CAS 1 : il n'y a pas assez de pages pour tronquer, on les affiche toutes (voir figure 1)
        if ($total < 7 + ($adjacentes * 2))
        {
            /*
            on AJOUTE la page 1. On la traite séparément pour avoir liste.php au lieu de liste.php?page=1 et ainsi éviter le duplicate content
            cette ligne équivaut à :
            if ($courante == 1)
                $pagination.= "<span class=\"courante\">1</span>";
            else
                $pagination.= "<a href=\"liste.php\">1</a>";
             */
            $pagination.= ($courante == 1) ? "<span class=\"courante\">1</span>" : "<a href=\"liste.php?total_pages=$total\">1</a>";

            // pour les pages restantes on utilise une simple boucle for
            for ($compteur = 2; $compteur <= $total; $compteur++)
            {
                if ($compteur == $courante) // on affiche la page courante différemment pour la mettre en évidence
                    $pagination.= "<span class=\"courante\">$compteur</span>";
                else
                    $pagination.= "<a href=\"liste.php?page=$compteur&total_pages=$total\">$compteur</a>";
            }
        }

        // CAS 2 : on a assez de pages pour tronquer en fonction de la page actuelle
        elseif($total > 5 + ($adjacentes * 2))
        {
            /*
            on est placé dans la partie proche des premières pages, on tronque donc la fin de la pagination.
            l'affichage sera 9 pages à gauche ... 2 pages à droite (voir figure 2)
            */
            if($courante < 1 + ($adjacentes * 2))
            {
                // on affiche la page 1 comme vu précédemment
                $pagination.= ($courante == 1) ? "<span class=\"courante\">1</span>" : "<a href=\"liste.php?total_pages=$total\">1</a>";

                // puis les huit pages suivantes
                for ($compteur = 2; $compteur < 4 + ($adjacentes * 2); $compteur++)
                {
                    if ($compteur == $courante)
                        $pagination.= "<span class=\"courante\">$compteur</span>";
                    else
                        $pagination.= "<a href=\"liste.php?page=$compteur&total_pages=$total\">$compteur</a>";
                }

                // les ... pour marquer la troncature
                $pagination.= " ... ";

                // et enfin les deux dernières pages
                $pagination.= "<a href=\"liste.php?page=$avder&total_pages=$total\">$avder</a>";
                $pagination.= "<a href=\"liste.php?page=$total&total_pages=$total\">$total</a>";
            }

            /*
            on est placé dans la partie centrale de notre pagination, on tronque donc le début et la fin de la pagination.
            l'affichage sera 2 pages à gauche ... 7 pages au centre ... 2 pages à droite (voir figure 3)
            */
            elseif($total - ($adjacentes * 2) > $courante && $courante > ($adjacentes * 2))
            {
                // on affiche les deux premières pages
                $pagination.= "<a href=\"liste.php?total_pages=$total\">1</a>";
                $pagination.= "<a href=\"liste.php?page=2&total_pages=$total\">2</a>";

                // les ... pour marquer la troncature
                $pagination.= " ... ";

                // puis sept pages : les trois précédent la page courante, la page courante, puis les trois lui succédant
                for ($compteur = $courante - $adjacentes; $compteur <= $courante + $adjacentes; $compteur++)
                {
                    if ($compteur == $courante)
                        $pagination.= "<span class=\"courante\">$compteur</span>";
                    else
                        
						$pagination.= "<a href=\"liste.php?page=$compteur&total_pages=$total\">$compteur</a>";
                }

                // les ... pour marquer la troncature
                $pagination.= " ... ";

                // et enfin les deux dernière spages
                $pagination.= "<a href=\"liste.php?page=$avder&total_pages=$total\">$avder</a>";
                $pagination.= "<a href=\"liste.php?page=$total&total_pages=$total\">$total</a>";
            }

            /*
            sinon on est placé dans la partie de droite, on tronque donc le début de la pagination.
            l'affichage sera 2 pages à gauche ... 9 pages à droite (voir figure 4)
            */
            else
            {
                // on affiche les deux premières pages
                $pagination.= "<a href=\"liste.php?total_pages=$total\">1</a>";
                $pagination.= "<a href=\"liste.php?page=2&total_pages=$total\">2</a>";

                // les ... pour marquer la troncature
                $pagination.= " ... ";

                // et enfin les neuf dernières pages
                for ($compteur = $total - (2 + ($adjacentes * 2)); $compteur <= $total; $compteur++)
                {
                    if ($compteur == $courante)
                        $pagination.= "<span class=\"courante\">$compteur</span>";
                    else
                        $pagination.= "<a href=\"liste.php?page=$compteur&total_pages=$total\">$compteur</a>";
                }
            }
        }

        // pour finir on affiche le bouton suivant
        if ($courante < $compteur - 1)
            $pagination.= "<a href=\"liste.php?page=$suiv&total_pages=$total\">suiv »</a>\n";
        else
            $pagination.= "<span class=\"desactive\">suiv »</span>\n";
        $pagination.= "</div>\n";
    }

    // et on retourne $pagination au programme appelant la fonction
    return ($pagination);
}
?> 


liste.php
<?php
session_start();
include('bdd.php');
include ('pagination.php');
	
	$b = $_POST['thematique_projet'];	
	$_SESSION['b'] = $b;
	$k = $_SESSION['k'];
	
	if(isset($_GET['total_pages']))
		{
        $total_pages = $_GET['total_pages'];
		} 
	
echo $_GET["total_pages"];

	
$entrees_par_page = 2; 
	
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 ( ($a == 'null'))
{

	if ($b == 'null')
	{
		
	$start = ($page_courante * $entrees_par_page - $entrees_par_page);
	
	$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{

$start = ($page_courante * $entrees_par_page - $entrees_par_page);
	
	$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
{	
$start = ($page_courante * $entrees_par_page - $entrees_par_page);
	
$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"; 
?> 


Voila , le probleme est par ici ! Merci , je reste a votre disposition pour de plus amples informations :)
0