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

JavaScript Discussion :

[AJAX] Gérer plusieurs pages de résultats d'une requête


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut [AJAX] Gérer plusieurs pages de résultats d'une requête
    Bonsoir,

    J'aimerais afficher les résultats d'une requête par 10.

    Page 1 = les 10 premiers, page 2 = les 10 suivants, etc.. et accéder à la page voulue en cliquant sur le numéro adéquat.

    Voici mon code :

    Au niveau de mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <tr>
      <div id="liste">
        <?php
          affInv(0);
        ?>
      </div>
    </tr>
    Ma fonction affInv() au niveu de mon fichier fonctionsPhp.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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    function affInv($numPage)
     {
        if($numPage)
    	 $limiteInf = ($numPage * 10) - 1;
    	else
    	 $limiteInf = 0;
     
    	$connect = connection("../interfaces/gestProd.php");
     
        $requete = "select count(0) from produits_tb";
        $result = mysql_query($requete, $connect);
        @$nb = mysql_fetch_array($result);
     
        $requete = "select cle_prod, ordre_liste_prod, denom_prod, (select nom_fourn from fournisseurs_tb where cle_fourn = cde_fournisseur1_prod)  from produits_tb where supprime_prod = 0 or supprime_prod = 2 order by ordre_liste_prod limit $limiteInf, 10;";
        $resultat = mysql_query($requete, $connect);
        $num_result = mysql_num_rows($resultat);
     
        mysql_close($connect);
     
        if($nb[0])
         {
           for($i = 0; $i < $num_result; $i++)
            {
              $row = mysql_fetch_array($resultat);
              echo "<td id='tdcontenu'><input type='text' name='ordreProd' id='ordreProd' value='$row[1]' size='4'><input type='hidden' id='cleProd' value='$row[0]'></td>
    	            <td id='tdcontenu'>$row[2]</td>
    	            <td id='tdcontenu'>$row[3]</td>
    	            <td id='tdcontenu'><input type='text' name='quantite' id='quantite' value=''  size='4'></td>
                       </tr>";
              }
       echo "<tr>
    	         <td id='tdcontenu'>Pages</td>
    	         <td id='tdcontenu' colspan='2'>";
     
       if($nb[0]  % 10)
    	$nombreLiens = ($nb[0] / 10) + 1;
       else
        $nombreLiens = $nb[0] / 10;
     
       for($i = 1; $i <= $nombreLiens; $i++)
    	{
    	 if($i != 1)
    	  echo " - ";
     
    	 echo "<a href='' onclick='majListeInv($i)'>$i</a>";
    	}
       echo " </td>";
      }
     }
    Ma fonction (pour l'AJAX) majListeInv() au niveau de mon fichier fonctionsJs.js :

    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
     
    function majListeInv(num)
     {
      {
      xhr = getXhr();
      xhr.onreadystatechange = function()
       {
        if(xhr.readyState == 4 && xhr.status == 200)
         {
          document.getElementById('listeInventaire').innerHTML = xhr.responseText;
         }
       }
      xhr.open("POST",'../transferts/ajaxMajListeInv.php',true);
      xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     
      xhr.send("limiteInf="+num);
     }
     }
    Et, enfin, mon fichier ajaxMajListeInv.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
     if(!empty($_POST['limiteInf']))
      affInv($_POST['limiteInf']);
    ?>
    Le problème que je rencontre est que, lorsque je clique sur un numéro de page, mon div ne se met pas à jour. Je pense que c'est dû au fait que mon fichier ajaxMajListeInv.php n'est pas chargé, mais je n'en vois pas la raison.

    Est-ce que quelqu'un aurait une idée?

    Merci d'avance pour vos réponses.

    Christophe

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Bonjour,

    Petite précision...

    Grâce aux logs d'Apache, j'ai pu déterminer que mon fichier php est bien appelé. Par contre, j'ai relevé l'erreur suivante dans firebug : "Component returned failure code".

    Je ne m'en sors pas.

    Quelqu'un aurait une idée?

    Merci d'avance.

    Christophe

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Encore un autre essai...

    En travaillant de manière synchrone plutôt qu'asynchrone

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("POST",'../transferts/ajaxMajListeInv.php',false);
    les bons résultats s'affichent 1/2 secondes au-dessus de mon div (en laissant toujours les initiaux dans le div), puis disparaissent.

    Je tuse....

    Christophe

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Par défaut
    Salut,

    Sais-tu s'il rentre dans le if(!empty($_POST['limiteInf'])) ?

    Essai de mettre un
    Deuxième idée, essaie de mettre ton code de la fonction affInv directement dans ton fichier ajaxMajListeInv.php (on sait jamais) !

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Bonsoir et merci pour ton intérêt...

    J'ai mis ma fonction javaScript dans mon fichier php, et pas de changement.

    J'ai également vérifié qu'il rentre bien dans mon test par l'affichage de l'erreur dans le cas contraire, et rien...

    Franchement, ce n'est plus patauger que je fais, mais m'engloutir!

    Christophe

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 137
    Par défaut
    Et tu n'as pas d'erreur dans ton navigateur ?

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

Discussions similaires

  1. [MySQL] Utiliser plusieurs fois le résultat d'une requête SQL
    Par liandar dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/11/2015, 15h46
  2. Réponses: 2
    Dernier message: 04/07/2014, 15h21
  3. [MySQL] Affichage des résultats d'une requête sur plusieurs pages
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 13h24
  4. [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

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