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 :

comment gérer les page PHP [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut comment gérer les page PHP
    bonjour,
    j'ai développé un programme avec MySql, j'ai donc une sortie avec la requête "select" mais le résultat affiche une longue page html.
    J' aimerais savoir comment gérer l'affichage des pages avec un petit menu page 1, page 2, page 3, etc...
    en cherchant sur le net je me suis aperçu avec la méthode $_GET on peux renvoyer le numéro de page !
    Quelqu"un utilise un algorithme simple pour gérer les page PHP ?


    Salutations
    Philippe

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    je me suis aperçu avec la méthode $_GET on peux renvoyer le numéro de page !
    GET permet d'envoyer des données, point
    La notion de "numéro de page" n'existe pas en HTML/PHP, il faut coder le fonctionnement.

    http://antoine-herault.developpez.co...atique-en-php/

  3. #3
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    Bonjour Babotage,

    J'ai parcouru le lien que tu m'as donné mais hélas j'arrive pas a tout gérer surtout pendant une requête SELECT avec les limites minimum et maximum.
    le fameux <ORDER BY ID DESC LIMIT>, je te présente un extrait du code :

    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
    <?php
    // Connexion à la base de données
    $messagesParPage=10;
    //$premiereEntree=0;
    //$total=0;
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'toto');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    $retour_total=mysql_query('SELECT COUNT(*) AS total FROM minichat'); //Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total'];
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage;
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
    $reponse = $bdd->query('SELECT pseudo, message, DATE_FORMAT(date_message, \'%d/%m/%Y à %Hh%imin\') AS date_message_fr FROM minichat ORDER BY ID DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
     
    // Récupération des 10 derniers messages
     
    echo 'numero ocurrence de sysop : ' . $total . ' !';
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    while ($donnees = $reponse->fetch())
    {
    	echo '<p><strong>'  . htmlspecialchars($donnees['date_message_fr']).' >>  Pseudo -> '. htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
    }
    $reponse->closeCursor();
     
     
     
     
     
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }	
         else //Sinon...
         {
              echo ' <a href="minichat.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
     
    ?>
     
    header('Location: minichat_post.php');
    Dit moi quelles corrections je peus effectuer ?


    Salutations
    Philippe

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'est ce qui ne fonctionne pas avec ce code ?

  5. #5
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    la requùête SELECT order by limit ... ne s'affiche rien, je n'est pas de sortie...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Affiche ta requête pour voir ce qu'elle donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'SELECT pseudo, message, DATE_FORMAT(date_message, \'%d/%m/%Y à %Hh%imin\') AS date_message_fr FROM minichat ORDER BY ID DESC LIMIT '.$premiereEntree.', '.$messagesParPage;

  7. #7
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    voila le résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT pseudo, message, DATE_FORMAT(date_message, '%d/%m/%Y à %Hh%imin') AS date_message_fr FROM minichat ORDER BY ID DESC LIMIT -10, 10

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Déjà il te manque toute cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
    c'est pour ça que tu dois tu retrouver à -10 pages.

  9. #9
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    non la partie de code que tu m'indique est bien dans le code, regarde bien !
    c'est peut être au mauvais endroit du code !

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    ba oui tu as changé l'ordre de traitement.
    La declaration de $premiereEntree va après ce bloque.

    D'ailleurs active les erreurs PHP quand tu debugues, ton code en provoque.

  11. #11
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    D'ailleurs active les erreurs PHP quand tu debugues, ton code en provoque.
    Comment tu fait pour activer les erreurs PHP ?


    Voici mon extrait de code rectifié selon tes directives, mais sa tourne pas !

    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
    <?php
    // Connexion à la base de données
    $messagesParPage=10;
    //$premiereEntree=0;
    //$total=0;
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'toto');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
    $retour_total=mysql_query('SELECT COUNT(*) AS total FROM minichat'); //Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total'];
    $nombreDePages=ceil($total/$messagesParPage);
     
     
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage;
     
     
    $retour_messages=mysql_query('SELECT pseudo, message, DATE_FORMAT(date_message, \'%d/%m/%Y à %Hh%imin\') AS date_message_fr FROM minichat ORDER BY ID DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
     
    while($donnees_messages=mysql_fetch_assoc($retour_messages))
    {
     echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                 
                    <tr>
                        <td><strong> Date : '.(htmlspecialchars($donnees_messages['date_message_fr']).'</strong></td>
                    </tr>
                    <tr>
                         <td><strong> Ecrit par : '.(htmlspecialchars($donnees_messages['pseudo'])).'</strong></td>
                    </tr>
                    <tr>   
                       <td><strong> Message :  '.(htmlspecialchars($donnees_messages['message'])).'</strong></p></dt>
                    </tr>   
            </table><br /><br />';
    }
     
     echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }	
         else //Sinon...
         {
              echo ' <a href="minichat.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
    $reponse->closeCursor();
    ?>

  12. #12
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    bonjour a toute et a tous,
    après avoir lu ce lien https://phpdelusions.net/pdo#dml qui traite les PDO.
    mon code a changé je déactive des option MySql.
    PDO as des particularité spécifique qu'il faut aborder pour un meilleur encodage !

    J'obtiens pour l'instant une page blanche !

    Voici mon code :

    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
    <?php
    // Connexion à la base de données
    $messagesParPage=10;
    //$premiereEntree=0;
    //$total=0;
    try
    {
    	$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'toto');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
     
     
    $conn -> setAttribute ( PDO :: ATTR_EMULATE_PREPARES , false );  
    $retour_total = $pdo->prepare('SELECT COUNT(*) AS total FROM minichat') ;
    $retour_total=-> execute ([$donnees_total]);
    $total = $retour_total -> fetchAll (); 
     
     
    $nombreDePages=ceil($total/$messagesParPage);
     
     
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage;
     
     
    //$retour_messages=mysql_query('SELECT pseudo, message, DATE_FORMAT(date_message, \'%d/%m/%Y à %Hh%imin\') AS date_message_fr FROM minichat ORDER BY ID DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');
    $conn -> setAttribute ( PDO :: ATTR_EMULATE_PREPARES , false ); 
    $stmt = $pdo->prepare('SELECT pseudo, message, DATE_FORMAT(date_message, \'%d/%m/%Y à %Hh%imin\') AS date_message_fr FROM minichat ORDER BY ID DESC LIMIT ?,?');
    $stmt -> execute ([ $premiereEntree ,$retour_total  ]); 
    $data = $stmt->fetchAll();
    while ($data = $stmt->fetch()))
    {
     echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                 
                    <tr>
                        <td><strong> Date : '.(htmlspecialchars($data['date_message_fr']).'</strong></td>
                    </tr>
                    <tr>
                         <td><strong> Ecrit par : '.(htmlspecialchars($data['pseudo'])).'</strong></td>
                    </tr>
                    <tr>   
                       <td><strong> Message :  '.(htmlspecialchars($data['message'])).'</strong></p></dt>
                    </tr>   
            </table><br /><br />';
    }
     
     echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }	
         else //Sinon...
         {
              echo ' <a href="minichat.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
    $reponse->closeCursor();
    ?>

    Je préfères du code source que des explications !


    Salutations
    Philippe

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    tu as une fleche qui se ballade ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour_total=-> execute ([$donnees_total]);
    Je préfères du code source que des explications !
    Et moi je préfère manger du chocolat que de faire cuire du choux fleur !

    Sinon soit tu configures ton serveur pour afficher les erreurs, soit tu consultes ton log d'erreur PHP mais tu ne peux pas developper en aveugle.

  14. #14
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par sabotage Voir le message

    Sinon soit tu configures ton serveur pour afficher les erreurs, soit tu consultes ton log d'erreur PHP mais tu ne peux pas developper en aveugle.
    comment j'active les erreur PHP sur mon serveur Debian 8.8 et pourquoi trouver le log comme cela je ne serait plus en aveugle !
    Utilisant "Kate" comme éditeur de code PHP/MySql.

    sinon j'ai penser a ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $conn -> setAttribute ( PDO :: ATTR_EMULATE_PREPARES , false );  
    $retour_total = $pdo->prepare('SELECT COUNT(*) AS total FROM minichat') ;
    $retour_total-> execute ([$min_donnee, $donnees_total]);
    $total = $retour_total -> fetchAll ();
    mais cette partie ou il faut mettre un minimum et un maximumn l'encadrement m'est pas très clair puisque je cherche la borne maximal !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour_total-> execute ([$min_donnee, $donnees_total]);
    j'ai essayé ca avec $min_donnee = 0 mais pour $donnees_total je ne c'est pas quoi mettre car c'est ce que je recherche, le maximum d'enregistrements.

  15. #15
    Membre régulier Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Points : 78
    Points
    78
    Par défaut
    discution close j'ai résolut ma output le log d'erreur sous Debian , j'ai posté un nouveau message dans un forum plus approprié

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

Discussions similaires

  1. comment gérer les accès à mes pages selon des rôles ?
    Par spring.time dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 20/03/2014, 08h56
  2. Réponses: 2
    Dernier message: 15/12/2009, 12h29
  3. [Wamp] Comment forcer wamp à ouvrir les pages.php avec firefox?
    Par guerrier2005 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 10/08/2008, 23h26
  4. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44

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