Probleme affichage txt en php

JeanMi66
Invité n'ayant pas de compte PHPfrance

23 juin 2012, 12:08

Bonjour,
J'ai le problème suivant :
- Je traite un formulaire en php sans BDD (en stockant dans un fichier txt)
- J'affiche le resultat en php sur une page HTML :
<?php
$consultez="messages.txt";
=readfile($consultez);
?>


Tout fonctionne très bien sauf que le message saisi dans le champ TEXTAREA du formulaire est retourné sur une seule ligne : je ne parvient pas à forcer un affichage au format de ma page HTML

Qu'est-ce que j'ai oublié ?

ViPHP
xTG
ViPHP | 7331 Messages

23 juin 2012, 12:10

Si tu regardes le code source généré tu verras que les retours à la ligne sont pris en compte.
Mais en HTML il n'y a pas de caractère de retour, c'est une balise : <br />
Il existe en PHP une fonction pour transformer les caractères de retour en balise HTML : nl2br() :)

JeanMi66
Invité n'ayant pas de compte PHPfrance

23 juin 2012, 12:13

Merci mais ou dois-je l'inserrer ?

Voici le code de mise en forme de mon message :

$opinion="Le <b>".$date."</b> note : <b>".$note."</b><br/>
Message posté par <b>".$pseudo."</b> (ville de <b>".$ville."</b> departement <b>".$dpt."</b>) <br />
<i>\n".$message."</i><br />\n<br />";

En fait c'est l'affichage de $message qui pose problème (tout sur une seule ligne)

ViPHP
xTG
ViPHP | 7331 Messages

23 juin 2012, 12:15

$monTexte = 'un texte avec
des retours à la ligne';
$monTexte = nl2br($monTexte);
echo $monTexte; // s'affichera avec les balises <br />

JeanMi66
Invité n'ayant pas de compte PHPfrance

23 juin 2012, 12:17

Pour completer mon problème simplement :

Les visiteurs ne saisissent pas de retour clavier lors de la saisie dans le champ TEXTAREA, du coup, tout s'affiche sur une seule ligne quand je viens recuperer le fichier TXT

ViPHP
xTG
ViPHP | 7331 Messages

23 juin 2012, 12:20

S'ils ne tapent jamais sur la touche entrée je vois mal comment tu peux inventer les retours à la ligne dans ce cas. :roll:

JeanMi66
Invité n'ayant pas de compte PHPfrance

23 juin 2012, 12:30

C'est exactement cela !!!
Le probleme c'est que lors de la saisie dans le champ du formulaire, les retours à la ligne se font automatiquement à l'extrémité droite du cadre du TEXTAREA .
On ne peut effectivement pas inventer des retours non saisis, je suis bien d'accord.

Par contre, je ne m'explique pas pourquoi l'affichage du resultat dans ma page HTML ne se fait que sur une seule ligne :
Le resultat est envoyé à l'intérieur d'une <table> dont la largeur est fixée à 300 par CSS.

Pourquoi le texte ne se module pas à l'intérieur du format de cette table ??

Merci de ton aide ??

Mammouth du PHP | 2278 Messages

23 juin 2012, 12:59

Le problème c'est que lors de la saisie dans le champ du formulaire, les retours VISUELS à la ligne se font automatiquement à l'extrémité droite du cadre du TEXTAREA .
On ne peut effectivement pas inventer des retours non saisis, je suis bien d'accord, mais on peut écrire une petite fonction qui ajoute un saut de ligne tous les +/-n caractères (ex pour 60):
début vaut 0;
tant que début est inférieur à la longueur du texte
{
chercher le premier espace en partant de début avant le 60 ème,
remplacer cet espace par un espace et un saut de ligne;
incrémenter début de (60 + longueur de ce qu'on ajoute)
mettre à jour la longueur du texte
et recommencer
}
:
Merci de ton aide ??
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD