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

PHP & Base de données Discussion :

affichage page par page [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Par défaut affichage page par page
    Bonjour a tous,

    Voici mon problème je souhaite faire un affichage page par page seulement il apparait qu'une variable ou deux (voir trois ...) ne s'envoie pas sur la page suivante par conséquent ma barre de navigation n'apparait plus et d'apres moi ça viendrait d'une des ces variables :

    // on calcul le numéro de la page active
    $page_active = floor(($debut/$nb_affichage_par_page)+1);
    // on calcul le nombre de pages total que va prendre notre affichage
    $nb_pages_total = ceil($nb_total/$nb_affichage_par_page);

    je précise que la code n'est pas de moi (c'est surement pour ça que j'ai du mal d'ailleurs)

    voici la fonction qui crée la barre :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    <?php
    //BARRE DE NAVIGATION
     function barre_navigation ($nb_total, $nb_affichage_par_page, $debut, $nb_liens_dans_la_barre) 
     { 
       $barre = ''; 
     
       // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT 
      if ($_SERVER['QUERY_STRING'] == "") { 
      $query = $_SERVER['PHP_SELF'].'?debut='; 
      } 
          else { 
             $tableau = explode ("debut=", $_SERVER['QUERY_STRING']); 
             $nb_element = count ($tableau); 
             if ($nb_element == 1) { 
                $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut='; 
             } 
             else { 
                if ($tableau[0] == "") { 
                   $query = $_SERVER['PHP_SELF'].'?debut='; 
                } 
               else { 
                   $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut='; 
                } 
             } 
          } 
     
          // on calcul le numéro de la page active 
          $page_active = floor(($debut/$nb_affichage_par_page)+1); 
          // on calcul le nombre de pages total que va prendre notre affichage 
          $nb_pages_total = ceil($nb_total/$nb_affichage_par_page); 
     
          // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin) 
          // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11 
          if ($nb_liens_dans_la_barre%2==0) { 
             $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1; 
             $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2); 
          } 
         else { 
             $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2)); 
             $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2)); 
          } 
     
          if ($cpt_deb1 <= 1) { 
             $cpt_deb = 1; 
             $cpt_fin = $nb_liens_dans_la_barre; 
          } 
          elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) { 
             $cpt_deb = $cpt_deb1; 
             $cpt_fin = $cpt_fin1; 
          } 
          else { 
             $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1; 
             $cpt_fin = $nb_pages_total; 
          } 
     
          if ($nb_pages_total <= $nb_liens_dans_la_barre) { 
            $cpt_deb=1; 
             $cpt_fin=$nb_pages_total; 
          } 
     
          // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page 
          if ($cpt_deb != 1) { 
             $cible = $query.(0); 
            $lien = '<A HREF="'.$cible.'">&lt;&lt;</A>&nbsp;&nbsp;'; 
          } 
          else { 
            $lien=''; 
          } 
          $barre .= $lien; 
     
        // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active 
          for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) { 
            if ($cpt == $page_active) { 
                if ($cpt == $nb_pages_total) { 
                  $barre .= $cpt; 
               } 
                else { 
                   $barre .= $cpt.'&nbsp;-&nbsp;'; 
               } 
             } 
             else { 
               if ($cpt == $cpt_fin) { 
                   $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); 
                   $barre .= "'>".$cpt."</A>"; 
                } 
                else { 
     
                 $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page); 
                   $barre .= "'>".$cpt."</A>&nbsp;-&nbsp;"; 
               } 
            } 
         } 
     
         $fin = ($nb_total - ($nb_total % $nb_affichage_par_page)); 
         if (($nb_total % $nb_affichage_par_page) == 0) { 
             $fin = $fin - $nb_affichage_par_page; 
        } 
     
            // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation 
         if ($cpt_fin != $nb_pages_total) { 
            $cible = $query.$fin; 
            $lien = '&nbsp;&nbsp;<A HREF="'.$cible.'">&gt;&gt;</A>'; 
         } 
         else { 
            $lien=''; 
        } 
         $barre .= $lien; 
     
         return $barre;   
      } 
    ?>
    et la partie de la deuxième page ou j'utilise la barre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    	print"<br /><a href=\"javascript:void(0);\" onclick=\"validAction('Delete this banner?','".$_SERVER["PHP_SELF"]."?delete_baId=".$row["baId"]."&delete_baName=".$row["baName"]."');\">delete banner</a><br />";
    	$tmp=explode("x",$row["baImgSize"]);
    	print"<textarea rows=\"5\" style=\"padding:5px;margin-top:5px;width:620px;background-color:#FEFAEE;border:1px solid #EBE4DA;\">&lt;a href=&quot;".$linking_code."&quot; target=&quot;_blank&quot;&gt;
    &lt;img src=&quot;http://".$SubwwwContent.".virtuagirlhd.com/customdata/banner/".$row["baName"]."&quot; width=&quot;".$tmp[0]."&quot; height=&quot;".$tmp[1]."&quot; border=&quot;0&quot; /&gt;
    &lt;/a&gt;</textarea><br /><br /><br />";
    }
     
    print $nb_total." ".$nb_affichage_par_page." ".$GET_['debut']." ".$page_active."<br>";
     echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 3).'</span>';  
    ?>
    et éventuellement si cela vous est utile les requêtes faite sur la base pour l'affichage :

    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
    $query1="SELECT COUNT(*) FROM Banner WHERE bausId='0'";
    $query="SELECT * FROM Banner WHERE bausId='0'";
    if(!isset($moId))
    	$moId="0";
    if($moId=="-1")
    {
    	$query1.=" AND bamoId!='0'";
    	$query.=" AND bamoId!='0'";
    }
    	else if($moId!="0")
    {
    	$query1.=" AND bamoId='".$moId."'";
    	$query.=" AND bamoId='".$moId."'";
    }
    $query1.=" ORDER BY baId DESC LIMIT ".$_GET['debut'].",".$nb_affichage_par_page."";
    $query.=" ORDER BY baId DESC LIMIT ".$_GET['debut'].",".$nb_affichage_par_page."";
    $req1=Db_Query($query1,$db);
    $req=Db_Query($query,$db);
    voila tout j'espère que vous pourrez m'aider parce que la pour le coup je suis vraiment bloqué

    merci d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Bonjour

    Vu la tête que fait ton code une fois en couleur, je te dirai qu'il y a un souci au niveau des quotes de ton 2e print de la page d'affichage... Essayes déjà ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print '<textarea rows="5" style="padding:5px;margin-top:5px;width:620px;background-color:#FEFAEE;border:1px solid #EBE4DA;">&lt;a href="'.$linking_code.'" target="_blank"&gt;
    &lt;img src="http://'.$SubwwwContent.'.virtuagirlhd.com/customdata/banner/'.$row["baName"].'" width="'.$tmp[0].'" height="'.$tmp[1].'" border="0" /&gt;
    &lt;/a&gt;</textarea><br /><br /><br />';
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Par défaut
    Bon bah apparement ce ne serait pas ça puisque je n'ai aucun changement ... ou alors j'arrive pas a syntaxer correctement (ce qui est possible)

    Par contre ce que je sais c'est que lorsque je fais mon test pour savoir si sur chaque page j'ai bien tout mes variables il s'avère que sur la 1ere page j'ai 2 variable d'affichées sur 4 et des que je change de page j'en est plus qu'une

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print $nb_total." ".$nb_affichage_par_page." ".$GET_['debut']." ".$page_active."<br>";
    a ce niveau j'ai pour la 1ere page => 413 et 20 (exactement ce qu'il faut) mais j'ai n'ai pas le debut et la page active (pourtant il semblerait qu'il les trouvent)

    arrivé sur la deuxième page j'ai n'ai plus que => 20 le nombre total a disparu (en plus des 2 autres)

    ce qui me fait penser que le soucis est lié au nombre total néanmoins pas moyen de comprendre pourquoi il ne passe pas sur l'autre page.

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Par défaut
    bon bah j'ai trouvé j'avais juste buggé une requête merci a tous et a bientôt !

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

Discussions similaires

  1. Affichage ipconfig /displaydns page par page? windows7
    Par destructive.flame dans le forum Windows
    Réponses: 1
    Dernier message: 28/02/2014, 08h00
  2. [MySQL] Affichage du résultat page par page (pagination)
    Par marcito dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/07/2007, 14h53
  3. [MySQL] Affichage page par page et requêtes du type $sql .=
    Par carelha dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/04/2006, 17h12
  4. [Tableaux] PB liens apres affichage page par page
    Par x2thez dans le forum Langage
    Réponses: 16
    Dernier message: 15/03/2006, 16h58
  5. [MySQL] afficher plusieurs enregistrements par page par page à la volée
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2006, 12h22

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