IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Passer à la ligne à la fin d'une phrase


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut Passer à la ligne à la fin d'une phrase
    Bonjour,

    Je voudrais savoir si c'est possible de passer à la ligne dans une extraction de champs de ma base de données.

    Je m'explique :

    J'ai dans ma base une table "toto" avec un champ "toto_texte", via PhpMyAdmin, je lui attribue la valeur : "Il y a du soleil. Le chien joue dehors"

    Ensuite sur mon site, via une requete, j'appelle ce champs que j'affiche via un echo.

    Il va apparaitre tel quel sur le site. Est-ce possible de le faire passer à la ligne à la fin de la première phrase ?

    Merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Une possibilité basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $chaine = "Il y a du soleil. Le chien joue dehors";
    $chaine = str_replace(". ", ".<br/>", $chaine);
    echo $chaine;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    N'ayant pas eu le temps de voir ça avant. Je m'y intéresse maintenant.

    En fait, mon texte est stocké dans ma BDD.

    Je fais donc la requete suivante pour l'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     		<?php
    		$sql="SELECT texte FROM dynamique WHERE dyn_='présentation' ";
     
    		$res_sql=mysql_query($sql)
    		     or die (mysql_error());
     
    		$data = mysql_fetch_assoc($res_sql)
     
    		echo $data[texte]
     
    	 	?>
    Pour intégrer ce code, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     		<?php
    		$sql="SELECT texte FROM dynamique WHERE dyn_='présentation' ";
     
    		$res_sql=mysql_query($sql)
    		     or die (mysql_error());
     
    		$data = mysql_fetch_assoc($res_sql)
     
    		$data_rep = str_replace(".// ", ".<br/>", $data);
     
                    echo $data_rep[texte];
     
    	 	?>
    Mais il me met cette erreur : Parse error: syntax error, unexpected T_VARIABLE in index.php on line 18

    Merci pour votre aide.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    il te manque un point-virgule.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par sabotage Voir le message
    il te manque un point-virgule.
    Pour le point-virgule, ça doit être en recopiant.

    La ligne 18 correspond à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $data_rep = str_replace(".// ", ".<br/>", $data);

  6. #6
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $data_rep = str_replace(".// ", ".<br/>", $data[texte]);
     
    echo $data_rep;
    t essais de remplacer un caractère dans un tableau de données ça risque pas de marcher.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  7. #7
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    C'est bizarre que personne réagit, mais de mon coté je ne parviens pas comprendre l'intérêt de "forcer" les retours chariots.

    La 1ère question, c'est : D'où vient le contenu ?
    Et sous entendu, pourquoi le contenu ne comporte t-il pas naturellement de saut de ligne ?

    Comme ça, je dirais que c'est à l'utilisateur, à celui qui rédige de mettre de la ponctuation là ou il faut (un point, une virgule, retour à la ligne, voir même retour à la ligne + une ligne vide, etc, etc ...).

    Donc pourquoi l'utilisateur n'est pas capable de faire des retours à la ligne ?
    Pourquoi mettre à jour des données directement dans PhpMyAdmin ?
    Ou alors, n'est ce pas parce que coté interface c'est un champ INPUT de type TEXT qui est utilisé au lieu d'un TEXTAREA qui lui permet de faire des sauts de lignes ?


    Aussi, remplacer les .(espace) par des <br /> n'est pas forcément la meilleur chose à faire, car si ce même contenu doit être intégré dans un autre contexte, les <br /> ne signifieront rien.
    Les <br /> ne seront interprétés QUE par les navigateurs, c'est très limité en faite.
    Par contre, un \n (ou \r\n ou mieux PHP_EOL) est bien plus standard.
    En plus, il existe la fonction nl2br() en Php qui permet de faire les remplacements, ou alors <pre></pre>


    Bref ... n'y a t-il pas moyen d'éviter de faire ces remplacements ?
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Citation Envoyé par Vil'Coyote Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $data_rep = str_replace(".// ", ".<br/>", $data[texte]);
     
    echo $data_rep;
    t essais de remplacer un caractère dans un tableau de données ça risque pas de marcher.
    Je vais essayer ça ce soir !

    Et pour répondre à RunCodePhp :

    Citation Envoyé par RunCodePhp Voir le message
    La 1ère question, c'est : D'où vient le contenu ?
    Et sous entendu, pourquoi le contenu ne comporte t-il pas naturellement de saut de ligne ?
    En fait le contenu, provient d'un champ de ma base de données (comme tu avais du le comprendre).


    Citation Envoyé par RunCodePhp Voir le message
    Comme ça, je dirais que c'est à l'utilisateur, à celui qui rédige de mettre de la ponctuation là ou il faut (un point, une virgule, retour à la ligne, voir même retour à la ligne + une ligne vide, etc, etc ...).
    Tout à fait d'accord, c'est ce que je cherche à faire (et si possible le plus simplement possible)

    Citation Envoyé par RunCodePhp Voir le message
    Donc pourquoi l'utilisateur n'est pas capable de faire des retours à la ligne ?
    Parce que si il tape, dans son formulaire, "entrée" : il ne sera pas retransmis dans la base de données

    Citation Envoyé par RunCodePhp Voir le message
    Pourquoi mettre à jour des données directement dans PhpMyAdmin ?
    Parce que l'utilisateur est succeptible de changer ! (et il ne connait rien en html/php.

    Citation Envoyé par RunCodePhp Voir le message
    Ou alors, n'est ce pas parce que coté interface c'est un champ INPUT de type TEXT qui est utilisé au lieu d'un TEXTAREA qui lui permet de faire des sauts de lignes ?
    Possible, mais si il tape dans un textarea sa ponctuation, elle ne va pas être garder dans ma BDD ?

    Citation Envoyé par RunCodePhp Voir le message
    Aussi, remplacer les .(espace) par des <br /> n'est pas forcément la meilleur chose à faire, car si ce même contenu doit être intégré dans un autre contexte, les <br /> ne signifieront rien.
    Les <br /> ne seront interprétés QUE par les navigateurs, c'est très limité en faite.
    Par contre, un \n (ou \r\n ou mieux PHP_EOL) est bien plus standard.
    En plus, il existe la fonction nl2br() en Php qui permet de faire les remplacements, ou alors <pre></pre>
    Je trouvais bien la solution de Sabotage, qui pouvait donc me dépanner.
    Sinon pour le \n ou nltobr(), je ne suis pas assez callé !

    Citation Envoyé par RunCodePhp Voir le message
    Bref ... n'y a t-il pas moyen d'éviter de faire ces remplacements ?
    Si je le pouvais, ça serait avec grand plaisir.

    J'espère avoir répondu à toutes tes questions !

  9. #9
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    je vais ajouter mon petit grain de sel :p
    tu indiques que dans le formulaire lorsque l'on tape sur entré cela valide le formulaire. Tu indiques aussi vouloir changer d'autre chose dans les éléments saisie mais aussi que ton ou tes utilisateurs finaux ne connaisse pas l'html d'ou la modification dans phpmyadmin.


    pour tout cela je me pose une seule et unique question. Pourquoi ne pas avoir utiliser un éditeur de texte en ligne tel que fckeditor, tinymce etc ... ce genre d'outil permet une saisie dans un formulaire de texte et se charge de la génération du code html nécessaire au bon affichage.
    charge à toi par le suite de stocker les données issue de cet outil en base de données pour pouvoir les relire par la suite.
    la vie n'est pas cirrhose des foies ...

    Avant de poster un message Rechercher n'est pas qu'une option.
    FAQ Web - Tuto Web

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Possible, mais si il tape dans un textarea sa ponctuation, elle ne va pas être garder dans ma BDD ?
    Bien si justement, c'est bien la (grosse) différence qu'il y a entre en champ TEXT et un TEXTAREA.

    Parce que l'utilisateur est succeptible de changer ! (et il ne connait rien en html/php.
    Un utilisateur qui ne connais pas comment fonctionne une Bdd ou PhpMyAdmin n'a pas à intervenir à ce niveau.
    On crée une interface Administration justement pour ça, et pas seulement pour aller plus vite ou faire jolie
    Sérieux, si le gars ne sais pas faire un saut de ligne dans un champ, alors il saura que faire en cas de vrai problème.
    Foutre en l'air ta Bdd, ça il saura faire par contre.



    Comment crois tu que ça se fait sur ce forum par exemple ?
    Les contenu sont enregistrés sans remplacement par des <br />, surement pas.

    Avant tout, le contenu devra être enregistré tel quel, comme il a été saisie, donc dans un TEXTAREA avec des passages à la lignes (touche ENTRER).
    (hormis le coté sécurité avec un truc comme mysql_real_escape_string)

    Ensuite il y a 2 aspect au niveau de l'affichage dans la page Web :
    - Si tu affiche ce contenu dans un <textarea>, les passages à la ligne seront reproduits, il y a donc rien à faire pour ça.

    - Et bien pour toutes les autres balises (DIV, P, etc, etc), les passages à la lignes n'y seront pas visibles à l'écran.
    Pour le faire, il suffit d'appliquer la fonction nl2br() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // On récupère le contenu dans la Bdd
    // Admettons que la variable $contenu contient la donnée
    <p><?php echo nl2br($contenu); ?></p>
    On peu difficilement faire plus simple.
    -> Rien lors de l'enregistrement (pas de remplacement)
    -> Uniquement un nl2br pour toute autree balises que <textarea>
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  11. #11
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    @RunCodePHP, le but de ce thread n'est pas de remettre en question l'architecture de son application mais de passer à la ligne à chaque fin de phrase, évitons de faire durer plus que nécessaire cette discussion

    edit : je rajoutes que, dans le fond et sur la forme, je suis tout à fait d'accord avec toi.

  12. #12
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par ThomasR
    @RunCodePHP, le but de ce thread n'est pas de remettre en question l'architecture de son application mais de passer à la ligne à chaque fin de phrase, évitons de faire durer plus que nécessaire cette discussion
    A mon avis, il n'y a même pas d'architecture, et ce serait là tout le problème.

    Il lui en faudrait une, et là il pourra faire ces sauts de lignes, ou les corriger si le mal est déjà fait.
    Et faire des remplacement pour déboucher sur des <br >, je ne suis pas convaincu du (bon) service rendu.

    On essai de l'aider au mieux il me semble.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Points : 104
    Points
    104
    Par défaut
    Bonjour à tous,

    Je n'ai pas eu le temps de m'occuper de ça plus tôt.

    Je viens de tester aujourd'hui la solution proposée par RunCodePhp

    J'ai donc mis dans mon formulaire d'interface (qui sert à simplifier le travail pour qqn qui n'y connait rien, et qui ne sert pas uniquement à faire plus joli), un champs textarea au lieu d'un champ text

    Ensuite il fait un update dans ma bdd et me recopie bien les saut de ligne.

    Ensuite j'appel sur ma page via php, la champ de ma bdd avec un echo ou j'ai mis nl2br($data)

    Merci à vous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment empêcher un passage à la ligne (au milieu d'une phrase) dans le code source ?
    Par martha20 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/01/2011, 18h30
  2. Revenir à la première ligne à la fin d'une macro
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 16/11/2010, 09h09
  3. Passer à la ligne ou tabulation dans une chaine de caractère
    Par jfdmagic dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/04/2009, 14h05
  4. [Tableaux] Effacer la fin d'une phrase
    Par linkman dans le forum Langage
    Réponses: 19
    Dernier message: 30/07/2006, 12h31
  5. Ajouter une ligne à la fin d'un classeur excel
    Par maketossss dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/11/2005, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo