OVH Cloud OVH Cloud

Affichage texte

5 réponses
Avatar
Transat :O)
Bonjour,

question de gros debutant.

sur un site, j'ai plusieures toutes identiques a la difference du texte. Je
desire donc tout gerer via le PHP et des fichiers texte reprenant les
differents chapitres.

Pour l'affichage d'une page simple avec 1 chapitre je sais faire:

$fichier = fopen ("monfichier.txt","r");
$contenu=fread($fichier, filesize("monfichier.txt"));
echo $contenu;

Maintenant, je veux faire 3 chapitres, donc 3 fichiers texte avec comme nom
monfichier1.txt, monfichier2.txt et monfichier3.txt

J'ai utilise la commande:
$page = array("monfichier.txt", "monfichier2.txt", "monfichier3.txt");

et une boucle type:
for ($i = 0; $i < 3; $i++)
{
$fichier = fopen ($page[$i],"r");
$contenu=fread($fichier, filesize($page[$i]));
echo $contenu;
}

Est-il possible de se passer de la commande array et de mettre directement
dans la boucle (ou une autre fonction) l'affichage des 3 fichiers texte
avec increment auto (monfichier$i.txt)?

Pour 3 chapitres je penses faire 3 fichiers texte. Mais est-il possible de
n'avoir que 1 fichier et que le saut de chapitre soit gere en automatique
(sans balise <BR> par exemple) ?

Merci pour votre aide.

--
Transat :O)

5 réponses

Avatar
G Roydor
Transat :O) a écrit:
Bonjour,

question de gros debutant.

sur un site, j'ai plusieures toutes identiques a la difference du texte. Je
desire donc tout gerer via le PHP et des fichiers texte reprenant les
differents chapitres.

Pour l'affichage d'une page simple avec 1 chapitre je sais faire:

$fichier = fopen ("monfichier.txt","r");
$contenu=fread($fichier, filesize("monfichier.txt"));
echo $contenu;

Maintenant, je veux faire 3 chapitres, donc 3 fichiers texte avec comme nom
monfichier1.txt, monfichier2.txt et monfichier3.txt

J'ai utilise la commande:
$page = array("monfichier.txt", "monfichier2.txt", "monfichier3.txt");

et une boucle type:
for ($i = 0; $i < 3; $i++)
{
$fichier = fopen ($page[$i],"r");
$contenu=fread($fichier, filesize($page[$i]));


essayez
$fxx="monfichier".$i.".txt","r";
$fichier = fopen ($fxx,"r");
$contenu=fread($fichier , filesize($fxx);

echo $contenu;
}

Est-il possible de se passer de la commande array et de mettre directement
dans la boucle (ou une autre fonction) l'affichage des 3 fichiers texte
avec increment auto (monfichier$i.txt)?

Pour 3 chapitres je penses faire 3 fichiers texte. Mais est-il possible de
n'avoir que 1 fichier et que le saut de chapitre soit gere en automatique
(sans balise <BR> par exemple) ?

Merci pour votre aide.



Avatar
Sebastian Lauwers
Transat :O) wrote:
Bonjour,

question de gros debutant.

sur un site, j'ai plusieures toutes identiques a la difference du texte. Je
desire donc tout gerer via le PHP et des fichiers texte reprenant les
differents chapitres.


[...]

for ($i = 0; $i < 3; $i++) {

if ($i == 0) {

$page = 'monfichier.txt';

}
else {

$page = 'monfichier'.$i.'.txt';

}

$fichier = fopen ($page, "r");
$contenu = fread ($fichier, filesize($page));
echo $contenu;
}


Merci pour votre aide.



HTH,
Sebastian

Avatar
Antoine Dinimant
sur un site, j'ai plusieures [pages] toutes identiques a la
difference du texte.


c'est un pb classique, dit des "pseudo-frames".

Pour l'affichage d'une page simple avec 1 chapitre je sais faire:
$fichier = fopen ("monfichier.txt","r");
$contenu=fread($fichier, filesize("monfichier.txt"));
echo $contenu;


à ta place, j'utiliserai plutôt un require ou un include :

include('monfichier.txt') ;

Maintenant, je veux faire 3 chapitres, donc 3 fichiers texte avec comme nom
monfichier1.txt, monfichier2.txt et monfichier3.txt
Est-il possible de se passer de la commande array et de mettre directement
dans la boucle (ou une autre fonction) l'affichage des 3 fichiers texte
avec increment auto (monfichier$i.txt)?


oui, bien sûr :

for ($i = 0; $i < 3; $i++)
{
$fichier = fopen ("monfichier$i.txt","r");
$contenu=fread($fichier, filesize($page[$i]));
echo $contenu;
}

Pour 3 chapitres je penses faire 3 fichiers texte. Mais est-il possible de
n'avoir que 1 fichier et que le saut de chapitre soit gere en automatique
(sans balise <BR> par exemple) ?


je ne suis pas très sûr de bien comprendre, mais j'essaie de te répondre
quand même. Je suppose, par exemple, que ton saut de chapitre est
matérialisé par trois étoiles centrées. La première solution, compatible
avec un include, est de mettre le "saut de chapitre" directement dans
ton fichier :

blabla chapitre 1
<p alignÎnter>***</p>
blabla chapitre 2

Une seconde solution serait de coder dans ton fichier .txt le changement
de chapitre, par un caractère ou une séquence qui ne peut pas apparaître
naturellement, par exemple une tabulation verticale ou un code genre
§#§. Ensuite tu lis le contenu dans une chaîne comme tu le fais, tu la
sépare sur ton code (cf fonction explode) et ça te fait tes chapitres.

Avatar
Transat :O)
G Roydor a ecrit avec 2 doigts
news::

essayez
$fxx="monfichier".$i.".txt","r";
$fichier = fopen ($fxx,"r");
$contenu=fread($fichier , filesize($fxx);


Merci ca marche

juste le code exact est:
$fxx="monfichier".$i.".txt";
$fichier = fopen ($fxx,"r");
$contenu=fread($fichier , filesize($fxx));

Ca m'a fait avancer d'un grand pas :o))

--
Transat :O)

Avatar
Transat :O)
Antoine Dinimant a ecrit avec 2 doigts
news::

Une seconde solution serait de coder dans ton fichier .txt le changement
de chapitre, par un caractère ou une séquence qui ne peut pas apparaître
naturellement, par exemple une tabulation verticale ou un code genre
§#§. Ensuite tu lis le contenu dans une chaîne comme tu le fais, tu la
sépare sur ton code (cf fonction explode) et ça te fait tes chapitres.


Merci.

En fait j'ai fait comme tu as dit.

Au depart, j'avais fait les pages en HTML:

Chapitre1
<P>
Chapitre2
<P>
Chapitre3

Comme j'en suis a 630 pages, ca fait lourd et je ne veux pas tout retaper,
voila pourquoi je cherches une solution PHP.

J'ai trouve cette solution (avec l'aide de G.Roydor, Sebastien Lauwers et
la tienne):

<?php
$fxx="monfichier.txt";
$fichier = fopen ($fxx,"r");
$contenu=fread($fichier , filesize($fxx));
$contenu=ucfirst($contenu);
$contenu=str_replace("***" , "<P>", $contenu);
echo ($contenu);
?>

Ainsi, si j'oublie une majuscule elle est mise ne automatique (ucfirst) et
en inserant la chaine "***" dans le fichier texte, j'ai ma fonction qui
fait le remplacement par "<P>". Et le tour est jouer... :o))

Encore merci a vous 3.

--

Transat :O)