Page 1 sur 1

jQuery: Voir plus / moins

Posté : 21 sept. 2011, 14:31
par rimie
Bonjour,

Je voudrais effectuer un voir plus / moins sur une page contenant plus de 10 resultats, par exemple:
SELECT * FROM ma-table LIMIT 10 // je mets seulement 10 resultat

while() {
	// afficher le contenu
}

if($total > 10)
{
echo 'voir plus';
}
comment effectuer cette tache avec jQuery?

merci

Re: jQuery: Voir plus / moins

Posté : 22 sept. 2011, 10:32
par macgawel
Bonjour.

1. A partir du moment ou tu demandes à SQL de faire un limit 10, on peut penser que tu n'auras jamais plus de 10 résultats :mrgreen:

2. Il faudrait que tu reflechisses à ce que tu veux vraiment :
- Récupérer tous les résultats, et n'afficher que les dix premiers.
- ou Ne récupérer que 10 résultats, et permettre d'aller récupérer les 10 suivants.

Ce n'est pas très clair, mais en gros il faudrait savoir combien de résultats tu attends.

Si tu t'attends à avoir relativement peu de résultats - et à ce que ce soit relativement constant, le plus simple AMHA c'est de demander à PHP d'envoyer l'ensemble des résultats.
Ensuite, tu demandes au JS de cacher les résultats au-delà du 10ème.
Enfin, le clic sur le lien "+" demande au JS de les afficher..

Si tu ne sais pas combien de résultats tu peux avoir - et si tu t'attends à en avoir beaucoup, il faut passer par une fonction proche des scripts de pagination pour le PHP (gérer des requêtes pour 10 éléments, à partir du nième).
Ensuite, il faut une requête AJAX vers la fonction PHP, qui lui passe le rang de départ.
Enfin, le le clic sur le lien "+" exécute la requête AJAX avec le rang de départ et l'incrémente.

Re: jQuery: Voir plus / moins

Posté : 24 sept. 2011, 21:55
par devlop78
Je propose que Rimie reformule la question, car nous parler de jQuery avec un extrait de PHP est plutôt douteux

Re: jQuery: Voir plus / moins

Posté : 28 sept. 2011, 09:00
par rimie
Je propose que Rimie reformule la question, car nous parler de jQuery avec un extrait de PHP est plutôt douteux
je voudrais savoir comment transmettre une valeur jQuery vers PHP en utilisant un retour JSON?

par exemple, j'ai 2 pages:

index.php
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript">
$(document).ready(function(){
   
   
   	function more_results() {
	
    
	$.ajax({
	type: 'POST',
	url: 'more.php',
	data : dataString, 
    dataType: "json",
	
	success: function(data)
		{  
            
            // on recupere le nombre de click qui reste
            var clicks = data.nbre_clicks;
            console.log(clicks);
            
            
            
           
        } // end success    
        }); // end ajax
            
        return false;
        } // end function
  
    regFrm.submit(function(){  
    more_results();
    return false;
           
}); 
         
}); // end document load
</script>

</head>

<body>

<?php

$select = 'SELECT * FROM comments';

// total
$total = mysql_num_rows($query);

if($total > 10) // si total est superieur a 10
{
    echo 'Afficher plus de commentaires'; // ici sous form de boutton d'envoi
}



?>
more.php
<?php

$return = array();

    $select = 'SELECT * FROM comments';
    $total = mysql_num_rows($query);
    
    /* 
        supposons que j'ai 35 commentaires
        je vais les afficher en premier temps par 10
        et en dernier il va me rester 5 commentaire
        
        + Premier affichage 10
        + Click => affichage de 10 autres => total 20
        + Click => affichage de 10 autres => total 30
        + Click => affichage du reste => total 35
    
    
    */
    
    if($total > 10)
    {
        $nbre_clicks = $total / 10; // nbre de fois a cliquer sur afficher plus de commentaires
        // dans mon cas (35-10)/10 = 2.5 => ca veut dire 3 fois
        // alors comment faire afin de transmettre a chaque fois 10 et au dernier moment 5 vers l'autre page    
        // j'ai reflechis a ca:
    }
    
    

$return["nbre_clicks"] = $nbre_clicks; // 3
// mais cette valeur 3 est sous form PHP, elle serait transmit vers jQuery comme ca: data.nbre_clicks

echo json_encode($return_arr);

?>
merci

Re: jQuery: Voir plus / moins

Posté : 03 oct. 2011, 08:02
par rimie
j'ai voulu mettre un compteur en session PHP sur la page more:
<?php
$counter = 1;

// incrémenter le compteur
$_SESSION['counter']++;
echo "Vous avez vu " . $_SESSION['counter'] . " fois cette page";
?>

ce n'est qu'un test, il me donne toujours le chiffre 1, alors si je le teste separement dans une autre page, a chaque rafraichissement il s'incremente

Re: jQuery: Voir plus / moins

Posté : 03 oct. 2011, 08:06
par xTG
session_start() ? :non:

Re: jQuery: Voir plus / moins

Posté : 03 oct. 2011, 08:28
par rimie
session_start() ? :non:
au lieu de la mettre au 2eme fichier auquel on fait appel a la session je l'ai mis en 1er fichier :(

Re: jQuery: Voir plus / moins

Posté : 03 oct. 2011, 08:38
par rimie
comment faire pour avoir le total de count en PDO quote:
<?php

$id_hm = $connexion->quote($id_hm, PDO::PARAM_INT);
$id_rec = $connexion->quote($id_rec, PDO::PARAM_INT);

$countSql = 'SELECT COUNT(idcom) FROM comments WHERE idcat = "'.$id_hm.'" AND id_cl = "'.$id_rec.'"';    
$countReq = $connexion->query($countSql); 

$countResult = $countReq->fetchAll();
$countTotal = count($countResult);

echo 'total est: '.$countTotal.'<br />';

?>
ca me retourne toujours 1

Re: jQuery: Voir plus / moins

Posté : 03 oct. 2011, 11:27
par macgawel
comment faire pour avoir le total de count en PDO quote:
ca me retourne toujours 1
Normal...

Ta requête SELECT COUNT... te retourne un élément - le nombre d'idcom.
Le count($countResult) te retourne donc forcément 1.

Il faut faire l'un ou l'autre (compter dans la requête ou dans l'exploitation de la requête), pas les deux à la fois...

Re: jQuery: Voir plus / moins

Posté : 06 oct. 2011, 06:03
par rimie
$countResult = $countReq->fetchAll();

echo 'count result '.$countResult;
$countResult est un array, alors comment puis je proceder avec COUNT() pour calculer le total

Re: jQuery: Voir plus / moins

Posté : 07 oct. 2011, 09:37
par macgawel
$countResult est un array, alors comment puis je proceder avec COUNT() pour calculer le total
Tu as lu ma réponse ?
Si tu veux utiliser COUNT (SQL), tu n'as qu'à lire le contenu de ton array...

Fais un print_r($countResult), ça devrait te donner une bonne indication :roll:

Re: jQuery: Voir plus / moins

Posté : 09 oct. 2011, 06:25
par rimie
ca me retourne:

Code : Tout sélectionner

Array ( [0] => Array ( [COUNT(idcom)] => 114 [0] => 114 ) )
je fais un foreach:
foreach($resultR as $kr=>$vr)
			{
				$idcom = $vr['idcom'];	
			}
ca me retourne:

Code : Tout sélectionner

Notice: Undefined index: idcom in