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

PHP & Base de données Discussion :

Conserver une mise en forme d'un textarea [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Par défaut Conserver une mise en forme d'un textarea
    Bonjour,

    Je viens vers vous avec ce qui doit être un problème de "rookie" mais malgré Google et tous les conseils que j'ai pu trouver je n'arrive pas à résoudre mon problème.

    J'alimente une base de donnée mysql à partir d'un formulaire
    Jusque la rien de bien sorcier

    J'ai voulu créer une procédure de modif
    En gros j'accède à l'enregistrement sql dont je veux modifier un ou plusieurs champs et je le réaffiche dans le formulaire qui me sert à la saisie.

    Tout fonctionne bien sauf pour le champ textarea

    Si par exemple dans celui ci je saisi :

    Bonjour

    C'est moi que voila
    Dans la base sera stocké :
    BonjourC\'est moi que voila
    (J'utilise un addslashes avant l'écriture)
    Par contre impossible de garder les sauts de ligne; ils disparraissent

    Du coup quand je fait une lecture pour afficher ma saisie précédente, je récupère
    BonjourC'est moi que voila
    sans le saut de ligne
    (J'utilise un stripslashes après la lecture)

    J'ai lu qu'il fallait utiliser nl2br() ce que j'ai fait ce qui me donne pour la relecture du champ qui doit me servir à l'alimentation de ma textarea :
    $champ=nl2br(stripslashes($row['champ']));

    Ca ne fonctionne pas non plus; je n'ai pas de saut de ligne
    J'ai testé aussi dans l'autre sens : $champ=stripslashes(nl2br($row['champ'])); et ça ne marche pas non plus

    Bref, avez vous un tuto ou quelque chose qui m'explique précisement la syntaxe de mise en forme avant l'insert Mysql, et la Syntaxe après la relecture juste avant l'alimentation de la variable du textarea, afin de restituer à l'affichage ce qui a été écrit avec respect de la mise en forme ?

    Merci de vos réponses et désolé si c'est une question de nullos mais je débute

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par mercyland Voir le message
    Bref, avez vous un tuto ou quelque chose qui m'explique précisement la syntaxe de mise en forme avant l'insert Mysql
    Il faut, tant que faire ce peut, stocker des données brutes dans MySQL. Donc évite tout formatage avant le INSERT.

    et la Syntaxe après la relecture juste avant l'alimentation de la variable du textarea, afin de restituer à l'affichage ce qui a été écrit avec respect de la mise en forme ?
    Il n'y a rien de particulier à faire, ni au moment du INSERT (si ce n'est un mysql_real_escape_string( )), ni à l'affichage (si ce n'est un htmlentities( )).
    Si le rendu n'est pas bon alors c'est que tu as sûrement qque part dans ton code supprimé les retours à la ligne \r\n|\n

    PS : le nl2br( ) sert uniquement à l'affichage du texte sur la page web, pas dans le TEXTAREA.
    PS2 : tu ne devrais pas avoir à utiliser stripslashes( ), il y a un pb à ce niveau là aussi.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Par défaut
    Bon j'ai fait plsieurs tests :

    Citation Envoyé par Séb
    Il faut, tant que faire ce peut, stocker des données brutes dans MySQL. Donc évite tout formatage avant le INSERT.
    J'ai tenté deux méthodes d'insertion

    Voici le texte qu je tape dans ma texarea :

    bonjour,

    c'est un test.

    Alors ?
    J'ai un apostrophe et deux sauts e ligne à chaque fois

    Je récupère les données de mon formulaire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // connexion à la base de donnée
    include ("connectdb.php");
    
    // récupération des données du formulaires
    $nomlien = trim($_POST['nomlien']);
    $url = trim($_POST['url']);
    $rublien = $_POST['tr_rublien'];
    $description=$_POST['description'];   (Une tentative de récup sans formatage)
    $description=(mysql_real_escape_string($_POST['description']));  (Une tentative avec mysql_real_escape_string)
    
    // création de la requête SQL, pour insertion lien
      $requete = "insert into liens values('','$nomlien','$url','$description','$rublien')";
      mysql_query($requete);
    La tentative avec aucun formatage a stocké : bonjour,c'est un test.Alors ?
    La tentative avec mysql_real_escape_string a stocké : bonjour,c\'est un test.Alors ?

    Dans les deux cas les sauts de ligne ont giclé

    Citation Envoyé par Séb
    Il n'y a rien de particulier à faire, ni au moment du INSERT (si ce n'est un mysql_real_escape_string( )), ni à l'affichage (si ce n'est un htmlentities( )).
    Si le rendu n'est pas bon alors c'est que tu as sûrement qque part dans ton code supprimé les retours à la ligne \r\n|\n
    Le problème c'est qu'entre la saisie et l'insert il y a juste le code que j'ai affiché plus haut...
    Je t'assure qu'il n'y a rien de codé qui supprime quoi que ce soit ...

    Citation Envoyé par Séb
    PS : le nl2br( ) sert uniquement à l'affichage du texte sur la page web, pas dans le TEXTAREA.
    Ok ! Je comprend mieux pour le n2br

    Citation Envoyé par Séb
    PS2 : tu ne devrais pas avoir à utiliser stripslashes( ), il y a un pb à ce niveau là aussi.
    La aussi il y a problème
    Juste après l'insert que j'ai montré plus haut je code ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // connexion à la base de donnée
    include ("connectdb.php");
     
    // requête SQL pour un enregistrement unique.
    $select = 'SELECT id, nomlien, url, description, rublien FROM liens where id = '.$id;
    $result = mysql_query($select,$link);
    $row = mysql_fetch_array($result);
     
    $id=$row['id'];
    $nomlien=$row['nomlien'];
    $url=$row['url'];
    $rublien=$row['rublien'];
    $description=(htmlentities($row['description']));
    A partir du moment ou j'insère avec le mysql_real_escape_string et que je ne metpas de stripslashes j'obtiens en restitution juste après ce select :
    bonjour,c\'est un test.Alors ? (Un anti slash et pas de sauts de ligne...)

    Bref c'est la loose totale
    Je n'arrive pas à comprendre ou je merde

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par mercyland Voir le message
    La tentative avec aucun formatage a stocké : bonjour,c'est un test.Alors ?
    La tentative avec mysql_real_escape_string a stocké : bonjour,c\'est un test.Alors ?

    Dans les deux cas les sauts de ligne ont giclé
    Comment contrôles-tu si tes sauts de ligne ont été conservés ou pas ?


    A partir du moment ou j'insère avec le mysql_real_escape_string et que je ne metpas de stripslashes j'obtiens en restitution juste après ce select :
    bonjour,c\'est un test.Alors ? (Un anti slash et pas de sauts de ligne...)
    Sûrement un coup de ces satanées magic-quotes.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 4
    Par défaut
    Citation Envoyé par Séb
    Comment contrôles-tu si tes sauts de ligne ont été conservés ou pas ?
    Je réaffiche juste derrière pour vérifier ce que j'ai stocké en table...

    Citation Envoyé par Séb
    Sûrement un coup de ces satanées magic-quotes.
    Ben oui...

    Je vais reprendre ça demain à tête reposée et je trouverai
    Je dois forcement faire une bêtise à un moment donné !
    Merci de ton aide

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par mercyland Voir le message
    Je réaffiche juste derrière pour vérifier ce que j'ai stocké en table...
    Dans ce cas il est normal que le retour à la ligne du TEXTAREA (\r\n) ne soit pas interprété par ton navigateur. Ce dernier attend un <BR> pour faire un retour à la ligne.

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

Discussions similaires

  1. Mettre texte au format rtf dans un textarea en conservant la mise en forme
    Par alexxxx69 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/03/2012, 17h21
  2. [WD15] Champ approprié pour conserver une mise en forme
    Par buzz68180 dans le forum WinDev
    Réponses: 4
    Dernier message: 16/02/2011, 09h38
  3. conserver la mise en forme d'une slide vba
    Par djouk dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 15/10/2010, 16h44
  4. [XL-2002] Suppression de caractères dans une cellule en conservant la mise en forme
    Par stef_PBR dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/06/2009, 18h25
  5. Macro Excel: enreg d1 cellule en conservant le mise en forme
    Par repié dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/12/2005, 15h48

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