begin process at 2012 05 31 05:31:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Pagination, un problème sans solution ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pagination, un problème sans solution ?

mercredi 3 novembre 2010 à 09:41:34 | Pagination, un problème sans solution ?

BenPourquoi


Bonjour,
Je constate après quelque(sssss) recherches que je ne suis pas le seul à bloquer sur la pagination des résultats d'une requête avec des conditions suite à un formulaire de type POST.
Je fais appel à ceux qui maitrise le PHP mieux que le modeste débutant que je suis pour nous apporter une solution fiable .

Descrition :
La requête s'effectue correctement et la réponse s'affiche sur une seule page. Si je veux répartir mes réponses sur plusieurs pages, la détermination du nombre de page et la réalisation des liens fonctionnent. Le problème intervient lorsque je clique sur un lien. La nouvelle page s'ouvre mais elle n'affiche pas la suite de ma requête. Le LIMIT n'est pas pris en compte.

Je précise que si je fais une requête sans formulaire et sans condition WHERE cela ne pose aucune difficulté.

Le script est semblable à ceux que l'on voit régulièrement pour ce type de .

Doit-on procéder autrement ?
Ou est l'erreur ?
Qui relèvera le challenge ?

Code PHP :
/* le n° de la page actuelle est contenu dans la variable $_GET['page']
(sous la forme index.php?page=[n° de la page]). */
	if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
	{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
	}
	else // Sinon
	{
     $pageActuelle=1; // La page actuelle est la n°1    
	}
	
// l'élément name n'est pas vide, la requête s'exécute.
	$requete = "SELECT * 
				FROM
						index_lampyris
				WHERE
						nip='$e'
				OR
						nom REGEXP '([[:space:]]|[_-]|^)$e([[:space:]]|[_-]|$)'
				OR
						cas='$e'
				";

// je récupère le contenu de la requête dans $retour.
	$retour = mysql_query($requete) or die($requete."<br />\n".mysql_error());
						
// je calcule le nombre total de réponses pour le placer dans la variable $numrow.
	$numrow = mysql_num_rows($retour);
	echo 'nbr de réponses '.$numrow.'<br />';

//La recherche est créée mais sans résultat.
	if($numrow == "") 
{
  echo '<div style="text-align:center"/>"Votre recherche ne renvoie aucun résultat"<br />
		Les recherches sont effectuées sans tenir compte de la casse des caractères.<br />
		Vous ne pouvez pas taper plusieurs mots ou numéros.
		'; 
exit;
  }
  
// je met dans la variable $reponseParPage le nombre de réponses souhaitées par page.
	$reponseParPage = 10; // Affiche 20 réponses par page.

// je place le nombre total de pages dans la variable $nombreDePages.
	$nombreDePages=ceil($numrow/$reponseParPage); // La fonction ceil permet d'avoir le nombre entier supérieur.
	echo 'Nombre de page '.$nombreDePages.'';
/ Sur la page 1, l'index de départ est (de 0 à n, n = pageActuelle - 1) en paramètre d'url.
	$premiereEntree=($pageActuelle-1)*$reponseParPage; // première entrée à lire
// le premier argument indique le décalage du premier enregistrement à retourner et le second donne le nombre maximum d'enregistrement à retourner.
	$requete .= "LIMIT ".$reponseParPage." OFFSET ".$premiereEntree.";";
	//$requete .= ' limit '.$premiereEntree.', '.$reponseParPage.'';
	$resultat = mysql_query($requete); // Nouveau résultat de la requête
// Je fais une boucle pour afficher la liste des pages avec un lien pointant vers chacune d'elles.
//si c'est supérieur à 0 on affiche un lien "page précédente", si c'est inférieur à pageActuelle - 1 cela affiche un lien "page suivante".
echo '<p align="center">Page : '; // Je centre l'affichage de la liste des pages
for($i=1; $i<=$nombreDePages; $i++) // Je prend pour départ la variable $i=1, je l'incrémente de 1 à chaque passage jusqu'à ce que $i=$nombreDePages.
{
if($i==$pageActuelle) // S'il s'agit de la page actuelle, elle est encadrée par [ ].
{
echo ' [ '.$i.' ] ';
}
else // Sinon...
{
echo ' <a href="index.php?page='.$i.'">'.$i.'</a> ';
}
}
echo '</p>';


mysql_close(); // Je ferme ma connexion MySQL.

 


Je vous remercie pour l'attention que vous porterez à ma demande.
Ne cherche qu'à grandir
mercredi 3 novembre 2010 à 11:02:36 | Re : Pagination, un problème sans solution ?

cod57

Réponse acceptée !
Salut

à première vue ton problème vient de

$requete .= "LIMIT ".$reponseParPage." OFFSET ".$premiereEntree.";";

enfin le code est touffu je regarde ...

http://www.goodphptutorials.com/article/show/simple-php-mysql-pagination/2

http://www.codediesel.com/php/simple-pagination-in-php/

une simple class facilite bien les choses


mercredi 3 novembre 2010 à 11:14:38 | Re : Pagination, un problème sans solution ?

BenPourquoi



Bonjour cod57, Je m'aperçois en effet que j'ai affiché des lignes de teste pour trouver une solution .
Je regarde tes liens.
Merci pour ta réponse.
Ne cherche qu'à grandir
lundi 8 novembre 2010 à 16:43:24 | Re : Pagination, un problème sans solution ?

BenPourquoi

Réponse acceptée !

Bonjour,
Après quelques essais, je vous fais part de ma solution.

Dans le formulaire, il faut préciser method="get"

Code HTML :
<form class="form" name="form1" method="get" action="<?php echo $PHP_SELF ?>">
			<label>
				<input type="text" name="recherche"  />
				<input type="submit" name="Submit" value="Rechercher" />
				<input type="hidden" name="page" value="1" />
			</label>
		</form>


Pour la pagination avec la prise en compte des premières entrées et du nombres de lignes, il faut inclure dans le lien la variable de recherche (dans l'exemple ci-dessous $e) :
Code PHP :
<?php 
for($i=1; $i<=$nombreDePages; $i++) // Je prend pour départ la variable $i=1, je l'incrémente de 1 à chaque passage jusqu'à ce que $i=$nombreDePages.
{
if($i==$pageActuelle) // S'il s'agit de la page actuelle, elle est encadrée par [ ].
{
echo ' [ '.$i.' ] ';
}
else // Sinon...
{
echo " <a href=\"$PHP_SELF?page=$i&amp;recherche=$e\">$i</a> \n";
}
}
echo '</p>';
?>


C'est une méthode qui fonctionne avec mon code. J'espère que cette proposition permettra à ceux qui sont dans l'impasse de voir le bout du tunel.

Ne cherche qu'à grandir
lundi 8 novembre 2010 à 16:54:45 | Re : Pagination, un problème sans solution ?

BenPourquoi

Le problème est résolu .


Ne cherche qu'à grandir


Cette discussion est classée dans : nombre, page, requête, pageactuelle, nombredepages


Répondre à ce message

Sujets en rapport avec ce message

Page multiples dans résultats MySQL [ par pyranhaz ] Bonjour,Existe-il une astuce simple pour que lorsque je fais une requête MySQL sur mon site on m'affiche les pages contenant au maximum 25 résultats p Prob de requête !! [ par kodiask ] voila j'ai un page avec un formulaire qui renvoi a cette page intermediaire qui a pour but de mettre a jour la BDD, le problème est qu'il m emarque "e deux formulaires sur la même page avec une partie commune [ par skmancuso ] Bonjour,Je suis en train de réaliser une page php4. La caractéristique de cette page et qu'il y a deux formulaires avec un bouton d'envoi chacun. Ce f affichage requête SQL dans pseudo frame php [ par titsuisse ] Bonjour, J'ai une petite question. J'ai construit mon site en le divisant comme un tableau. Au centre de ce tableau se trouve une page avec un includ Récupération de variables [ par Leneuf8000 ] Rebonjour, j'aurai aimé savoir pourquoi mon script ne marche pas !!! En fait j'ai fait ceci :     //Variable qui gèrent le nombre d'affichage     if Page par Page [ par piep14 ] Bonjour, j'ai une petit problème pour faire défiler des enregistrements a travers des pages ! J'utilise des comme ceci : <tb Pagination avec nombre de pages [ par sebalex ] Salut à tous,Voilà, j'ai une liste résultant d'une recherche. Cette liste se limite à 5 résultats par page. A présent, je souhaite faire comme la plup ouverture page apres x clics [ par gzt ] bonjourj'aimerais crer un compteur sur une page bien precise et qu'une autre page s'ouvre au bout de X ouverture de la premiere pageest il possible de Compter des données resultants d'une requête [ par murrigane ] Bonjour ! Voila j'ai un gros souci, dans mon administration d'annonce je dois présenter un "inventaire" qui va afficher le nombre d'annonce par thème PHP et javascript [ par zilachi ] Bonjour,Un utilisateur selectionne un nombre n dans une liste déroulante.Ce nombre n va générer avec php n champs dans la page suivante.Sur cette page


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales