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 :

Pagination avec php 7


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Pagination avec php 7
    Bonjour,

    J'ai 59 ans et je gère un site consacré aux victimes de guerre belges de 1914-1918 et 1940-1945. J'ai créé ce site il y a une dizaine d'années et à l'époque, quand j'avais besoin d'un script php, je parcourais le web à la recherche d'un code similaire que j'adaptais à mes besoins (je précise que je n'ai pas étudié l'informatique et j'ai donc estimé qu'il était un peu tard pour m'y mettre, d'autant plus que je suis plutôt "littéraire" et que mon site mange déjà tout mon temps libre, voire plus...).

    Ainsi donc, quand j'ai eu besoin d'un script de pagination, j'ai adapté un script à l'époque écrit en php 5 et qui fonctionnait parfaitement. Ayant récemment changé d'hébergeur, j'ai besoin de convertir ce script en php 7. J'ai modifié ce qui était facile à modifier (par exemple, les paramètres de connexion, mysql --> mysli, etc. ). Pour le reste du script, je n'y comprends guère... Cependant, à À ce stade, tous les scripts de la page fonctionnent correctement (http://bel-memorial.org/provinces/belgium.php) sauf la pagination. Quand on clique sur "500 monuments suivants", l'appli affiche systématiquement les 500 premiers enregistrements et ne passe donc pas à la page de résultats suivante.

    Si quelqu'un pouvait m'aider à résoudre cette énigme, je lui en serais très reconnaissant.

    Danny, Arlon, Belgique


    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
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    <?php 
     
    // Pour pagination - Etape 1 - Détermination du nombre d'enregistrements maximum à afficher par page
    $limit=500;
     
    $servername = "host";
    $username = "user";
    $password = "password";
    $dbname = "db";
     
    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
     
    // Requête SQL
    $sql = 'SELECT * FROM monuments'
            . ' WHERE PAYS = "BE"'
            . ' ORDER BY CITY, ZIP, MON_USUEL ';
     
    // Pour pagination - Etape 2
    $numresults=mysqli_query($conn, $sql);
    $numrows=mysqli_num_rows($numresults);
     
    // next determine if s has been passed to script, if not use 0
      if (empty($s)) {
      $s=0;
      }
     
    // get results
      $sql .= " limit $s,$limit";
     
    // Envoi de la requête SQL
    $result = mysqli_query($conn, $sql);
     
    $a = $s + ($limit) ;
      if ($a > $numrows) { $a = $numrows ; }
      $b = $s + 1 ;
      echo "<p><b>Résultats - Resultaten: $b - $a / $numrows</b></p>";
     
    // Pour pagination - Etape 3 - Affichage des strings suivants - précédents
    $count = 1 + $s ;
     
      // next we need to do the links to other results
      if ($s>=1) { // bypass PREV link if s is 0
      $prevs=($s-$limit);
      print "&nbsp;<a href=\"$_PHP_SELF?s=$prevs&q=$var\"> 
      500 monuments précédents - vorige 500 gedenktekens</a>&nbsp&nbsp;";
      }
     
    // calculate number of pages needing links
      $pages=intval($numrows/$limit);
     
    // $pages now contains int of pages needed unless there is a remainder from division
     
      if ($numrows%$limit) {
      // has remainder so add one page
      $pages++;
      }
     
    // check to see if last page
      if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
     
      // not last page so give NEXT link
      $news=$s+$limit;
     
      echo "&nbsp;<a href=\"$_PHP_SELF?s=$news&q=$var\">500 monuments suivants - volgende 500 gedenktekens </a>";
      }
     
    //break before paging
      echo "<br /><br />";
     
    // Envoi de la requête SQL
    $result = mysqli_query($conn, $sql);
     
    // Affichage du résultat
    while ($voir = mysqli_fetch_array($result))
       { 
        // on affiche les informations de l'enregistrement en cours 
    echo"".$voir[CITY]." (".$voir[ZIP]."),   <a href=".$voir[MON_URL].">".$voir[MON_USUEL]."</a>
    <br>"; 
        } 
     
    // Pour pagination - Etape 3 - Affichage des strings suivants - précédents
    $count = 1 + $s ;
     
    //break before paging
      echo "<br />";
     
      // next we need to do the links to other results
      if ($s>=1) { // bypass PREV link if s is 0
      $prevs=($s-$limit);
      print "&nbsp;<a href=\"$_PHP_SELF?s=$prevs&q=$var\"> 
    500 monuments précédents - vorige 500 gedenktekens</a>&nbsp&nbsp;";
      }
     
    // calculate number of pages needing links
      $pages=intval($numrows/$limit);
     
    // $pages now contains int of pages needed unless there is a remainder from division
      if ($numrows%$limit) {
      // has remainder so add one page
      $pages++;
      }
     
    // check to see if last page
      if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
     
      // not last page so give NEXT link
      $news=$s+$limit;
     
      echo "&nbsp;<a href=\"$_PHP_SELF?s=$news&q=$var\">500 monuments suivants - volgende 500 gedenktekens </a>";
      }
     
    $a = $s + ($limit) ;
      if ($a > $numrows) { $a = $numrows ; }
      $b = $s + 1 ;
      echo "<p><b>Résultats - Resultaten: $b - $a / $numrows</b></p>";
     
    // Fermeture de la base MySQL
    mysqli_close(); 
    ?>

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Je n'ai pas plus regardé le code que ça mais il apparaît que le paramètre s qui est visible sur le lien de pagination n'est pas utilisé dans le script.

    C'est peut-être pas le seul problème mais c'en est un.

    Remplacer la partie en commentaire par ce qui suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
      //if (empty($s)) {
      //    $s=0;
      //}
    
      $s  = 0;
      if (isset($_GET['s']))
      {
        if (preg_match('/^[0-9]+$/',$_GET['s']) == 1)
        {
          $s=$_GET['s'];
        }
      }
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Mille fois merci !
    Bonjour,

    Ma-gni-fi-que ! Votre petite correction a résolu mon problème !

    Mille fois merci !

    Grâce à vous, ma journée sera bonne... Comme disent les Anglais: "You made my day".

    Cordialement, Danny

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

Discussions similaires

  1. Combiner PHP pagination avec Ajax ?
    Par kizery dans le forum AJAX
    Réponses: 4
    Dernier message: 02/06/2018, 07h35
  2. Pagination avec PHP et Access
    Par zouberi dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 11/05/2017, 16h08
  3. [MySQL] Système de pagination avec php/mysql
    Par carinelog dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/07/2013, 18h34
  4. Pagination avec PHP et Mysql
    Par __fabrice dans le forum Flash
    Réponses: 2
    Dernier message: 27/09/2006, 15h17
  5. Création d'utilisateur sous PostgreSQL 7.3.2 avec PHP
    Par duongkhang dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/06/2003, 14h10

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