Pagination et fichier texte, pour mon forum

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pagination et fichier texte, pour mon forum

Re: Pagination et fichier texte, pour mon forum

par macgawel » 10 juin 2010, 10:39

J'affiche le résultat avec :
echo $ligne2;
Mais cela m'affiche comme message d'erreur : "Array"[/php]
#-o
Ce n'est pas un message d'erreur !
explode() :
"explode() retourne un tableau de chaînes, chacune d'elle étant une sous-chaîne du paramètre string extraite en utilisant le séparateur delimiter."
$ligne2 est un Array, un echo dessus ne fonctionne pas...
Est ce qu'il faut que je définisse $page2 avec un $_GET ? Car la valeur de la variable est transmise dans l'URL de la page et qui est par défaut égal à 1.
Si valeur de la variable est transmise dans l'URL (genre ?page=3), tu dois la récupérer par un $_GET.
En fait, pour être plus précis : suivant la configuration de PHP, il est possible que tu puisses récupérer directement la variable, mais ça dépend de la configuration de PHP et ça pose des problèmes de sécurité. Bref, à éviter...

Sinon, le fichier $filename contient bien tous les messages ? Ils sont séparés par le <table ...> ?
=> Il faudrait n'afficher que les messages correspondants à la page demandée, et penser à remettre la balise table (qui est supprimée avec le explode())

Re: Pagination et fichier texte, pour mon forum

par anthonyde54 » 08 juin 2010, 16:24

Merci pour vos réponses,

J'ai modifier mon code en fonction des remarques :
$file2=fopen($filename,"r");
while (!feof($file2)) {$line2.=fgets($file2,255);}
$ligne2=explode("<table border=0 cellpadding=0 cellspacing=0 bordercolor=CFCFBB>",$line2);
$limit=count($ligne2)-1;
$nbrepage2=ceil($limit/5); 
echo $ligne2;

if ($page2!="") {
$taille2=5;
if ($page2==$nbrepage2) {$taille2=$limit-($taille2*($nbrepage2-1));}
$limit=$limit-($page2-1)*5;}

echo"<br><table border=0 cellpadding=0 cellspacing=0><tr><td>Page : </td><td width=2></td><td>";
for ($op2=1;$op2<=$nbrepage2;$op2++) {
if ($op2!=$page2) 
{echo "<td width=2></td><td> <a href=read_forum3.php?id=$id&page=$page&page2=$op2&depli=$depli&click=$click>$op2</a> </td><td width=2></td>";}
else {echo"<td width=2></td><td>  <div class=\"header\"><a href=read_forum3.php?id=$id&page=$page&page2=$op2&depli=$depli&click=$click>$op2</a></div> </td><td width=2></td>";}
}
echo "</tr></table><br><br>";

fclose($file2);
J'affiche le résultat avec :
echo $ligne2;
Mais cela m'affiche comme message d'erreur : "Array"

Avant j'utilisais :
echo $line2;
qui m'affiche tout les messages.

Est ce qu'il faut que je définisse $page2 avec un $_GET ? Car la valeur de la variable est transmise dans l'URL de la page et qui est par défaut égal à 1.

Re: Pagination et fichier texte, pour mon forum

par macgawel » 08 juin 2010, 15:57

Bonjour.

1. Tu connais la fonction file() ? Ca te simplifierait un peu la vie.
$ligne2 = file($filename); // $ligne2 est un tableau contenant chaque ligne de $filename
2. Sans parler de BDD, c'est un peu osé de stocker ton fichier avec la présentation (c'est ce que je déduis vu le explode() )
Il serait plus judicieux de stocker les messages sous une forme la plus neutre possible, par exemple un fichier CSV qui pourrait en plus contenir plusieurs informations (par exemple : date_message;auteur;contenu)

3. J'ai peut-être râté quelque chose, mais :
if ($op2!=$page2)
Où définis-tu $page2 ?

4. Pareil, je ne vois pas l'endroit où tu affiches le contenu du fichier. $ligne2 te sert à quoi ?

5. C'est sans doute accessoire, mais que se passe-t'il si tu as 6 lignes ?
Réponse :
$limit=count($ligne2)-1; // $limit = 6 - 1 = 5
$nbrepage2=ceil($limit/5); // $nbrepage2 = ceil (5/5) = 1

Re: Pagination et fichier texte, pour mon forum

par stealth35 » 08 juin 2010, 15:35

hello, utilise une base de donnée ou 1 fichier par message, sinon ca va être vite la galère

Pagination et fichier texte, pour mon forum

par anthonydu54 » 08 juin 2010, 15:33

Bonjour, j'ai un problème avec un système de pagination. En effet sur un fichier texte est stocké les messages des membres et j'aimerai limiter l'affichage à 5 résultats par page. Le probleme est que la pagination marche, mais lorsque l'on clique sur n'importe quel numéro de page, tout le fichier texte s'affiche (donc tous les messages).

Voici le code tel qu'il est actuellement : (je le modifie continuellement pour trouver la solution)
$file2=fopen($filename,"r");
while (!feof($file2)) {$line2.=fgets($file2,255);}
$ligne2=explode("<table border=0 cellpadding=0 cellspacing=0 bordercolor=CFCFBB>",$line2);
$limit=count($ligne2)-1;
$nbrepage2=ceil($limit/5); 

echo $line2;

echo"<br><table border=0><tr><td>Page : </td><td width=2></td><td>";
for ($op2=1;$op2<=$nbrepage2;$op2++) {
if ($op2!=$page2) 
{echo "<td width=2></td><td> <a href=read_forum3.php?id=$id&page=$page&page2=$op2&depli=$depli&click=$click>$op2</a> </td><td width=2></td>";}
else {echo"<td width=2></td><td>  <div class=\"header\"><a href=read_forum3.php?id=$id&page=$page&page2=$op2&depli=$depli&click=$click>$op2</a></div> </td><td width=2></td>";}
}
echo "</tr></table><br><br>";
oui le code est moche, mais merci beaucoup de m'aider.