[RESOLU] Pagination

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Pagination

Re: [RESOLU] Pagination

par franckm » 18 nov. 2013, 23:33

Content que ça fonctionne ! bonne continuation ;)

Re: Pagination

par ionesco » 18 nov. 2013, 12:57

Bonjour,
En effet, ça marche. Je m'étais trompé au niveau de la dernière ligne (slash).
Je suis super content. Une épine retirée du pied.
Un grand merci. Je vais pouvoir continuer à avancer sur mon projet.
Ionesco

Re: Pagination

par franckm » 18 nov. 2013, 09:15

Ce que tu peux faire pour t'aider c'est en début de script de ta page faire:
print_r($_REQUEST);
Il t'affichera le tableau de toutes les valeur récupérées en début de script.

Normalement, si les variables (et leurs valeurs !) sont bien visibles dans l'URL tu ne devrais pas avoir de problème pour les récupérer.

Re: Pagination

par ionesco » 18 nov. 2013, 01:11

Bonsoir,
Merci pour cette réponse.
J'ai changé tous les posts en REQUEST et ai modifié la dernière ligne avec les variables. (Je ne savais pas).
Tableau toujours vide en p2.
En fait je renvoie sur ma page resultat.php les autres lignes qui compose ma liste.
Je souhaite que 20 jeux apparaissent par ligne.
En bas de mon tableau: 1 / 2 / 3 etc.
On clique sur chaque n° pour accéder aux 20 autres.
Tout est bien passé dans l'url mais rien ne s'affiche.
Avec ce script, je ne récupère pas les éléments en request.
Dois-je les remettre dans la boucle while?
Cordialement,
Ionesco

Re: Pagination

par franckm » 17 nov. 2013, 23:55

Ce que je comprends pas: tu recharges ta page à chaque fois qu'il appuie sur un bouton suivant ou quelque chose comme ça ?

Pourquoi à la fin dans ton:
 echo "<a href=\"resultat.php?p=$i\"> $i </a> /";
Tu ne mets pas en paramètre les 3 variables POST dont tu as besoin:
 echo "<a href='resultat.php?p=$i&niveau=$niveau&difficulte=$difficulte&type=$type' > $i </a>";
Par contre cela veut dire que dans la deuxième partie de ton script tu les récupères non pas en POST mais en GET. Si tu veux te simplifier les choses au lieu de mettre $_POST et ensuite $_GET mets $_REQUEST partout il trouvera et les post et les get.

Problème de Post et d'affichage avec la pagination

par ionesco » 17 nov. 2013, 22:43

Bonsoir,
J'ai modifié mon code. Mais il semblerait que j'ai un problème de post. Ils sont bien reconnus en page1 mais la requête en page2 et plus n'est pas identifiée. Comment faire pour que les post soient aussi intégrés dans les pages suivantes pour que mon tableau ne soit pas vide.
Message qui apparaît : Call stack et undefined


Voici mon code sur ma page resultat.php
$parPage=4;
if(isset($_POST['niveau']) && isset($_POST['difficulte']) && isset($_POST['type'])){
        $niveau=$_POST['niveau'];
        $difficulte=$_POST['difficulte'];
         $type=$_POST['type'];
        
        //---Pagination et à la fois requête permettant d'afficher le résultat du comptage des lignes
        $reqJeux=$bdd->query('SELECT COUNT(*) AS nbJeux FROM jeux WHERE niv='.$bdd->quote($niveau).' AND   difficulte='.$bdd->quote($difficulte).' AND type='.$bdd->quote($type).''); 
 
        $data=$reqJeux->fetch();
        $reqJeux->closeCursor();
 
        $nbJeux=$data['nbJeux'];
        $parPage=4; 
 
                   $nbPages = ceil($nbJeux/$parPage);
 
                   $pageCourante=1;
 
                   if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPages){
 
                   $pageCourante = $_GET['p']; }
 
                   else{
 
                      $pageCourante=1;
 
                 }
 
//Cette seconde requête permet d'afficher la liste dans ma page resultat. Pose problème en page2
 
if(isset($_POST['niveau']) && isset($_POST['difficulte']) && isset($_POST['type'])){
        $niveau=$_POST['niveau'];
        $difficulte=$_POST['difficulte'];
         $type=$_POST['type'];
        
       $req=$bdd->query('SELECT nomJeu,editeurJeu, appreciation FROM jeux WHERE WHERE niv='.$bdd->quote($niveau).' AND   difficulte='.$bdd->quote($difficulte).' AND type='.$bdd->quote($type).' ORDER BY nomJeu ASC LIMIT '.(($pageCourante-1)*$parPage).','.$parPage);
?>
Ensuite sur la même page mais dans la partie HTML. J'affiche les résultats de ma requête $req
<!DOCTYPE><br> <table width="79%" cellspacing="2" cellpadding="5" >
             
              <tr>
                <td id="entete">NOM</td>
                <td id="entete">EDITEUR</td>
                <td id="entete">LIKE</td>
                 
              </tr>
                <?php   
                while($games=$req->fetch()){
            ?>
         
        <tr>
            <td id="col1"><?php echo $games['nomJeu'];?>"></td>
            <td id="col"><?php echo $games['editeurJeu']; ?></td>
            <td id="col"><?php echo $games['appreciation']; ?></td>
            </tr>
        <?php } ?>
         
    </table>

// Enfin j'ajoute le script pour compter les pages
<?php
       for($i=1;$i<=$nbPages;$i++){
           if($i==$pageCourante){
               echo " $i /";
           }else{
               echo "<a href=\"resultat.php?p=$i\"> $i </a> /";
           }
       }
       ?><br></html>
Si quelqu'un a déjà eu le problème, merci d'avance pour votre aide.
Tout vient de l'utilisation de plusieurs tables. Et des jointures.J'essaie de trouver une solution depuis plusieurs jours mais je tourne en rond.
Cordialement
Ionesco

Pagination

par ionesco » 15 nov. 2013, 12:49

Bonjour,
Je suis en train de réaliser un annuaire.
Sur ma page index.php, j'ai un formulaire qui recueille les informations sous forme de select (à partir de 3 tables différentes):

Table 1:
Niveau de jeux recherché (niv) : niv1, niv2, niv"
Table 2:
Difficulté du jeu (difficulte) : facile, moyen, difficile
Table 3:
Critères du jeu (type) : reflexion, combat, enigme
Une fois le formulaire soumis, le résultat de la recherche (qui apparait sous une forme de liste) est affiché sur une page : resultat.php

Sur ma page resultat.php
Il y a a les post des 3 select récupérés et une requête sql qui permet d'afficher ce résultat à partir d'une 4e table englobant les champs (des tables 1,2,3): c'est la table jeux
if(isset($_POST['niveau']) && isset($_POST['difficulte']) && isset($_POST['type'])){
	$niveau=$_POST['niveau']; 
	$difficulte=$_POST['difficulte']; 
	 $type=$_POST['type']; 
	
	//---Pagination et à la fois requête permettant d'afficher le résultat de la recherche
      $reqJeux=$bdd->query('SELECT COUNT(lien,logo,nomJeu,statut) FROM jeux WHERE niv='.$b2d->quote($niveau).' AND   difficulte='.$bdd->quote($difficulte).' AND type='.$b2d->quote($type).' ORDER BY nomJeu ASC LIMIT '.(($pageCourante-1)*$parPage).','.$parPage);  

	$data=$reqJeux->fetch(); 
	$reqJeux->closeCursor(); 

	//echo 'nbre de lignes '.$data['nbJeux'].'<br/>'; 
	$nbJeux=$data['nbJeux'];
	$parPage=4; 
	$nbPages = ceil($nbJeux/$parPage); 
	$pageCourante=1; 

	if(isset($_GET['p']) && $_GET['p']>0 && $_GET['p']<=$nbPages){
			$pageCourante = $_GET['p'];
	}else{
			$pageCourante=1; 
	}

}
L'affichage fonctionne très bien quand je supprime la pagination et que je retire le COUNT.
En l'état actuel, ce script ne marche évidemment pas. En fait je voulais savoir comment utiliser un COUNT avec le type de requête $reqJeux tout en permettant d'afficher ses champs. Où dois-je reprendre mon code intégralement.
Merci d'avance pour votre aide.
Cordialement
Ionesco