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

jQuery Discussion :

JQuery et le plugin "pagination"


Sujet :

jQuery

  1. #1
    Tsu
    Tsu est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut JQuery et le plugin "pagination"
    Bonjour,

    J'ai tenté en vain d'utiliser le plug in "pagination" de jQuery.
    J'ai tenté d'adapter les codes fournis dans la demo en ligne et dans le zip mais impossible de le faire fonctionner.

    Voici ce que j'ai dans les balises scripts :

    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
    //------------------------------------------------------------------------------------------- 
                function pageselectCallback(page_index, jq){ 
                    var new_content = $('#hiddenresult div.result:eq('+page_index+')').clone(); 
                    $('#Searchresult').empty().append(new_content); 
                    return false; 
                } 
        //------------------------------------------------------------------------------------------- 
                function initPagination() { 
                    var num_entries = $('#hiddenresult div.result').length; 
                    // Create pagination element 
                    $("#Pagination").pagination(num_entries, { 
                        num_edge_entries: 2, 
                        num_display_entries: 3, 
                        callback: pageselectCallback, 
                        items_per_page:1 
                    }); 
                 }

    et voici mes divs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="Pagination"></div> 
    <div id="Searchresult">This content will be replaced when pagination inits.</div> 
    <div id="hiddenresult" style="display:none;"> 
    <?php admMontrerGalerie($database_test, $test); ?> 
    </div>


    Seul "This content will be replaced when pagination inits." reste affiché, pas de pagination et des erreurs jQuery dans la console firebug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    jQuery is not defined
     
    [Break on this error] jQuery.fn.pagination = function(maxentries, opts){\n

    J'ai beau vouloir tenter de l'initialiser par : $(document).ready(function(){ autour de la fonction initPagination mais le problème persiste.

    Pourriez-vous m'éclairer ?
    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir Tsu.

    Vous devez installer, dans l'ordre, le fichier css, jQuery et le fichier pagination.js, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <link rel="stylesheet" href="../lib/jquery_pagination/pagination.css" />
    <script type="text/javascript" src="../lib/jquery/jquery.min.js"></script> 
    <script type="text/javascript" src="../lib/jquery_pagination/jquery.pagination.js"></script>
    La documentation : http://d-scribe.de/webtools/jquery-p...ination/README

    Voir la démo et son code source : http://d-scribe.de/webtools/jquery-p...mo_options.htm

  3. #3
    Tsu
    Tsu est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Bonsoir,

    Effectivement une modification de dossier en local n'a pas été répéercuté en distant. C'est desormais chose faite mais le soucis est ailleurs désormais.

    Outre le fait que le message sur ma page reste le même (This content will be replaced when pagination inits.), et voici l'erreur de firebug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    page_index is not defined
    [Break on this error] var new_content = $('#hi...iv.result:eq('+page_index+')').clone();\n
    J'ai modifié le script pour qu'il se charge quand le document est prêt :

    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
     
        <script type="text/javascript">
    	$(document).ready(function(){ 
    	//-------------------------------------------------------------------------------------------
    			//function pageselectCallback(page_index, jq){
                    var new_content = $('#hiddenresult div.result:eq('+page_index+')').clone();
                    $('#Searchresult').empty().append(new_content);
                    return false;
                //}
    	//-------------------------------------------------------------------------------------------
                //function initPagination() {
                    var num_entries = $('#hiddenresult div.result').length;
                    // Create pagination element
                    $("#Pagination").pagination(num_entries, {
                        num_edge_entries: 2,
                        num_display_entries: 3,
                        callback: pageselectCallback,
                        items_per_page:1
                    });
                 //}
    	}); 
    	</script>
    Au passage, voici la fonction php qui interroge la page de donnée :

    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
     
    function admMontrerGalerie($database_test, $test)
    {
    	mysql_select_db($database_test, $test);
    	$query_R = "SELECT * FROM novart_tableaux ORDER BY `ordre` DESC";
    	$R = mysql_query($query_R, $test) or die(mysql_error());
    	$row_R = mysql_fetch_assoc($R);
    	$totalRows_R = mysql_num_rows($R);
    	do { 
    		echo 'Nom : '.$row_R['nom'].' <br>';
    		echo 'Auteur : '.$row_R['auteurnom'].' '.$row_R['auteurprenom'].'<br>';
    		echo 'Description : '.nl2br($row_R['description']).'<br>';
    		echo 'Année : '.$row_R['annee'].'<br>';
    		echo '<img src="'.$row_R['img_p'].'"><br>';
    		echo '-----------------------------<br>';
    	} while ($row_R = mysql_fetch_assoc($R)); 	
    }
    Car il y a une inconnue pour ma part : qu'est-ce que le script va paginer ? comment reconnait-il l'item à compatibiliser pour ensuite les paginer tous les 3 items (suivant mon code javascript : num_display_entries: 3) ?

  4. #4
    Tsu
    Tsu est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Le problème est en partie résolu, j'ai mal recopié le code... C'est ça de coder le soir

    En revanche j'ai un soucis lors de l'affichage. J'ai donc compris que les balises de class "result" étaient celles qui sont comptées pour la pagination.

    Ma fonction qui charge tous les resultats de ma base dans la div #hiddenresults est :

    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
    function admMontrerGalerie($database_test, $test)
    {
    	mysql_select_db($database_test, $test);
    	$query_R = "SELECT * FROM novart_tableaux ORDER BY `ordre` DESC";
    	$R = mysql_query($query_R, $test) or die(mysql_error());
    	$row_R = mysql_fetch_assoc($R);
    	$totalRows_R = mysql_num_rows($R);
    	do { 
    		echo '<div class="result">';
    		echo 'Nom : '.$row_R['nom'].' <br>';
    		echo 'Auteur : '.$row_R['auteurnom'].' '.$row_R['auteurprenom'].'<br>';
    		echo 'Description : '.nl2br($row_R['description']).'<br>';
    		echo 'Année : '.$row_R['annee'].'<br>';
    		echo '<img src="'.$row_R['img_p'].'"><br>';
    		echo '-----------------------------<br>';
    		echo '</div>';
    	} while ($row_R = mysql_fetch_assoc($R)); 	
     
    }
    J'ai 6 enregistrements dans ma table SQL.
    Mais dans les options de pagination si je mets items_per_page: 1 j'ai bien un resultat par page, mais si je mets items_per_page: 2 j'ai bien 3 pages dans lesquelles naviguer, et si je mets items_per_page: 3 j'ai bien 2 pages dans lesquelles naviguer.
    Le soucis est que si je mets items_per_page: 2 ou items_per_page: 2 j'ai bien les liens de pagination qui se font correctement, mais sur chacune des pages je n'ai QU'UN SEUL enregistrement qui s'affiche !
    Le soucis vient-il de ma fonction qui interrige ma BDD ?

  5. #5
    Tsu
    Tsu est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 24
    Points : 11
    Points
    11
    Par défaut
    Bonsoir,

    Pour pouvoir apporter un maximum d'éléments à mon problème voici la page en question :

    Url désactivée car problème résolu

    (le formulaire est désactivé, et la fonction d'affichage n'affiche que le nom, c'est volontaire pour simplifier la chose).
    On y voit bien qu'un seul nom n'est affiché par page, alors que j'ai réglé 2 affichage par page, et que ma base de donnée contient 6 enregistrement (donc 6 noms).

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