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 :

Système de pagination avec requête avec jointure


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut Système de pagination avec requête avec jointure
    Bonjour,

    Je souhaite installer un système de pagination sur mon script mais je ne sais pas comment rajouter les paramètres sur ma requête avec jointure. Mon code n'est pas du tout fonctionnel, je ne sais pas comment l'organiser pour que ça fonctionne.

    Pouvez-vous m'aider s'il vous plait ?
    Merci beaucoup


    Code php : 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		
    $nbParPage = 5;		
    ?>
     
    <head>
    <form action="Demandes_doc.php" method="GET">
     
     
    <table class="table table-striped table-bordered">
    <thead>
     <tr>
    <th>ITM</th>
    <th>id_prospect</th>
    <th>Nom Prenom</th>
    <th>Societe</th>
    <th>Date</th>
    <th style="color:red">Demande</th>
    <th>Stock</th>
    <th>Action</th>
    </tr>
     </thead>
     <tbody>
     
     
    <?php
     
    						 require 'connect.inc.php';
     
    						if(isset($_GET['orderby']) && $_GET['orderby'] == ("date_maj" || "nom")) $orderby=$_GET['orderby'];
    						else $orderby="date_maj";
    						if(isset($_GET['nom']))
    						$tri="ASC";
    						else $tri="DESC";
     
     
    						$req1=mysql_query("SELECT demande_publications.id, demande_publications.code_publication, demande_publications.id_prospect, demande_publications.date_maj, documentation.code_publication_doc, documentation.description, documentation.qte_stock, documentation.qte_demande, prospects.id_prospect, prospects.nom, prospects.prenom, prospects.societe
    						FROM demande_publications, documentation, prospects
    						WHERE demande_publications.id_prospect = prospects.id_prospect AND demande_publications.code_publication = documentation.code_publication_doc
    						ORDER BY ' . $orderby'");
     
     
    						$nbNews=mysql_numrows($req1);
     
     
    						echo "il y a $nbNews";
     
     
                            while ($item = mysql_fetch_array($req1))
                            {
                                echo '<tr>';
    							$code_publication_doc = $item['code_publication_doc'];
     
     
                                echo '<a class="btn btn-danger" href="delete_demandedoc.php?id='.$item['id'].'&amp;qte_stock='.$item['qte_stock'].'&amp;stock_a_jour='.$stock_a_jour.'&amp;qte_demande='.$item['qte_demande'].'&amp;code_publication='.$item['code_publication'].'&amp;code_publication_doc='.$item['code_publication_doc'].'"><span class="glyphicon glyphicon-remove"></span> Supprimer </a>';
                                echo '</td>';
                                echo '</tr>';
     
                            }
    						mysql_close();
     
     
    //On calcule le nombre de numéro à afficher en fonction du nombre de news par
    //page en arrondissant au nombre supérieur grace a la fonction ceil.
    $moy= ceil($nbNews/$nbParPage);
    echo "<br>et il y aura $moy page<br>";
    //*********** Partie concernant le "bouton" précedent ***********\\
    //on vérifie qu'il y a au minimum 2 page a afficher pour utiliser
    //la fonction Suivant / précédent
    	if ($moy>=2)
    	{
    	  //on vérifie l'éxistence de la variable page avant les vérifications
    	  if (isset($_GET['page']))
    	  {
    		  //si $_GET['page'] = 1 alors on est a la première page et donc pas besoins
    		  //de lien vers la précédente qui n'éxiste pas
    		  if ($_GET['page']==1){echo "Precedent ";}
    		  //sinon on met le lien en ajoutant +1 page a la page courante
    		  else
    		  {
    			  echo "<a href=\"Demandes_doc_test_pagination.php?page=".($_GET['page']-1)."\">Precedent</a> ";
    		  }
    	  }
    		else{echo "Precedent ";}
    	}
    //*********** fin de la partie concernant le "bouton" précedent ***********\\
     
    //prenons un exemple concret :
    // nous avons 10 news dans la base
    // a ce moment nous savons donc qu'il y aura 2 page :
    // $nbNews = 10 divisé par 5 ( 5 news par page ) = 2 pages.
    // on peut déja afficher les numéros :
    // on effectue une boucle tant qu'il y a des pages on ajoute un lien
    	for ($i=0;$i<$moy;$i++)
    	{
    		// on ajoute 1 a $i pour afficher 1-2-3-... au lieu de  0-1-2-3-...
    		echo "<a href=\"Demandes_doc_test_pagination.php?page=".($i+1)."\"> Page ".($i+1)."</a> ";
    	}
     
    //*********** Partie concernant le "bouton" suivant ***********\\
    //on vérifie qu'il y a au minimum 2 page a afficher pour utiliser
    //la fonction Suivant / précédent
    	if ($moy>=2)
    	{
    	  //on vérifie l'éxistence de la variable page avant les vérifications
    	  if (isset($_GET['page']))
    	  {
    		  //si $_GET['page'] = $moy alors on est a la dernière page et donc pas besoins
    		  //de lien vers la suivante qui n'éxiste pas
    		  if ($_GET['page']==$moy){echo " Suivant";}
    		  //sinon on met le lien en ajoutant +1 page a la page courante
    		  else
    		  {
    			  echo " <a href=\"Demandes_doc_test_pagination.php?page=".($_GET['page']+1)."\">Suivant</a>";
    		  }
    	  }
    	  else{echo "<a href=\"Demandes_doc_test_pagination.php?page=1\">Suivant</a>";}
    	}
    //*********** fin de la partie concernant le "bouton" Suivant ***********\\
     
    	echo "<br>La page courante est :".$_GET['page'];
    ?>
    </table>
    </form>

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bonjour Crastinette,

    Voici une requête avec des jointures à partir de ta requête :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT dp.id, dp.code_publication, dp.id_prospect, dp.date_maj, d.code_publication_doc, d.description, d.qte_stock, d.qte_demande, p.id_prospect, p.nom, p.prenom, p.societe
    FROM demande_publications dp
    INNER JOIN documentation d on dp.code_publication = d.code_publication_doc
    INNER JOIN prospects p on dp.id_prospect=p.id_prospect

    Teste ça dans ton phpmyadmin déjà...
    Tu avais un "and" qui faisait tout planter dans ta proposition initiale.
    Et dis-nous si ça marche... Si ça marche

    Passe en pdo + requêtes préparées avec ce petit tuto simple :

    https://www.developpez.net/forums/bl...pdo-soupe-lit/
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Merci dendrite, en fait ma requête fonctionne bien, je récupère bien mes enregistrements dans mon tableau. Le problème est que je récupère mes 10 enregistrements sur chacunes de mes pages, les mêmes ça ne change pas selon la page et je voudrai s bien savoir comment faire pour n'en récupérer que 5 sur chaque page sachant qu'il faut que j'adapte ma requête :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $req1=mysql_query("SELECT demande_publications.id, demande_publications.code_publication, demande_publications.id_prospect, demande_publications.date_maj, documentation.code_publication_doc, documentation.description, documentation.qte_stock, documentation.qte_demande, prospects.id_prospect, prospects.nom, prospects.prenom, prospects.societe
    						FROM demande_publications, documentation, prospects
    						WHERE demande_publications.id_prospect = prospects.id_prospect AND demande_publications.code_publication = documentation.code_publication_doc
    						ORDER BY ' . $orderby'");

    mais comment ?

    Merci pour le pdo, je m'y mets tout doucement mais j'y viens.
    Merci

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT dp.id, dp.code_publication, dp.id_prospect, dp.date_maj, d.code_publication_doc, d.description, d.qte_stock, d.qte_demande, p.id_prospect, p.nom, p.prenom, p.societe
    FROM demande_publications dp
    INNER JOIN documentation d on dp.code_publication = d.code_publication_doc
    INNER JOIN prospects p on dp.id_prospect=p.id_prospect
    ORDER BY dp.date_maj desc, p.societe, p.nom, p.prenom
    LIMIT 49, 5;
    /*ici on prend les enregistrements de 50 à 54*/
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

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

    il y a 2 requêtes à faire :

    Voir :

  6. #6
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Merci jreaux62

    Oui justement je ne sais pas faire la requête
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    " SELECT COUNT(*) FROM ... WHERE ..."

    comme je suis sur plusieurs tables, là je ne sais pas, j'ai regardé plein de tutos mais aucun ne traite de ma configuration de code

    Ce serait ma deuxième requête avec les order et limit (comment dois-je rajouter le limit du coup ? j'ai tenté un essai non concluant...)

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $req1=mysql_query("SELECT demande_publications.id, demande_publications.code_publication, demande_publications.id_prospect, demande_publications.date_maj, documentation.code_publication_doc, documentation.description, documentation.qte_stock, documentation.qte_demande, prospects.id_prospect, prospects.nom, prospects.prenom, prospects.societe
    FROM demande_publications, documentation, prospects
    WHERE demande_publications.id_prospect = prospects.id_prospect AND demande_publications.code_publication = documentation.code_publication_doc
    ORDER BY ' . $orderby' LIMIT 49,5");

    Merci pour l'aide apporté, c'est très gentil et je vais me baser sur le tuto proposé.

Discussions similaires

  1. [PHP 5.0] Système de pagination, avec un tableau
    Par Tamzoro dans le forum Langage
    Réponses: 2
    Dernier message: 05/02/2016, 19h34
  2. [PHP 5.3] système de pagination avec donnée de formulaire
    Par sinifer dans le forum Langage
    Réponses: 11
    Dernier message: 28/11/2013, 12h45
  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, 17h34
  4. Système de pagination avec date dans l'URL.
    Par JeanJean75 dans le forum Langage
    Réponses: 5
    Dernier message: 24/01/2010, 21h00
  5. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33

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