IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

bug de condition dans pagination [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut bug de condition dans pagination
    Bonsoir je cherche désespérément à faire fonctionné correctement ma class de pagination.
    Le probléme avec celle-ci est que certaine condition ne sont pas remplie.
    En faites 2 bug persiste :
    1. la flèche suivant indique toujours page 2
    2. le numéro de la page courante n'est pas en surbrillance (selected)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    class magixPagination{
    		/**
    		 * @calculate page offset
    		 *
    		 * @param int $limit
    		 * @param object $page
    		 * @return int
    		 */
    	  function pageOffset($limit,$page){
    	  	//return $limit * ($page-1);
    	  	return ($page - 1) * $limit;
    	  }
    	    /**
    		 * @calculate paging information
    		 *
    		 * @access
    		 *
    		 * @param void $request
    		 *
    		 * @param int $limit
    		 *
    		 * @param object $page
    		 *
    		 * @return object
    		 *
    		**/
    	  function pagerData($request,$as,$limit,$page){
    	  	$num = '';
    	  	foreach ($request as $t) $num_pages = $t[$as];
    	  	$num_pages = ceil($num_pages/$limit);
    	  	$page = max($page, 1);
        	$page = min($page, $num_pages);
    		if($page > $limit || $page <= 0) {
    			$page = 1;
    		}
    		$offset = $page;
    		if($offset > $num_pages)
    		{
    		  $offset = $num_pages;
    		}
    	    $offset = $this->pageOffset($limit,$page);
    	    if($page != 1)
    		    {
    		        $num .= '<li><a href="'.magixHtml::getUrl().'/index.php?idnav_admin=2&amp;page='.($page - 1).'">&lt;</a></li>';
    		    }
    	    if($num_pages>1){
    			for($i=1; $i<=$num_pages; $i++){
    				if($i==$offset){
    				   $num .= '<li class="selected">'.$i.'</li>'; 
    				}else{
    				   $num .= '<li> <a href="'.magixHtml::getUrl().'/index.php?idnav_admin=2&amp;page='.$i.'">'.$i.'</a> </li>';  
    				}
    			}
    		}
    		if ($page < $num_pages)  {
    		    $num .= '<li><a href="'.magixHtml::getUrl().'/index.php?idnav_admin=2&amp;page='.($page + 1).'">&gt;</a></li>';
    		}
    		return $num;
    	  }
     
    } /*** end of class ***/
    ?>
    Je ne comprend pas trop pourquoi a vrai dire, sinon la pagination s'exécute bien

  2. #2
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $page = max($page, 1);
        	$page = min($page, $num_pages);
    		if($page > $limit || $page <= 0) {
    			$page = 1;
    		}

    Pour moi, ton bug vient de là, essaie un débuggage pas à pas ou au moins un affichage de tes variables pour avoir un suivi de leur valeur.

    Au passage, revois ton indentation, elle laisse à désirer parfois et du coup pour trouver tes bugs, c'est plus dur.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Je tente de débugger mais le résultat est pour le moins surprenant en affichant un echo sur chaque variable $num.
    Je ne sais pas comment m'y prendre pour avoir ce que je veux

  4. #4
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Rien que sur le bloc suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $page = max($page, 1);
        	$page = min($page, $num_pages);
    		if($page > $limit || $page <= 0) {
    			$page = 1;
    		}
    Tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo 'Page : '.$page.'<br>Num_Pages : '.$num_pages.'<br>Limit : '.$limit.'##########';
    $page = max($page, 1);
    echo 'Page : '.$page.'<br>Num_Pages : '.$num_pages.'<br>Limit : '.$limit.'##########';
        	$page = min($page, $num_pages);
    echo 'Page : '.$page.'<br>Num_Pages : '.$num_pages.'<br>Limit : '.$limit.'##########';
    		if($page > $limit || $page <= 0) {
    			$page = 1;
    		}
    echo 'Page : '.$page.'<br>Num_Pages : '.$num_pages.'<br>Limit : '.$limit.'##########';
    C'est un peu bourrin, mais ça te permet de savoir ce que valent tes variables et donc de faire un suivi pas à pas.
    Perso je l'appliquerais sur toutes les variables du script au fur et à mesure de leur apparition mais là la flemme de te l'écrire à cette heure

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 044
    Par défaut
    Voila le résultat :
    Page : 1
    Num_Pages : 4
    Limit : 2##########Page : 1
    Num_Pages : 4
    Limit : 2##########Page : 1
    Num_Pages : 4
    Limit : 2##########Page : 1
    Num_Pages : 4
    Limit : 2##########
    Quand je suis sur la page 1 il indique bien page 1, quand je suis sur la 2 il indique bien la deux mais une fois sur la troisième il indique la 1 pourtant les éléments sont bien ceux de la troisième ???

  6. #6
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Tu peux mettre dans l'affichage tes paramètres de fonction aussi stp?
    Et au passage, faire une copie ici des résultats pour l'exécution dans les pages 1, 2 et 3 stp?

    Au passage, rajoute un <BR> après les dièses, j'ai oublié de le faire tout à l'heure et ça améliorerait la lisibilité des éléments

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Repeater - Condition dans la structure
    Par stailer dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/04/2005, 14h54
  2. Introduire une condition dans une requete
    Par DeezerD dans le forum Langage SQL
    Réponses: 9
    Dernier message: 12/10/2004, 18h13
  3. Condition dans une requête
    Par fdloisel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/08/2004, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo