wynelle
Messages postés24Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention11 septembre 2005
-
11 mai 2005 à 20:47
wynelle
Messages postés24Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention11 septembre 2005
-
12 mai 2005 à 23:40
Bonjour à toutes et à tous,
J'ai un problème avec un affichage page à page pour lier 2 requêtes. Seule la 2ème requête ($result) prend bien en compte un affichage limité à 10 items par par page... la 1ère ($result_bis) affiche tous les résultats sans tenir compte de ce qui va suivre! La vilaine!?
Désolé pour le codage ci-dessous, les puristes vont probablement "bondir" mais je ne fais que m'inspirer de codes déjà existants.... c'est aussi pour ça que je calle!
Merci pour votre aide pour faire en sorte que j'ai bien un affichage de 10 résultats UNIQUEMENT sur chaque page tout en tenant compte du nombre de résultats des 2 requêtes.
mon code :
<?php include("online_connexion.php");
$nb_results_p_page = 10; // nombre de résultats par page
$nb_avant = 3; // nombre de page avant la page courante
$nb_apres = 3; // nombre de page après la page courante
$premiere = 1; // aficher le lien "première page" (1 ou 0)
$derniere = 1; // afficher le lien "dernière page" (1 ou 0)
$courant = empty($_GET['page']) ? 1 : $_GET['page']; // page
$start = ($courant - 1) * $nb_results_p_page; // start (requete mysql)
// comptage du nombre de lignes de la base
$result = mysql_query("SELECT count(ID) FROM inscrits WHERE CP>='".$dpt."000' AND CP<'".$dpt_suiv."000' AND TYPE!='".$type."' ORDER BY `CP` ASC");
if(!$result)
{
// redirection erreur
header("location: erreur.php");
mysql_close($db);
exit;
}
$ret = mysql_fetch_array($result);
// nombre de lignes
$nb_results = $ret[0];
$result = mysql_query("SELECT * FROM inscrits WHERE CP>='".$dpt."000' AND CP<'".$dpt_suiv."000' AND TYPE!='".$type."' AND PREMIUM='OUI' ORDER BY `PREMIUM` DESC,'".$tri."' ASC,`INTITULE` ASC LIMIT $start, $nb_results_p_page");
$result_bis = mysql_query("SELECT * FROM inscrits WHERE CP>='".$dpt."000' AND CP<'".$dpt_suiv."000' AND TYPE!='".$type."' AND PREMIUM!='OUI' ORDER BY `LISTE_FREE` ASC,'".$tri."' ASC,`INTITULE` ASC LIMIT $start, $nb_results_p_page");
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 12 mai 2005 à 22:52
Hum désolé pour le $dpt_suiv
Ah ok, bah dans ce cas utilise mysql_num_rows() pour retourner le nombre de lignes de la première requête, ensuite tu fais un $nb_results_p_page-$nbre_lignes et tu auras ton résultat pour mettre dans la seconde requête à la place de $nb_results_p_page
wynelle
Messages postés24Date d'inscriptionsamedi 26 juin 2004StatutMembreDernière intervention11 septembre 2005 12 mai 2005 à 22:36
OK pour les $_POST et $_GET, je vais faire les modifs.
Par contre, je n'ai pas de soucis avec $dpt_suiv dans mes requêtes.
C'est simplement que la requête $result_bis ne tient pas compte des résultats précédents de $result et qu'elle m'affiche normalement 10 autres résultats :
$result = mysql_query("SELECT * FROM bnb_inscrits WHERE CP>='".$dpt."000' AND CP<'".$dpt_suiv."000' AND TYPE!='".$type."' AND PREMIUM='OUI' ORDER BY `PREMIUM` DESC,'".$tri."' ASC,`INTITULE` ASC LIMIT $start, $nb_results_p_page");
$result_bis = mysql_query("SELECT * FROM bnb_inscrits WHERE CP>='".$dpt."000' AND CP<'".$dpt_suiv."000' AND TYPE!='".$type."' AND PREMIUM!='OUI' ORDER BY `LISTE_FREE` ASC,'".$tri."' ASC,`INTITULE` ASC LIMIT $start, $nb_results_p_page");
Je voudrais que -par exemple- s'il y a 4 résultats pour la première requête d'affichée, alors la seconde n'en affiche que 6 pour bien avoir 10 affichages sur une même page.
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 20078 12 mai 2005 à 23:37
Bah après ça dépend de la logique de ton code, renseigne-toi sur
fr.php.net pour la fonction mysql_num_rows() tu pourras modifier
ensuite ton code tout seul.