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 Php. Lien qui n'affiche rien


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Pagination Php. Lien qui n'affiche rien
    Bonsoir !! J'appelle à vos connaissances pour m'aider à régler un petit problème.

    Actuellement je travaille sur un système de pagination avec SQL et PHP, Mon probleme est qu'a partir d'une recherche qui prend en compte un choix de type checkbox et un autre choix a partir d'une liste affiche les resultats correspondants. Les resultats s'affiche normalement.

    Maintenant je veux faire un systeme de pagination avec les resultats mais mon probleme est que les liens n'affichent rien du tout.. Je fais des recherches depuis un mois sans trouver la solution.
    Merci de votre Soutien.

    Voici le code de mon index.php
    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
     
     
    <?php
        require_once('Dbconfig.php');
     
           ?>
            <table align="center" border="1" width="100%" height="100%" id="data">
            <?php
     $query="";
     
         //traitetement de la requete
        if(!empty($_POST['recherche'] ) ){
     
            //Si l'utilisateur a entre quelque chose on traite sa requete
            $recherche = preg_replace("#[^a-zA-Z ?0-9]#i", "", $_POST['recherche']);
            if($_POST['filtre'] == "nommedicament"){
                $query = "SELECT NOM_MEDICAMENT AS Nom, DCI, LABORATOIRE_TITULAIRE_AMM AS Laboratoire, DATE_ATTRIBUTION_AMM AS Date, ETAT_AMM AS Etat FROM medicament WHERE NOM_MEDICAMENT LIKE ?";
            }else if($_POST['filtre'] == "dci"){
                $query = "SELECT NOM_MEDICAMENT AS Nom, DCI, LABORATOIRE_TITULAIRE_AMM AS Laboratoire, DATE_ATTRIBUTION_AMM AS Date, ETAT_AMM AS Etat FROM medicament WHERE DCI LIKE ?";
            }else if($_POST['filtre'] == "numeroamm"){
                $query = "SELECT NOM_MEDICAMENT AS Nom, DCI, LABORATOIRE_TITULAIRE_AMM AS Laboratoire, DATE_ATTRIBUTION_AMM AS Date, ETAT_AMM AS Etat FROM medicament WHERE LABORATOIRE_TITULAIRE_AMM LIKE ?";
            }}
             $records_per_page=4;
            $newquery = $paginate->paging($query,$records_per_page);
            $paginate->dataview($newquery);
            $paginate->paginglink($query,$records_per_page); 
            ?>
            </table>
     
    </td>
    </tr>
    </table>
     
       </body>
    Voici le code la pagination
    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
    <?php
     
    class paginate
    {
      private $db;
     
         function __construct($DB_con)
         {
             $this->db = $DB_con;
         }
     
         public function dataview($query)
         {
     
              $stmt =   $this->db->prepare($query);
            if(isset($_POST['choix1'])){
                $stmt->execute(array($_POST['recherche'].'%'));
            }else if(isset($_POST['choix2'])){
                $stmt->execute(array('%'.$_POST['recherche'].'%'));
            }
            $count = $stmt->rowCount();
            if($count >=0)
             {
                 $compteur=0;
     
                    while($row=$stmt->fetch(PDO::FETCH_ASSOC))
                    {
                        ?>
                        <tr>
                <td><?php echo $compteur=$compteur + 1; ?></td>
                <td><?php echo $row['Nom']; ?></td>
                <td><?php echo $row['DCI'];?></td>
                <td><?php echo $row['Laboratoire']; ?> </td>
                <td><?php echo $row['Date']; ?></td>
                <td><?php echo $row['Etat']; ?></td>
                <td><?php echo '.....................' ?></td>
            </tr>
     
                <?php
                    }
     
             }else {
                echo "<hr/> 0 résultats trouvés pour <strong>$recherche</strong><hr/> $sql";
            }
               } 
     
     public function paging($query,$records_per_page)
     {
            $starting_position=0;
            if(isset($_GET["page_no"]))
            {
                 $starting_position=($_GET["page_no"]-1)*$records_per_page;
            }
           $query2 = $query."limit $starting_position,$records_per_page";
            return $query2;
     }
     
     
     public function paginglink($query,$records_per_page)
     {
     
            $self = $_SERVER['PHP_SELF'];
     
            $stmt = $this->db->prepare($query);
             if(isset($_POST['choix1'])){
                $stmt->execute(array($_POST['recherche'].'%'));
            }else if(isset($_POST['choix2'])){
                $stmt->execute(array('%'.$_POST['recherche'].'%'));
            }
     
            $total_no_of_records = $stmt->rowCount();
     
            if($total_no_of_records > 0)
            {
                ?><tr><td colspan="3"><?php
                $total_no_of_pages=ceil($total_no_of_records/$records_per_page);
                $current_page=1;
                if(isset($_GET["page_no"]))
                {
                   $current_page=$_GET["page_no"];
                }
                if($current_page!=1)
                {
                   $previous =$current_page-1;
                   echo "<a href='".$self."?page_no=1'>First</a>&nbsp;&nbsp;";
                   echo "<a href='".$self."?page_no=".$previous."'>Previous</a>&nbsp;&nbsp;";
                }
                for($i=1;$i<=$total_no_of_pages;$i++)
                {
                if($i==$current_page)
                {
                    echo "<strong><a href='".$self."?page_no=".$i."' style='color:red;text-decoration:none'>".$i."</a></strong>&nbsp;&nbsp;";
                }
                else
                {
                    echo "<a href='".$self."?page_no=".$i."'>".$i."</a>&nbsp;&nbsp;";
                }
       }
       if($current_page!=$total_no_of_pages)
       {
            $next=$current_page+1;
            echo "<a href='".$self."?page_no=".$next."'>Next</a>&nbsp;&nbsp;";
            echo "<a href='".$self."?page_no=".$total_no_of_pages."'>Last</a>&nbsp;&nbsp;";
       }
       ?></td></tr><?php
      }
     }
    }
    Voici le fichier Dbconfig.php
    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
     
    <?php
     
    $db_host = "localhost";
    $db_user = "root";
    $db_pass = "";
    $db_name = "bd_amm_sen";
     
    try
    {
         $DB_con = new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_pass);
         $DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $exception)
    {
         echo $exception->getMessage();
    }
     
    include_once 'Class.paging.php';
    $paginate = new paginate($DB_con);

  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
    Tes choix sont transmis par POST et tes numéros de page par GET, tu perds donc les valeurs choisis quand tu cliques sur le lien.
    Tu peux transmettre les choix par GET dans le formulaire et bien les remettre dans les liens de pagination

    Au passage rationnalise ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $query = "SELECT NOM_MEDICAMENT AS Nom, DCI, LABORATOIRE_TITULAIRE_AMM AS Laboratoire, DATE_ATTRIBUTION_AMM AS Date, ETAT_AMM AS Etat FROM medicament WHERE ";
    if($_POST['filtre'] == "nommedicament"){
                $query .= "NOM_MEDICAMENT LIKE ?";
            }elseif ($_POST['filtre'] == "dci"){
                $query .= "DCI LIKE ?";
            }elseif ($_POST['filtre'] == "numeroamm"){
                $query .= "LABORATOIRE_TITULAIRE_AMM LIKE ?";
            }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci Beaucoup de votre aide..
    J'ai transmis maintenant mes choix par GET et aussi rationalisé le code. Merci! Mais je bloque aux niveaux des liens. Pour la premiere page qui s'affiche j'ai cet URL http://localhost/dpm/index.php?filtr...=2&recherche=a et quand je clique sur le lien 2e Page L'URL devient http://localhost/dpm/index.php?filtr...he=a?page_no=2. On me signale aussi l'erreur Undefined index: recherche in C:\wamp\www\DPM\Class.Paging.php on line 64. Dois Utiliser les Sessions?
    Voici ma nouvelle page de pagination
    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
    <?php
     
    class paginate
    {
      private $db;
     
         function __construct($DB_con)
         {
             $this->db = $DB_con;
         }
     
         public function dataview($query)
         { 
     
    		  $stmt =   $this->db->prepare($query);
            if(isset($_GET['choix1'])){
                $stmt->execute(array($_GET['recherche'].'%'));
            }else if(isset($_GET['choix2'])){
                $stmt->execute(array('%'.$_GET['recherche'].'%'));
            }
    		$count = $stmt->rowCount();
    		if($count >=0)
             {
    			 $compteur=0;
     
                    while($row=$stmt->fetch(PDO::FETCH_ASSOC))
                    {
    					?>
                        <tr>
                <td><?php echo $compteur=$compteur + 1; ?></td>
                <td><?php echo $row['Nom']; ?></td>
                <td><?php echo $row['DCI'];?></td>
                <td><?php echo $row['Laboratoire']; ?> </td>
                <td><?php echo $row['Date']; ?></td>
                <td><?php echo $row['Etat']; ?></td>
                <td><?php echo '.....................' ?></td>
            </tr>
     
                <?php
    				}
     
    		 }else {
                echo "<hr/> 0 résultats trouvés pour <strong>$recherche</strong><hr/> $sql";
            }
           	   }  
     
     public function paging($query,$records_per_page)
     {
            $starting_position=0;
            if(isset($_GET["page_no"]))
            {
                 $starting_position=($_GET["page_no"]-1)*$records_per_page;
            }
           $query2 = $query."limit $starting_position,$records_per_page";
            return $query2;
     }
     
     
     public function paginglink($query,$records_per_page)
     {
     
            $self = $_SERVER['PHP_SELF'];
    		$filtre=$_GET['filtre'];
            $recherche=$_GET['recherche'];
            $self .='?filtre='.$filtre. '?recherche='.$recherche;
            $stmt = $this->db->prepare($query);
             if(isset($_GET['choix1'])){
                $stmt->execute(array($_GET['recherche'].'%'));
            }else if(isset($_GET['choix2'])){
                $stmt->execute(array('%'.$_GET['recherche'].'%'));
            }
     
            $total_no_of_records = $stmt->rowCount();
     
            if($total_no_of_records > 0)
            {
                ?><tr><td colspan="3"><?php
                $total_no_of_pages=ceil($total_no_of_records/$records_per_page);
                $current_page=1;
                if(isset($_GET["page_no"]))
                {
                   $current_page=$_GET["page_no"];
                }
                if($current_page!=1)
                {
                   $previous =$current_page-1;
                   echo "<a href='".$self."?page_no=1'>First</a>&nbsp;&nbsp;";
                   echo "<a href='".$self.$previous."?page_no="."'>Previous</a>&nbsp;&nbsp;";
                }
                for($i=1;$i<=$total_no_of_pages;$i++)
                {
                if($i==$current_page)
                {
                    echo "<strong><a href='".$self."?page_no=".$i."' style='color:red;text-decoration:none'>".$i."</a></strong>&nbsp;&nbsp;";
                }
                else
                {
                    echo "<a href='".$self."?page_no=".$i."'>".$i."</a>&nbsp;&nbsp;";
                }
       }
       if($current_page!=$total_no_of_pages)
       {
            $next=$current_page+1;
            echo "<a href='".$self."?page_no=".$next."'>Next</a>&nbsp;&nbsp;";
            echo "<a href='".$self."?page_no=".$total_no_of_pages."'>Last</a>&nbsp;&nbsp;";
       }
       ?></td></tr><?php
      }
     }
    }

  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
    Il faut que tu mettes les valeurs de recherche dans tes liens de pagination
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Attention à la façon de transmettre PLUSIEURS paramètres via l'URL

    On met UN SEUL "?", ensuite ce sont des "&" :
    http://localhost/dpm/index.php?filtre=nommedicament&recherche=a&page_no=2
    Par conséquent, avant d'écrire les liens, il faut vérifier s'il n'y a pas DEJA un "?" dans l'URL $self !

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sep = ( strpos($self, '?') )? '&' : '?';
     
    echo "<strong><a href='".$self.$sep."page_no=".$i."' ........
    Dernière modification par Invité ; 02/12/2016 à 18h19.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    Attention à la façon de transmettre PLUSIEURS paramètres via l'URL

    On met UN SEUL "?", ensuite ce sont des "&" :


    Par conséquent, avant d'écrire les liens, il faut vérifier s'il n'y a pas DEJA un "?" dans l'URL $self !

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sep = ( strpos($self, '?') )? '&' : '?';
     
    echo "<strong><a href='".$self.$sep."page_no=".$i."' ........
    Merci Beaucoup.. J'ai bien modifié le lien. Maintenant mon soucis est comment mettre le choix du chekbox dans le lien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      if(isset($_GET['choix1'])){
                $stmt->execute(array($_GET['recherche'].'%'));
            }else if(isset($_GET['choix2'])){
                $stmt->execute(array('%'.$_GET['recherche'].'%'));
            }
    Je ne comprends pas aussi ou stocker les donnees restantes a afficher.. Merci de Votre Soutien

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il faut que tu mettes les valeurs de recherche dans tes liens de pagination
    Merci... Oui j'ai bien mis la valeur de recherche dans les liens... mais ça ne suffit pas.. Je pense qu'il me faudrait aussi la valeur du choix du type chekbox. Je ne comprends comment la mettre sur le lien.. Et ou sera stocké les donnees restant a afficher?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       if(isset($_GET['choix1'])){
                $stmt->execute(array($_GET['recherche'].'%'));
            }else if(isset($_GET['choix2'])){
                $stmt->execute(array('%'.$_GET['recherche'].'%'));
            }
    Merci Beaucoup de votre Soutien

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    En ce qui me concerne, je mets les résultats de la recherche dans des variables de SESSION.

    Ça évite, lors de la pagination, de devoir tout se trimbaler dans l'URL.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    En ce qui me concerne, je mets les résultats de la recherche dans des variables de SESSION.

    Ça évite, lors de la pagination, de devoir tout se trimbaler dans l'URL.

    Bonjour! Et merci Beaucoup! Finalement j'ai enlevé la partie du choix chekbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if(isset($_GET['choix1'])){
               $stmt->execute(array($_GET['recherche'].'%'));
           }else if(isset($_GET['choix2'])){
               $stmt->execute(array('%'.$_GET['recherche'].'%'));
           }
    Cette partie c'etait pour restreindre le plus la recherche avec un bouton contenant et un autre commençant.

    Maintenant la pagination marche Bien.. Merci Encore!

Discussions similaires

  1. Lien qui s'affiche à 00H
    Par marcbon dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/03/2008, 09h48
  2. Programme qui n'affiche rien
    Par Premium dans le forum OpenGL
    Réponses: 2
    Dernier message: 03/12/2006, 21h43
  3. SplashScreen qui n'affiche rien ?
    Par Baptiste Wicht dans le forum Interfaces Graphiques en Java
    Réponses: 14
    Dernier message: 26/06/2006, 14h15
  4. [LG]Programme qui n'affiche rien
    Par ousunas dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2004, 19h38

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