Page 1 sur 1

Pagination et fichier texte

Posté : 24 janv. 2013, 12:31
par Bulot
Bonjour à tous,

J'utilise un script très simple (peut être trop simple) qui enregistre le pseudo, le courriel et le message des visiteurs directement en ligne codée intégrant du html dans un fichier texte grâce à la fonction fopen

Je souhaiterais créer une pagination : au bout de 5 message par page on créer une nouvelle page accessible par lien cliquable.

Pour cela j'ai utilisé explode en repérant les fins de messages <hr /> et fopen
Pour l'instant je n'ai réussi qu'à faire des script très simples et je n'avance vraiment sur celui ci. Pourriez vous me venir en aide en organisant les informations par des tableaux pour créer cette pagination s'il vous plait.

Re: Pagination et fichier texte

Posté : 24 janv. 2013, 14:27
par Huitre
OOOooh lalalalala! Répondez moi s'il vous plait! SI je n'envoies pas le script ce soir ils vont éliminer toute ma famille retenue en otage :cry:

Re: Pagination et fichier texte

Posté : 24 janv. 2013, 15:03
par xTG
Beh j'ai bien lu ton message mais je n'ai pas trouvé de question...
Pourriez vous me venir en aide en organisant les informations par des tableaux pour créer cette pagination s'il vous plait.
Moi je n'y interprète que "je cherche quelqu'un pour me fournir un code".
Et là je pourrai répondre comme à d'autres, c'est dans la catégorie Emploi qu'il faut poster. :)

Mais sinon cela peut être intéressant un bon repas, les repas de fête se font loin déjà. 8-)

Re: Pagination et fichier texte

Posté : 24 janv. 2013, 17:36
par Bulot
Les ravisseurs m'ont laissés 24h supplémentaires
Voila ce que j'ai commencé rapidement
<?php
   $nb = 5; // Nombre d'affichage par page

	$file = "messages/messages.txt";
    if (file_exists($file))   
	// Ouverture en lecture seul!
    $axfile = fopen($file, "r" ); 
    else { echo "Mauvais chemin de fichier on stoppe tout!"; exit(); }
    $table = array();
    $i=0 ;
    // lecture complète du fichier
    while(!feof($axfile))
    {
    // Pompage d'infos    
    $ligne = fgets($axfile,4096); // Récupération     
    $nbmsg = explode("<hr />",$ligne);
    }

    $nbritem=count($table); 
	echo $nbritem;
	// Nombre de résultats par page
?>
Sinon comme je l'ai dit en début de poste, j'écris dans un fichier texte le contenu ou $data que voici:
// Récupération du pseudonyme et du message.
$data = '<u><i><b><a href="mailto:'.($_POST['courriel']).'">'.($_POST['pseudo']).'</a></i></b></u> a laissé ce message le <b>'.date($cfg['format_date']).'</b></p><p>'.clean($_POST["message"]).'</p><hr />';
Mes questions: Comment dois je procéder pour créer une pagination des informations de ce fichier texte ?
Est ce bien parti : problèmes de sécurité par exemple? Si oui comment y remédier

Re: Pagination et fichier texte

Posté : 24 janv. 2013, 17:46
par xTG
Il te manque un fclose() dans ton code.
Mais sinon le plus simple est d'utiliser un file_get_contents() pour récupérer tout le contenu du fichier dans un buffer.

Tu as donc ton array avec les différents messages.
Il ne te manque donc pas grand chose. Un peu de math et de mise en pratique de la récupération d'infos.
Savoir quelle est la page courante et appliquer un petit calcul pour aller jusqu'au message et ensuite afficher les X messages suivants.

Code : Tout sélectionner

pageCourante = 0; // ou sinon on prend une valeur passée en GET nbParPage = 5; // disons qu'on affichage 5 messages par page indexMin = pageCourante * nbParPage; // calcul de l'index du premier message à afficher indexMax = pageCourante * nbParPage + nbParPage; Si indexMin < 0 || indexMin > count(table) Alors // on est hors tableau là ! Sinon TantQue indexMin < indexMax Faire Afficher table[indexMin]; indexMin++; FinTanQue FinSi
Et hop on a notre page. ;)
Pour lister la liste des pages et faire des liens avec :

Code : Tout sélectionner

index = 0; TantQue nbrItem < (index +1) * nbParPage Faire Afficher index; // numéro de page commençant à 0 index++; FinTantQue

Re: Pagination et fichier texte

Posté : 24 janv. 2013, 18:33
par AB
xTG t'a donné le principe, mais je me demande si tu devrais continuer dans cette voie d'utiliser un fichier texte. Cela ne va pas te faciliter les choses par la suite surtout si tu veux faire du tri, des recherches etc. Si ton volume de données devient important et/ou si tu veux des fonctionnalités avancées, il vaudrait mieux te tourner vers une base de donnée.

Re: Pagination et fichier texte

Posté : 24 janv. 2013, 18:38
par Bulot
Avant > :) Après> :shock:

Moui ça j'ai lu sur internet mais c'est pour la récupération d'informations et ce foutu tableau j'ai l'impression que ça ne fonctionne pas il m'affiche des choses aberrantes même en trifouillant.

Pour ce qui est du get_file_contents j'ai lu les informations sur cette balise et je ne vois pas du tout comment l'exploiter.
Je suis beaucoup plus à l'aise avec du langage css ou html qu'avec du Peup

Re: Pagination et fichier texte

Posté : 24 janv. 2013, 18:52
par AB
Avant > :)
Pour ce qui est du get_file_contents j'ai lu les informations sur cette balise et je ne vois pas du tout comment l'exploiter.
Je suis beaucoup plus à l'aise avec du langage css ou html qu'avec du Peup
Ben suffit de regarder la doc. get_file_contents t'évites la litanie des fopen,fget, fclose...

Et donc il te suffit de faire
$file = "messages/messages.txt";
    if (file_exists($file))   
{
$text = get_file_contents($file);

// dans $text tu as maintenant tout le contenu du fichier texte
}
et si tu préfère avoir un tableau correspondant à tes lignes tu peux utiliser la fonction file()

Re: Pagination et fichier texte

Posté : 25 janv. 2013, 15:32
par Bulot
Pas de base de données non

J'ai fais des tones d'essais en local mais y'a rien à faire. Get_file_content survole l'ensemble du fichier texte mais ne peut compter le nombre de messages mis en vrac.

En observant d'autres script type " flat" j'observe qu'ils se limitent pour la plupart à à deux liens "Messages suivants" et "précédents"

Re: Pagination et fichier texte

Posté : 25 janv. 2013, 15:35
par xTG
get_file_content() ne compte en effet pas les lignes puisqu'il ne fait que récupérer le contenu du fichier !
Il remplace juste dans ton script : fopen(), ta boucle sur fgets() et fclose().
Après il faut bien utiliser un explode et un count. ;)

Re: Pagination et fichier texte

Posté : 26 janv. 2013, 13:12
par Bulot
C'est bon j'ai trouvé de quoi résoudre mon problème et c'est aussi grâce à vous. Un grand merci