|
Dernière réponse | |
---|---|
Sujet : [PHP MySQL] Retour chariot non pris en compte dans les champs | |
slr56 | Il y a bien longtemps (15 ans...), dans une galaxie lointaine, très lointaine...
Esperado se réveilla ! ^^ |
Aperçu |
---|
Vue Rapide de la discussion |
---|
slr56 | Il y a bien longtemps (15 ans...), dans une galaxie lointaine, très lointaine...
Esperado se réveilla ! ^^ |
esperado |
|
Toto21 | ça y est!!!!!!
c bon g réussi!!! J'ai fini par y aller en faisant de essais... en enlevant bien le HTMLENTITIES... Trop con!!! Merci à tous @+ Toto21 |
Toto21 | bah je fais comment alors pour afficher le résultat de ma requête sans utiliser le HTMLENTITITES?? |
FLY LM |
|
Maxaks | ben regarde :
pour formater le texte : htmlspecialchars() => pour virer tous les tags HTML nl2br() => pour transformer les sots de ligne en <BR> et voila pour ton textarea, il fo précise le WRAP en Virtual :hello: |
Toto21 | et pi moi...une petite aide non? |
Maxaks |
|
Toto21 | :sweat: je voudrais pas être chaint...mais j'y arrive toujours pas!!!! :cry: En fait je résumé un peu plus... Sur mon site, les gens rentrent du texte avec d'autres données (auteur, e-mail, titre...) Donc je fais mon formulaire avec un textarea pour le texte et j'envoi tout ça dans une base de données... Et c'est peut être là que je m'y prend mal... Parce que je veux ensuite que tout ça soit affiché sur une page donc je fais une requête : $query = "SELECT * FROM nouvelle" . " ORDER BY date desc;"; $result = mysql_query($query); et après j'affiche le résultat ligne par ligne : while ($r = mysql_fetch_array($result)) { echo "<TR><TD bgcolor=\"#000000\"><FONT SIZE=\"2\" FACE=\"verdana\" COLOR = \"white\"><B>", htmlentities($r["titre"]), "</TD><TD></TD></TR>"; echo "<TR><TD><FONT SIZE=\"1\" FACE=\"verdana\">Le ", htmlentities($r["date"]), "</TD<TD></TD></TR>"; echo "<TR><TD><FONT SIZE=\"1\" FACE=\"verdana\">De ", htmlentities($r["auteur"]), ", <A HREF=\"mailto:", htmlentities($r["mail"]), "\">"; echo htmlentities($r["mail"]), "</TD<TD></TD></TR>"; echo "<TR><TD height=\"10\"></TD><TD></TD></TR>"; echo "<TR><TD><FONT SIZE=\"1\" FACE=\"verdana\">", htmlentities($r["texte"]), "</TD><TD></TD></TR>"; } et il doit y avoir un pb ici...comment est ce que je peux faire pour que ça s'affiche bien!!! Il faut que je traite les infos séparément pour avoir une mise en forme spéciale... Titre sur fond noir par ex. Ch'ui qu'un newbie moi! Alors aidez moi! |
FLY LM |
|
FLY LM | Pour toto21 :
1. l'utilisateur saisie son texte dans la zone du <textarea>...</> 2. tu peux comme te l'a dit Youdontcare stocker dans ta base de données le texte traité, c.a.d tu remplaces les \n par des <br> au moyen de la fonction nl2br(). 3. lorsque tu veux afficher le texte dans une page HTML (pas dans un textarea), tu a juste à faire ta requête et voilà c'est bon, pas de traitement à effectuer... 4. Lorsque tu veux éditer le texte, tu le replaces dans une zone "textarea" ce qui t'impose de traiter le contenu du texte. Tu fais ta requête et là et seulement là tu utilises le str_replace("<br>", "\n", $texte); afin que les sauts de ligne soient bien affichés dans ton textarea... Lorsque tu valides l'édition, tu utilises à nouveau le nl2br() afin de remplacer les \n par des <br> et tu stockes le résultat traité en base de données... C'est simple non ??? |
Maxaks | ouaiche :D |
FLY LM |
|
Maxaks | a oki :) tu sais po pk ca me fé pas des sauts de lignes automatiques ? |
FLY LM | Non non rien, ça a cliqué malgré moi... |
Maxaks | De quoi ? |
FLY LM | Oups, j'ai rien dit... [edtdd]--Message édité par fly LM--[/edtdd] |
Maxaks | J'ai le mem blem moi aussi, mais j'arrive quand meme à prendre en compte les SAUTS de lignes manuels (quand on fé ENTREE) mais pas ceux qui se font auromatikement ...
toto => Dans les propriétés de la Textarea tu met WRAP=VIRTUAL Et pis avant la requette mysql tu fé nl2br et pis ca march (a moitié) Pliz help :hello: |
Toto21 | faut que je fasse comment alors!!??? |
FLY LM | C'est la fonction htmlentities() qui te fait cela, elle convertit tous les caractères spéciaux en entité HTML. le < se trouve transfrormé en < le > en > etc... |
Toto21 | Bah ma syntaxe c'est dèjà dit plus haut!!!
$texte = nl2br($texte); $texte = str_replace("<br>", "\n", $texte); et pour afficher le résultat : $query = "SELECT * FROM nouvelle" . " ORDER BY date desc;"; $result = mysql_query($query); while ($r = mysql_fetch_array($result)) { echo "<TD><FONT SIZE=\"1\" FACE=\"verdana\">", htmlentities($r["texte"]), "</TD>" } et ben en résultat, j'ai les <BR> qui s'affichent!!! Kes ki va pas? |
youdontcare |
c'est pour la compatibilité xhtml, pas xml. ça veut juste dire qu'il faut fermer toutes les balises, donc un <br> doit être fermé par </br>. le raccourci pour fermer une balise unique est juste de rajouter le slash à la fin : <br />, <img src='..' />, etc. |
skylight |
|
youdontcare |
2 solutions : 1) soit tu fais les transfos à l'affichage (plus lent), 2) soit tu les fais directement dans la db, et tu les refais pour l'édition.
|
PaLoTTe |
|
PaLoTTe |
|
Toto21 | Répondez moi les zamis!
Quelle syntaxe exacte fo que je mette avec le str_replace... Paske moi ça marche po... Merci @+ |
youdontcare |
ok :) moi je convertis tout à chaque fois pour ne rien avoir à faire à l'affichage. je fais pas mal de str_replace() pour les smileys (méthode sûrement pas top), mais j'avoue que je n'ai jamais testé la vitesse en faisant toutes les transfos à l'affichage. l'idéal (je pense) serait de garder deux champs : le texte original tel qu'entré par l'utilisateur, et le texte 'caché' avec les smileys insérés, les <br>, etc ... mais bon ça boufferait 2x plus. |
FLY LM | Quoique, cela peux être pratique de traiter avant de stocker, surtout pour un forum comme ici, ou il y a surtout de l'affichage plus que de l'édition de post...
J'aimerai bien savoir dans quel sens il font leur traitement... |
FLY LM |
|
Toto21 | :cry: |
Toto21 | je comprend rien les zamis!!!
j'ai essayé de faire $texte = nl2br($texte); $texte = str_replace("<br>", "\n", $texte); ça marche tj po!!! Je précise que j'appelle mon texte par le code <TD><FONT SIZE=\"1\" FACE=\"verdana\">", htmlentities($r["texte"]), "</TD> ...qu'est ce qui va pas? Mon texte s'affiche tj sans les retours à la ligne...Qu'est ce qu'il faut que je mette exactement? Merci à tous!!!!! |
youdontcare |
tu fais ce genre de transformations à l'affichage ? les smileys aussi ? :??: |
FLY LM | Tu stockes tes données en brut (avec les \n)
Il y a qu'a l'affichage hors <TEXTAREA..></..> que tu utilises nl2br() @+ |
youdontcare | tu remplaces '<br>' par '\n' avec str_replace() avant de balancer le texte dans le textarea.
edit : attention aux dernières versions de php qui insèrent <br /> et non pas <br>. [edtdd]--Message édité par youdontcare--[/edtdd] |
Toto21 | :cry: |
Toto21 | ah ouais mais mintenant...il y a un autre problème!
C'est que quand il y a des retours à la ligne, quand j'affiche le résultat, j'obtiens test avec... <br> retour à la <br> ligne comment faire pour que le <BR> soit bien interprété? |
PaLoTTe | pour prendre en compte les retours, avant ke tu envoies ton text a ta base, tu tapes :
$text = nl2br($text); et apres tu peux envoyer !! |
Toto21 | ReSlt à tous!
Voilà, g ds une page un champ de saisie en <TEXTAREA>... Seul problème, quand je saisi du texte ds ce champ avec des retours à la ligne, et que je met cette variable dans une table, quand je veux afficher ce qu'il y a dans cette table, est ben tous les retours à la ligne ont disparus! |