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 :

[SQL] Afficher X résultats par page ! (LIMIT) [Fait]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut [SQL] Afficher X résultats par page ! (LIMIT)
    Bonjour,

    J'aurais besoin de votre aide ... donc j'explique :

    J'ai 2 tables SQL, une nommé CLIENT et une autre nommé COM (pour commercial).
    J'ai crée un formulaire pour rechercher un profil commercial dans la table par rapport a son numéro de commercial ou nom.
    Le fichier result_com.php m'affiche le résultat, il m'affiche donc les informations du commercial (n°, nom et tel) puis chaque client qu'il a rentré dans la base avec un trie au choix par n° ou nom. (d'ou une jointure)
    Mais voila, le problème réside dans le fait qu'un commercial peut avoir + de 300 ou 400 clients, et ca serait génant d'avoir tous les clients qui s'affichent sur la même page, longueur de chargement etc ...
    Ainsi je souheterais mettre en place un systeme qui permettrais d'afficher disons 20 clients par page.

    Evidemment, je viens pas à vous sans avoir fait quelques recherches, et j'ai trouvé que pour afficher un certain nombre d'enregistrement de la table on utilisait dans la requête SQL LIMIT, ainsi en remplacant les valeurs par des variables il me serait facile de retourner x éléments par pages. J'ai essayé, et ca fait plusieurs jours que je planche sur le problème et malgrès les tutos que j'ai pu trouver sur le net (phphdebutant.org), je n'ai pas réussi a adapter le code a ma page ... Je précise d'ailleurs que je débute un peu en Php et que mes notions sont plutôt limité alors vous moquez pas du code ^^

    Voici le code de ma page qui affiche juste les 20 premiers enregistrements :

    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
    <?php
    include 'connect_inc.php';
     
    $limit = 20;
    $num = $_POST['num'];
    $nom = $_POST['nom'];        
    $tel = $_POST['tel'];
     
    $result = mysql_query("SELECT * FROM com where nom like '$nom' OR num like '$num' OR tel like '$tel'");
    if (!$result) {
       echo "Impossible d'exécuter la requête : " . mysql_error();
       exit;
    }
    if (mysql_num_rows($result) > 0) {
     
    		  $row = mysql_fetch_row($result);
    		  echo "Code commercial : ".$row['1']."<br>";     
              echo "Nom : ".$row['3']."<br>";
              echo "N° de Téléphone : ".$row['4']."<br>";
              echo "<br>"; 
    		 }            
          else {
              echo "Saisie introuvable.";
    }
     
     
    $result2 = mysql_query("SELECT client.id, client.num_cli, client.nom, com.nom, com.num_cli FROM client LEFT JOIN com ON client.num_cli=com.num_cli WHERE com.num = '$num' OR com.nom LIKE '$nom' OR com.tel LIKE '$tel' ORDER BY client.nom ASC LIMIT $limit");
     
    if (!$result2) {
       echo "Impossible d'exécuter la requête : " . mysql_error();
       exit;
       }
     
        while($row = mysql_fetch_row($result2)) {   
    		echo "Client rattaché au commercial :".$nom."&nbsp;".$num."<br>";
    		if ($row['1'] != 0)
    		{ 
              echo "Numéro client : ".$row['1']."<br>";
            }
            else
            {
              echo "Numéro client : Néant <br>";	
    		}  
    		echo "Nom : ".$row['2']."<br>";
    		$id = $row['0'];
    		echo "<a href=\"affich.php?id=" . $id . "\">Afficher la fiche client.</a><br>";
    		echo "<br>";
    		}          
     
    	 mysql_close();
    ?>
    Merci de votre aide

  2. #2
    Membre éclairé Avatar de mimagyc
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par défaut
    essaie ca (fait rapidement ,, donc il est possible qu'il y est des erreurs )

    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
     
    <?php
    include 'connect_inc.php';
    $limit = 0; // tu commence a lire ta base a 0
    $nombreparpage = 20; // tu affiche 20 resultat par page
    if (isset ($_GET['limit'])) { $limit = $_GET['limit']; } // si la variable limit existe , on la remplace par celle de l'url qui a été calculé auparavant (voir plus bas)
    $num = $_POST['num']; 
    $nom = $_POST['nom']; $tel = $_POST['tel'];   
     
    $result = mysql_query("SELECT * FROM com where nom like '$nom' OR num like '$num' OR tel like '$tel'"); 
     
    if (!$result) {  echo "Impossible d'exécuter la requête : " . mysql_error(); exit; } 
     
    if (mysql_num_rows($result) > 0) {  
     
    $row = mysql_fetch_row($result); 
     
    echo "Code commercial : ".$row['1']."<br>"; 
    echo "Nom : ".$row['3']."<br>"; 
    echo "N° de Téléphone : ".$row['4']."<br>"; 
    echo "<br>"; } else {  echo "Saisie introuvable."; }     
     
     
    $result2 = mysql_query("SELECT client.id, client.num_cli, client.nom, com.nom, com.num_cli FROM client LEFT JOIN com ON client.num_cli=com.num_cli WHERE com.num = '$num' OR com.nom LIKE '$nom' OR com.tel LIKE '$tel' ORDER BY client.nom ASC LIMIT $limit,$nombreparpage");   
     
    if (!$result2) {  echo "Impossible d'exécuter la requête : " . mysql_error(); exit; }   
     
    while($row = mysql_fetch_row($result2)) { 
    echo "Client rattaché au commercial :".$nom."&nbsp;".$num."<br>"; 
     
    if ($row['1'] != 0)  { echo "Numéro client : ".$row['1']."<br>"; }  
    else  {  echo "Numéro client : Néant <br>"; } 
     
    echo "Nom : ".$row['2']."<br>"; 
    $id = $row['0']; 
    echo "<a href=\"affich.php?id=" . $id . "\">Afficher la fiche client.</a><br>"; 
    echo "<br>"; } 
    // on calcule la variable limite pour les prochaine pages
    $suivant = $limit + $nombreparpage;
    $precedent = $limit - $nombreparpage;
    // affichage du lien precedent
    echo "<a href=".$_SERVER['HTTP_REFERER']."&limit=".$precedent."><< Précédent</a>";
    // affichage du lien suivant
    echo "<a href=".$_SERVER['HTTP_REFERER']."&limit=".$suivant.">Suivant >> </a>";
    mysql_close(); ?>
    âpres tu peus aussi faire en sorte que les lien ne s'affiche pas si il n'existe pas de résultat apres le nombre de la variable $limit .

  3. #3
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    J'aurais utilisé le lien de la page en dur plutôt que $_SERVER['HTTP_REFERER']
    L'adresse de la page (si elle existe) qui a conduit le client à la page courante. Cette valeur est affectée par le client, et tous les clients ne le font pas. Certains navigateurs permettent même de modifier la valeur de HTTP_REFERER, sous forme de fonctionnalité. En bref, ce n'est pas une valeur de confiance.
    Sinon niveau code, je modifierais 2 choses les quotes et les br :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<a href="affich.php?id=' . $id . '">Afficher la fiche client.</a><br />';
    comme ça de partout. Ainsi tu as un code valide, + rapide et + lisible

  4. #4
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut
    Merci pour votre aide et vos conseils

    Je tester les modifications :p

  5. #5
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2007
    Messages : 40
    Par défaut
    Ca me met une erreur 404 ... Pourtant je trouve le code correcte, d'ou vient l'erreur ?! Oo'

    Merci

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721

Discussions similaires

  1. [SQL] Je souhaite limiter le nombre de résultat par page
    Par kilian67 dans le forum PHP & Base de données
    Réponses: 38
    Dernier message: 20/08/2007, 17h55
  2. Limiter nbr de résultat par page
    Par Marconico dans le forum ASP
    Réponses: 13
    Dernier message: 14/12/2006, 13h27
  3. [SQL] Afficher les résultats d'une requête sur plusieurs pages
    Par mealtone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2006, 13h20
  4. [SQL] Nombre de résultats par pays
    Par flOZ dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/05/2006, 05h29
  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