Accueil > Forum > > > > Problème avec pagination php de résultats de requete sql
Problème avec pagination php de résultats de requete sql
mercredi 2 novembre 2005 à 00:25:01 |
Problème avec pagination php de résultats de requete sql

dieusurterre
|
J'ai tenté d'appliquer le code donné dans le tuto sur la pagination...
mais j'ai une erreur qui me revient concernant la ligne en rouge [ $nb_enreg = mysql_num_rows($res);]
celle-ci définit la variable $nb_enreg et donc le calcul du
nb_pg_rounded ne se fait... conséquence le lien vers la page suivante
est toujours présent même lorsqu'il n'y a plus de page suivante à
afficher (s'affiche alors l'erreur:
if(mysql_num_rows($query) == 0)
{
echo '<img src="images/error.gif">';
echo '<br>';
echo '<div style="padding-top:20px;padding-left:25px">Aucun
résultat ne correspond aux termes de votre recherche.</div>';
echo '<div style="padding-top:100px;padding-left:5px"><a
href="http://www.manucure.be/fr/frame2/search.htm"
class="linkgreen"><< Retour au
formulaire</a></div>';
}
de plus, la seconde page affichée contient les résultats dont ID >
7, 7 étant le nbre maximal de résultats à afficher par page.
if(!isset($_GET['pg'])){
$pg = 1;
}
else
{
$pg = $_GET['pg'];
}
if(!is_numeric($pg))
{
$pg = 1;
}
$enreg_par_pg = 7;
function pgs($enreg_par_pg, $pg, $link)
{
$res = mysql_query (
" SELECT Nom_Prenom, ID, Societe
FROM $table
WHERE
Nom_Prenom LIKE '%$Nom_Prenom%'
AND Adresse LIKE '%$Adresse%'
AND CP LIKE '%$CP%'
AND Commune LIKE '%$Commune%'
AND Province LIKE '%$Province%'
AND Pays LIKE '%$Pays%'
". $FR_query ."
". $EN_query ."
" , $link);
$nb_enreg = mysql_num_rows($res);
$nb_pg_rounded = ceil( $nb_enreg / $enreg_par_pg );
$pp = $pg - 1;
$ps = $pg + 1;
if($pg != 1)
{
echo "<a
href='?pg=$pp'><<page
précédente</a>";
}
$i=1;
do{
if($i != $pg)
{
echo " <a
href='?pg=$i'>$i</a>\n";
}
else
{
echo " $i ";
}
$i++;
}while($i <= $nb_pg_rounded);
if($pg != $nb_pg_rounded){
echo " <a href='?pg=$ps'>page suivante>></a>";
}
}
$limit = $enreg_par_pg*$pg-$enreg_par_pg;
$query = mysql_query (
" SELECT Nom_Prenom, ID, Societe
FROM $table
WHERE
Nom_Prenom LIKE '%$Nom_Prenom%'
AND Adresse LIKE '%$Adresse%'
AND CP LIKE '%$CP%'
AND Commune LIKE '%$Commune%'
AND Province LIKE '%$Province%'
AND Pays LIKE '%$Pays%'
". $FR_query ."
". $EN_query ."
LIMIT $limit, $enreg_par_pg
" );
?>
|
|
mercredi 2 novembre 2005 à 00:33:11 |
Re : Problème avec pagination php de résultats de requete sql

FhX
|
"LIKE '%$Nom_Prenom%' AND Adresse LIKE '%$Adresse%' AND CP LIKE '%$CP%' AND Commune LIKE '%$Commune%' AND Province LIKE '%$Province%' AND Pays LIKE '%$Pays%' ". $FR_query ." ". $EN_query .""
Variable non déclaré dans ta fonction !
Attention, les variables hors fonction ne se transmette que si on les appèles via :
global $var;
Sinon, tes variables ne valent rien du tout !
|
|
mercredi 2 novembre 2005 à 00:39:03 |
Re : Problème avec pagination php de résultats de requete sql

dieusurterre
|
 euh je comprends pas trop ce que tu veux m'expliquer... les variables dans la requetes sont définies plus haut dans ma page
exemple:
//load des valeurs postée par le formulaire
if(isset($_POST['FR']))
{
$FR=$_POST['FR'];
}
else
{
$FR='';
}
//variables pour la requete
if($FR=='on')
{
$FR_query='AND FR = 1';
}
else
{
$FR_query=' ';
}
Mais je devrais faire quoi pour ma ligne qui foire?
$nb_enreg = mysql_num_rows($res);
pcq dans le tuto, il y a rien de plus pour la faire fonctionner....
|
|
mercredi 2 novembre 2005 à 00:40:17 |
Re : Problème avec pagination php de résultats de requete sql
|
mercredi 2 novembre 2005 à 00:44:06 |
Re : Problème avec pagination php de résultats de requete sql

FhX
|
Attention, les variables hors fonction ne se transmette que si on les appèles via :
global $var;
$var = 1;
function yes() {
echo $var; // Erreur, ca n'affichera rien ! (si une erreur)
}
Ta requète c'est pareil, ==> $province ? $cp ? Ca sort d'ou ca ?
Je t'invite à faire :
$query = mysql_query (
" SELECT Nom_Prenom, ID, Societe FROM $table WHERE Nom_Prenom LIKE '%$Nom_Prenom%' AND Adresse LIKE '%$Adresse%' AND CP LIKE '%$CP%' AND Commune LIKE '%$Commune%' AND Province LIKE '%$Province%' AND Pays LIKE '%$Pays%' ". $FR_query ." ". $EN_query ." LIMIT $limit, $enreg_par_pg " ) OR DIE ( mysql_error() );
Et tu va vite comprendre :)
|
|
mercredi 2 novembre 2005 à 00:49:16 |
Re : Problème avec pagination php de résultats de requete sql

dieusurterre
|
You have an error in your SQL syntax near 'WHERE
Nom_Prenom LIKE '%%'
AND Adresse LIKE '%%'
AND CP LIKE '%%'
' at line 3
 comment je répare ça?
|
|
mercredi 2 novembre 2005 à 00:51:41 |
Re : Problème avec pagination php de résultats de requete sql

dieusurterre
|
mes variables sortent de là... elles me viennent d'un formulaire, il faut donc les récupérer sur cette page
//Load des données du formulaire
if(isset($_POST['Nom_Prenom']))
{
$Nom_Prenom=$_POST['Nom_Prenom'];
}
else
{
$Nom_Prenom='';
}
if(isset($_POST['Adresse']))
{
$Adresse=$_POST['Adresse'];
}
else
{
$Adresse='';
}
if(isset($_POST['CP']))
{
$CP=$_POST['CP'];
}
else
{
$CP='';
}
if(isset($_POST['Commune']))
{
$Commune=$_POST['Commune'];
}
else
{
$Commune='';
}
if(isset($_POST['Province']))
{
$Province=$_POST['Province'];
}
else
{
$Province='';
}
if(isset($_POST['Pays']))
{
$Pays=$_POST['Pays'];
}
else
{
$Pays='';
}
|
|
mercredi 2 novembre 2005 à 01:37:47 |
Re : Problème avec pagination php de résultats de requete sql

monoceros01
|
$where = '' ; $where.= ($CP) ? 'CP=\'%'.$CP.'%\'' : ''; $and = ($where !== '') ? ' AND ' : ''; $where.= ($Pays) ? $and.'Pays=\'%'.$Pays.'%\'' : ''; $and = ($where !== '') ? ' AND ' : ''; $where.= ($FR) ? $and.'FR=\'1\'' : ''; $and = ($where !== '') ? ' AND ' : ''; $where.= ($EN) ? $and.'EN=\'1\'' : '';
$query = 'SELECT ID,Nom_Prenom,Societe FROM '.$table.' WHERE '.$where ;
|
|
mercredi 2 novembre 2005 à 03:42:48 |
Re : Problème avec pagination php de résultats de requete sql

dieusurterre
|
ça ne résoud toujours pas cette erreur...
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in
qui renvoit à cette ligne
$nb_enreg = mysql_num_rows($res);
|
|
mercredi 2 novembre 2005 à 05:06:41 |
Re : Problème avec pagination php de résultats de requete sql

monoceros01
|
Ouai t'as des trucs en plus par rapport à ce que j'ai mis, fallait adapter...
<?php
# initialisation de la fonction pgs
# la fonction pgs sert à faire un menu de navigation
# Je l'ai modifié car il était inutile d'y répéter la requête SQL
function pgs($nb_enreg, $enreg_par_pg, $pg)
{ $nb_pg_rounded = ceil( $nb_enreg / $enreg_par_pg ); $pp = $pg - 1; $ps = $pg + 1;
# Les valeurs des attributs HTML sont obligatoirement contenues dans
# des doubles quotes ("valeur") et non dans des simples quotes ('valeur') if($pg > 1) { echo '<a
href="?pg='.$pp.'"><<page
précédente</a>';
}
# Une boucle for() est conseillée pour ce genre de boucle car plus claire
# Mais il est vrai qu'elle est légèrement plus couteuse que le while()
# Une différence de temps d'execution de 25ms pour
1000 itérations
# (Source). Je pense que là on peut se le permettre.
for($i=1;$i<=$nb_pg_rounded;$i++)
{ if($i != $pg) { echo ' <a
href="?pg='.$i.'">'.$i.'</a>'; } else { echo ' '.$i.' '; } }
if($pg < $nb_pg_rounded)
{ echo ' <a href="?pg='.$ps.'">page suivante>></a>'; } }
# Récupération des variables passées dans l'url (l'opérateur ternaire serait moins long... Mais j'ai eu la flemme de convertir)
if(isset($_POST['Nom_Prenom']))
{
$Nom_Prenom=$_POST['Nom_Prenom'];
}
else
{
$Nom_Prenom='';
}
if(isset($_POST['Adresse']))
{
$Adresse=$_POST['Adresse'];
}
else
{
$Adresse='';
}
if(isset($_POST['CP']))
{
$CP=$_POST['CP'];
}
else
{
$CP='';
}
if(isset($_POST['Commune']))
{
$Commune=$_POST['Commune'];
}
else
{
$Commune='';
}
if(isset($_POST['Province']))
{
$Province=$_POST['Province'];
}
else
{
$Province='';
}
if(isset($_POST['Pays']))
{
$Pays=$_POST['Pays'];
}
else
{
$Pays='';
}
if(isset($_POST['FR']))
{ $FR=$_POST['FR'];
}
else
{ $FR='';
}
if(isset($_POST['EN']))
{ $EN=$_POST['EN'];
}
else
{ $EN='';
}
# On vérifie à la fois
# si la variable est envoyée dans l'url donc définie (isset())
# si c'est un nombre entier (is_int())
# si elle n'est pas inférieure à 0 ( <= 0)
# auquel cas on assigne 1 à $pg
if(!isset($_GET['pg']) || !is_int($_GET['pg']) || $_GET['pg'] <= 0)
{
$pg = 1;
}
else
{
$pg = $_GET['pg'];
}
# Création des conditions de la clause WHERE
# On concatène la variable $where en fonction des valeurs des variable d'intérêt
# Entre chaque concaténation on vérifie si la chaîne $where est vide ou
non pour y rajouter un AND si on concatène une nouvelle condition
$where = '' ;
$where.= ($Nom_Prenom) ? 'Nom_Prenom=\'%'.$Nom_Prenom.'%\'' : ''; $and = ($where !== '') ? ' AND ' : '';
$where.= ($Adresse) ? $and.'Adresse=\'%'.$Adresse.'%\'' : ''; $and = ($where !== '') ? ' AND ' : '';
$where.= ($CP) ? $and.'CP=\'%'.$CP.'%\'' : ''; $and = ($where !== '') ? ' AND ' : '';
$where.= ($Commune) ? $and.'Commune=\'%'.$Commune.'%\'' : ''; $and = ($where !== '') ? ' AND ' : '';
$where.= ($Province) ? $and.'Province=\'%'.$Province.'%\'' : ''; $and = ($where !== '') ? ' AND ' : ''; $where.= ($Pays) ? $and.'Pays=\'%'.$Pays.'%\'' : ''; $and = ($where !== '') ? ' AND ' : ''; $where.= ($FR) ? $and.'FR=\'1\'' : ''; $and = ($where !== '') ? ' AND ' : ''; $where.= ($EN) ? $and.'EN=\'1\'' : '';
# Paramètrage de la clause LIMIT
$enreg_par_pg = 7;
$limit = $enreg_par_pg*($pg-1);
# Création et envoi de la requête
$query = 'SELECT ID,Nom_Prenom,Societe FROM '.$table.' WHERE '.$where.' LIMIT '.$limit.','.$enreg_par_pg ; $result = mysql_query($query);
# Calcul du nombre de résultat retourné
$nb_enreg = mysql_num_rows($result);
# Envoi de la fonction pgs
pgs($nb_enreg,$enreg_par_pg,$pg);
# Exploitation des données renvoyées par la requête
while($datas = mysql_fetch_array($result))
{
# Là tu affiches tes données en utilisant le tableau associatif $datas
# retourné par mysql_fetch_array() sous la forme
# $datas['ID'], $datas['Nom_Prenom'] et $datas['Societe']
# À chaque passage de la boucle, les données de l'enregistrement suivant
# sont renvoyés dans $datas
}
?>
Il peut y avoir des erreurs de syntaxe, je ne l'ai pas essayé, mais je t'assure que ça fonctionne très bien comme celà!
|
|
Cette discussion est classée dans : and, query, like, pg, enreg
Répondre à ce message
Sujets en rapport avec ce message
Ma Bdd 'clignote'... Fonctionne, fonctionne pas... [ par larrieu ]
Bonjour,Je suis un peu dépassé...Ma bdd sur mysql comprend une table annonce, des champs idannonce, sujet, message, pseudo (de l'auteur),mail (de l'au
pb avec une recherche [ par neotetsuo34 ]
bonjour, quand je lance ma recherche avec 6 critères, elle fonctionne impeccable mais quand je mets un septième critère, elle ne fonctionne plus. j'ai
requete d'un moteur de recherche [ par mariobotta ]
bonjour ,j'ai un champs dans un formulaire qui récupère des mots clefs.après traitement j'obtient une variable que je nomme $phrase qui contient le ou
Php - foreach pour construire une requête multicritères [ par lolo479 ]
Bonjour, j'essai de contruire dynamiquement une requête mais je n'arrive pas à ce que le "AND" s'écrive au bon endroit !!! Si qq'un à une idée je suis
mon moteur recherche web : création de page d'idexation [ par astuces_jeux ]
Bonjour,j'ai fait une page de résultats et j'ai peut-etre des erreurset j'aimerai décider qu'il y ai 15 réponses par pages et faires plusieurs page !!
mon moteur recherche web : création de page d'idexation [ par astuces_jeux ]
Bonjour,j'ai fait une page de résultats et j'ai peut-etre des erreurset j'aimerai décider qu'il y ai 15 réponses par pages et faires plusieurs page !!
besoin d'aide pour pagination d'un moteur de recherche... [ par witch32 ]
alors voila,j'ai créé un moteur de recherche pour partitions.aujourd'hui la base contient 35000 références;pour une recherche si je tombe sur1200 résu
Erreur requete sql [ par flopad ]
Bonjour, j'ai un formulaire via lequel je propose diverses options de recherche dans ma bdd; j'ai le code suivant qui me récupère les données du form
transmission variable [ par soniaboulares ]
Bjr,J'ai un problème consiste à afficher une table Mysql page par page avec une condition, cette condition depend de la variable ($datef=$_POST['UserS
select like and or [ par jphilippev ]
Bonjour j'ai un petit moteur de recherche sans pretention sur mon siteet je voudrais savoir si il est possible de faire ceci :$sql="select * from log
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|