jQuery: Voir plus / moins

Mammouth du PHP | 725 Messages

21 sept. 2011, 14:31

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

Mammouth du PHP | 672 Messages

22 sept. 2011, 10:32

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.

devlop78
Invité n'ayant pas de compte PHPfrance

24 sept. 2011, 21:55

Je propose que Rimie reformule la question, car nous parler de jQuery avec un extrait de PHP est plutôt douteux

Mammouth du PHP | 725 Messages

28 sept. 2011, 09:00

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

Mammouth du PHP | 725 Messages

03 oct. 2011, 08:02

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

ViPHP
xTG
ViPHP | 7331 Messages

03 oct. 2011, 08:06

session_start() ? :non:

Mammouth du PHP | 725 Messages

03 oct. 2011, 08:28

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 :(

Mammouth du PHP | 725 Messages

03 oct. 2011, 08:38

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

Mammouth du PHP | 672 Messages

03 oct. 2011, 11:27

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...

Mammouth du PHP | 725 Messages

06 oct. 2011, 06:03

$countResult = $countReq->fetchAll();

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

Mammouth du PHP | 672 Messages

07 oct. 2011, 09:37

$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:

Mammouth du PHP | 725 Messages

09 oct. 2011, 06:25

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