Un bouton pour voir les anciens messages

Eléphant du PHP | 116 Messages

31 mars 2010, 16:04

Bonjour,

Je suis entrain de faire un shoutbox, et lors de l'affichage de la page, je n'affiche que les 10 derniers messages postés.
$sql = "SELECT * FROM $table_shoutbox ORDER BY idmessage DESC, date DESC, heure DESC LIMIT 10";
Ensuite les résultats apparaisse dans un tableau.

J'aimerai faire deux fleche, comme un scroll bar, et si on clic sur celle du bas, que la page se recharge avec une requêtes qui affiche les 10 entrés précédentes etc...
Afin de pouvoir revenir sur les anciens messages.

Je n'ai aucun idée par ou commencer, il faudrait aussi une flèche vers le haut, pour remonté.
Je me demande ce qu'il se passe quand on arrive au bout de la table d'un coté comme de l'autre.

J'ai jusqu'à présent toujours évité de faire ça, mais j'ai appris pas mal de chose ici sur le forum et je doute pas que quelqu'un saura me renseigner.

merci d'avance

Dimitri

ViPHP
ViPHP | 2287 Messages

31 mars 2010, 16:09

Bonjour,

La clause LIMIT de MySQL accepte un deuxième paramètre optionnel qui sert justement à ça :)

Un petit tour par le tuto qui va bien : faq-tutoriels/afficher-des-elements-pag ... t8874.html
if(!@work()){ Nespresso(); } else { what(); }
______________________________

ViPHP
ViPHP | 5462 Messages

31 mars 2010, 16:11

grace CALC_FOUND_ROWS, tu pourras savoir ne nombre d'entre de ta requete sans prendre en compte le LIMIT, apres c'est des math simple pour les fleche (+10 (si il en reste au moins 10) et inversement)

Eléphant du PHP | 116 Messages

31 mars 2010, 17:13

Merci pour vos réponses, je viens d'étudier l'exemple, le tutorial.

Il y a malheureusement des lignes qui ont été transformer, j'ai essayé de les retapés pour le faire fonctionner mais rien à faire.

Il y a vraiment beaucoup de variable, ca m'a l'air tres compliqués, j'ai compris la moitié du code.
L'autre moitié concerne une indexation par pages :

1/2/3/4/5 etc...

Finalement la partie qui m'intéresse reste maigre, à part calculé le nombre de page total jusqu'ou je peux aller, mais je ne s'aurai pas quoi en faire pour ce que je veux faire..

Il y a pas un moyen plus simple de faire un boutons qui peu simplement incrémenter de 10 ma limit et un autre pour la réduire de 10?

Stealth35, ton article est un peu compliqué pour moi, j'essai t'en bien que mal d'apprendre vite, je sais pas comment tourné toute ces formules.

Je comprend au moins que la solution est sous mon nez ^_-

Mammouth du PHP | 672 Messages

31 mars 2010, 17:48

En fait, ça dépend...

- Tu veux travailler en PHP pur, ou utiliser du JavaScript ?
- Il va y avoir de l'activité ?

En PHP pur (et aussi en AJAX), le principe c'est :
- Récupérer la "page" demandée.
Si le shoutbox est dans la page mapage.php, un clic sur une flèche pointera sur mapage.php?page=<page_précédente/suivante>.
Exemple de script basique - il faut le sécuriser et faire les tests pour éviter de vérifier que la page demandée existe...
$messages_par_page = 10;
$page= $_GET['page'];
// la Requête SQL à passer. On utilise LIMIT debut, nombre
$sql = "SELECT * FROM $table_shoutbox ORDER BY idmessage DESC, date DESC, heure DESC LIMIT $page, $messages_par_page";
//On construit les liens page précédente/page suivante
$page_precedente = $page -1;
$page_suivante = $page + 1;
$lien_page_prec = '<a href="mapage.php?page='.$page_precedente.'">préc.</a>';
$lien_page_suiv = '<a href="mapage.php?page='.$page_suivante.'">suiv.</a>';
// On récupère les messages grâce à la requête, et on affiche le tout

Eléphant du PHP | 116 Messages

01 avr. 2010, 09:44

Merci magwell, je regarde cela et je travail dessus, je te dis si c'est bien ce que je cherche, en mélangant ca et le tutorial qu'on ma déjà donné, je pense pouvoir arriver à mes fin. Je travail dessus :)

Eléphant du PHP | 116 Messages

01 avr. 2010, 10:57

Salut.

Merci ca fonctionne.
Je n'ai pas fais disparaitre le liens pages précédente, mais je l'ai rendu inactif quand on est sur la page 1, mon code est moins compliqué et je comprend ce que j'ai fais au moins.


Voila à quoi ca ressemble, qu'en pensez vous (j'ai changer le get page en get feuille car je me sers deja du get page sur toute les pages:
$messages_par_feuille = 10;

if (empty($_GET['feuille']))
{
$feuille = 0;
}
else
{
$feuille = $_GET['feuille'];
}
$sql_nb = "SELECT COUNT(*) FROM $table_shoutbox";
$resultat_1 = mysql_query($sql_nb);
$nb_msg = mysql_result($resultat_1, 0);
$nb_pages = ceil($nb_msg / $messages_par_feuille);

	if($nb_pages > 1 && $feuille == 0)
    {
	$feuille_precedente = $feuille - 0;
	}
	elseif($nb_pages > 1)
	{
	$feuille_precedente = $feuille - 10;
	}

$feuille_suivante = $feuille + 10;
$lien_feuille_prec = '<a href="acceuil.php?page='.$show_shoutbox.'&feuille='.$feuille_precedente.'">préc.</a>';
$lien_feuille_suiv = '<a href="acceuil.php?page='.$show_shoutbox.'&feuille='.$feuille_suivante.'">suiv.</a>';
$link_page = ''.$lien_feuille_prec.'&nbsp;|&nbsp;'.$lien_feuille_suiv.'';

$sql = "SELECT * FROM $table_shoutbox ORDER BY idmessage DESC, date DESC, heure DESC LIMIT $feuille, $messages_par_feuille";