Généré pages suite à requêtes

cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004 - 1 juin 2004 à 17:24
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 - 3 févr. 2006 à 15:57
Voyons voir,

J,ai une formulaire qui permet de faire une redcherche sur MySQL et afficher le résultat sur mon site...

Je limite chaque affichage à 50 résultats

Parfois les résultats excèdent ma limite, il y a donc plusieurs pages à afficher si on veut voir les autres résultats...

J'ai donc mis quelque chose qui permet page précédente, page actuelle et page suivante...

Mais cela est trop basic comme fonctionnement, n'utilisant qu'une formule +1 ou -1 selon que l'on avance ou recule de page...

Moi, j'aimerais plutôt quelque chose dans le style GOOGLE où il affiche Pages: 1 2 3 4 5 6 7 8 9

Alors je me demande comment réaliser ce coup...

Il faut que la formule génère le nombre de page avec le chiffre (1 2 3 4...) et le lien qui mène à cette page

Ce serait plus beau et + utile qu'un simple affichage de type Page précédente, page actuelle, page suivante comme c'est actuellement sur mon site...

On aurait l'opportunité d'aller directement à la page que l'on veut sans devoir cliquer page suivante ou précédente jusqu'à ce qu'on y arrive finalement...

Quelque chose dans le style de phyMyAdmin qui permet d'aller directement à une page et affiche toutes les pages disponibles en lien direct... (la version que j'ai le présente dans un menu déroulant)

Est-ce qu'une âme charitable pourrait me donner un petit coup de pouce pour réaliser ce pahantasme ???

lolll

Merci !!!

14 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 3
1 juin 2004 à 19:33
Salut!
On a une variable $start passée par l'url...

$nb_pages = ceil($nb_results / $nb_results_p_page);
$courant = ceil($start / $nb_results_p_page);

if($courant > 1)
echo '[page.php?start=' . (($courant - 2) * $nb_results_p_page + 1)) . ' Page précédente]';

for($i = 1; $i <= $nb_pages; $i++)
{
if($i == $courant)
echo '' . $i . '';
else
echo echo '[page.php?start=' . (($i - 1) * $nb_results_p_page + 1)) . ' ' $i . ']';

if($i < $nb_pages)
echo ' | ';
}

if($courant < $nb_pages)
echo ' | [page.php?start=' . ($courant * $nb_results_p_page + 1)) . ' Page suivante]';


Voila j'éspère pas voir fait de fautes de code stupides...

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
1 juin 2004 à 19:40
Cela semble à première vue + simple que ce que j'ai pu faire jusqu'ici...

Je vais maintenant tenté de tester cela dans mon environnement (mon site)

je te reviens pour dire ce que ca donne...

pe est-ce un phantasme réalisée ???

lollllll

qui sait, rien n'est impossible...
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 3
1 juin 2004 à 20:04
Oki doki!
D'ailleurs, mon calcul pour trouver le $start en fonction du $i doit pouvoir être simplifié...

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
1 juin 2004 à 20:08
Jusqu'à maintenant c'est ÉCHEC

J'ai une page blanche quand je mets le code dans ma source...

je cherche le problème...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 3
1 juin 2004 à 20:12
Tu as mis quoi comme valeurs pour:
$nb_results_p_page
$nb_results
$start

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
1 juin 2004 à 20:20
wow il faut mettre des valeur à ces endroit là ???

je ne suis qu'un tout petit codeur sur le tas...
je n'avais pas compris que je devais mettre des valeurs qq part...

comment je dois inscrire ces valeurs et où exactement ???

sachant que je veux 50 résultats par pages
et
un nombre de pages illimitées (autant que les résultats en exigeront)

Tu vois c'est pour cela que je gossais...
0
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
1 juin 2004 à 20:22
Ce que j'ai fais ressemble à ceci
es-til possible d'y intégrer ton code là-dedans ???

<code>
//requête de recherche
$req = mysql_query("SELECT * from query_pc where Titre LIKE '%$_GET[query]%' Order by Titre Asc ") or die ("Maintenance en cours... ... ...
Veuillez réessayer ultérieurement");

//on compte les résultats
$res = mysql_numrows($req);
$total_num_page = ceil($res/50);

//----------------------------------------------------------------------
//on ressort les infos par ordres alphabétiques

if (($query != "") AND ($query != " ") AND ($query != "_"))
{

//recherche erronée cpuidle
if ($query == "cpuldle")
{
print " L'ortographe que vous avez inscrit est erronée: $query

Essayez avec l'ortographe suivant: cpuidle";
}
else

//on affiche le nombre de résultats trouvés
if ($res == 0)
{
print " Aucun logiciel correspondant à: $query

Essayez avec un mot clef plus descriptif

Astuce:
au lieu d'inscrire logiciel untel version 1.2.3, inscrivez simplement le mot untel";
}
else
{
print '<center>'.$query.' >> '.$res.' logiciel(s) disponible(s) sur '.$total_num_page.' page(s)</center>
';
}

//On affiche les pages supérieurs au maximum permisif ($cur_page "") {$cur_page 0;}
$page_num = $cur_page + 1;
$page_prec = $cur_page - 1;
$total_num_page = ceil($res/50);
if ($cur_page != "0")
if ($cur_page != "1")
{
$last = $cur_page;
$next = $cur_page + 2;
}
if ($cur_page == "0")
{
$last = '';
$next = $cur_page + 2;
}
if ($cur_page == "1")
{
$last = '1';
$next = $cur_page + 2;
}
if ($cur_page == "2")
{
$last = '2';
$next = $cur_page + 2;
}

$pres = $cur_page +1;

print "<Center>";

if ($total_num_page != 0)
{
print"";
print"<hr width="30%" color="#AA0000">";
$prevpage = $cur_page-1;
$nextpage = $cur_page+1;
if ($page_num != 1){print " << Page $last ";}
if ($total_num_page ! = 1){print " Page $pres ";}
if ($page_num != $total_num_page){print " Page $next >>";}
print"<hr width ="30%" color="#AA0000">
";
}

$limit_str = "LIMIT ". $cur_page * 50 .",50";

//requête de recherche
$req = mysql_query("SELECT * from query_pc where Titre LIKE '%$_GET[query]%' Order by Titre Asc $limit_str");

print'';

while( $sortie = mysql_fetch_array($req))
{

print'<li>'.$sortie[Titre].' [$'.$sortie[Amount].' USD]</li>';

}//fin de boucle
print"
";

}

//on ferme la connexion
mysql_close();
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 3
1 juin 2004 à 20:22
Salut!!!
$start tu la pase par l'url, c le début (LIMIT $start, 50 ds ta requete)

$nb_results c le nombre de résultat de ta requete, tu pourra aussi le passer dans l'url, là tu lui donne une valeur artificielle juste pour rire ;-) ( > 50)

$nb_results_p_page = 50

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 3
1 juin 2004 à 20:27
Alors...

$req = mysql_query("SELECT * from query_pc where Titre LIKE '%$_GET[query]%' Order by Titre Asc ")

-->
$req = mysql_query("SELECT * from query_pc where Titre LIKE '%$_GET[query]%' Order by Titre Asc LIMIT $start, $nb_results_p_page")


Pour compter le nombre de result (tu peux le passer de page en page ensuite, si tu veux pas faire cette requête chaque fois)
$req = mysql_query("SELECT count(*) from query_pc where Titre LIKE '%$_GET[query]%' Order by Titre Asc");

if($req)
{
$retour = mysql_fetch_array($req);
$nb_results = $retour[0];
}


Tu oublie pas de définir $nb_results_p_page à 50.

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
1 juin 2004 à 20:37
ça ci-dessous
$nb_results_p_page
$nb_results
$start

je mets cela comme ceci ???

$nb_pages = ceil($nb_results / $nb_results_p_page);
$courant = ceil($start / $nb_results_p_page);

ce qui donnerait:

$nb_pages = ceil(>50 / 50);
$courant = ceil(0/ 50);

ou quoi...

désolé si je comprends pas vite :-(
0
cs_pyranhaz Messages postés 236 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 13 décembre 2004
1 juin 2004 à 20:48
j'ai mis comme ceci sans succès:

<code>
<?
//on se connecte à la base de donnée
$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");

//sélection de votre base de donnée
mysql_select_db($mysql_base,$db) or die ("erreur de connexion
base");

$nb_results_p_page = 50;
$nb_results = 50;
$start = 0;
$nb_pages = ceil($nb_results / $nb_results_p_page);
$courant = ceil($start / $nb_results_p_page);

//requête de recherche
$req = mysql_query("SELECT * from query_pc where Titre LIKE '%$_GET[query]%' Order by Titre Asc LIMIT $start, $nb_results_p_page ") or die ("Maintenance en cours... ... ...
Veuillez réessayer ultérieurement");

//on compte les résultats
$req = mysql_query("SELECT count(*) from query_pc where Titre LIKE '%$_GET[query]%' Order by Titre Asc");

if($req)
{
$retour = mysql_fetch_array($req);
$nb_results = $retour[0];
}

//----------------------------------------------------------------------
//on ressort les infos par ordres alphabétiques

if (($query != "") AND ($query != " ") AND ($query != "_"))
{

//recherche erronée cpuidle
if ($query == "cpuldle")
{
print " L'ortographe que vous avez inscrit est erronée: $query

Essayez avec l'ortographe suivant: <gras>[page.php?start =' . (($courant - 2) * $nb_results_p_page + 1)) . ' Page précédente]';

for($i = 1; $i <= $nb_pages; $i++)
{
if($i == $courant)
echo '' . $i . '';
else
echo echo '[page.php?start=' . (($i - 1) * $nb_results_p_page + 1)) . ' ' $i . ']';

if($i < $nb_pages)
echo ' | ';
}

if($courant < $nb_pages)
echo ' | [page.php?start=' . ($courant * $nb_results_p_page + 1)) . ' Page suivante]';

print'';

while( $sortie = mysql_fetch_array($req))
{

print'<li>'.$sortie[Titre].' [$'.$sortie[Amount].' USD]</li>';

}//fin de boucle
print"
";

}

//on ferme la connexion
mysql_close();

?>
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 3
1 juin 2004 à 21:18
Salut!!!

$nb_pages = ceil($nb_results / $nb_results_p_page);
$courant = ceil($start / $nb_results_p_page);
A ne pas toucher et à mettre juste avant
if($courant > 1)
echo '[page.php?start=' . (($courant - 2) * $nb_results_p_page + 1)) . ' Page précédente]';

Enlève $nb_results = 50; ca sera déterminé en fonction de ta requête

Juste avant if($courant > 1)
echo '[page.php?start=' . (($courant - 2) * $nb_results_p_page + 1)) . ' Page précédente]';
ajoute:
$start++;

Met
$start = empty($_GET['start']) ? 0 : $_GET['start'] - 1;
en début de script

Pour la suite, je te propose de continuer l'adaptation par mail et/ou msn. Je te laisse m'envoyer ton adresse par MP

@++

R@f

P.S Ca fait mon 200e, :D

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0
nono009 Messages postés 11 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 21 décembre 2005
2 févr. 2006 à 11:51
Bonjour c'est depuis deux heures que j'essaye d'intégrer ces variantes dans mon code ci dessous, sans y arrivé, question bête, quelqu'un peu t-il m'aider.



if ($Nb_Enregistrements > $Nb_Annonces_Page) {
$Nb_Pages = ceil($Nb_Enregistrements / $Nb_Annonces_Page);

for ($i=1; $i<=$Nb_Pages; $i++) {
if ($i != $page) {
$Page_HTML .= " [$i] ";
} else {
$Page_HTML . = " [$i]";
}
}
}
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 3
3 févr. 2006 à 15:57
Salut!
Où est le problème, exactement?

J'ai fais ce code, si ca te tente... :)
http://www.phpcs.com/code.aspx?ID=24067

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
0