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 :

Zone de texte vers champs de type texte


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de Roromix
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 182
    Points : 139
    Points
    139
    Par défaut Zone de texte vers champs de type texte
    c'est décourageant, ça fait plusieurs jours que j'essai diverses solutions pour transmettre les saut de ligne à ma base de donnée mais rien à faire.

    Quelle est la solution à utiliser svp ?

    Je pense au preg_replace ou str_replace mais je n'y arrive pas.

    mon champs textarea :
    mon champs de type text :
    Comment avoir le même résultat que dans mon textarea ?

    Déjà essayé :
    1. $infos = str_replace("\r", "\n", str_replace("\r\n", "\n", trim($_GET['infos'])));
    2. $adr = preg_replace("/".chr(13).chr(10)."/", '\\\\\\\\n', $adr)

    Est-ce que ça pourrait être dû au fait que les données transitent par un script ajax ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    function saveNfiche()
    {
    	var xhr=ajax();
    	//on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() {
    		if (xhr.readyState==4) 
    		{
    			var docXML = xhr.responseXML;
    			var four_id = docXML.getElementsByTagName("errors")[0].getElementsByTagName("four_id")[0].firstChild.nodeValue;
    			loadfiche(four_id); //on charge la nouvelle fiche
    		}
    	}
     
    	var params = "";
    	var textareas = document.getElementById("four_fiche").getElementsByTagName("textarea");
    	for (i=0;i<=1;i++)
    		params += '&' + textareas[i].id + '=' + textareas[i].value;
    	var inputs = document.getElementById("four_fiche").getElementsByTagName("input");
    	for (i=0;i<=7;i++)
    	{
    		params += '&' + inputs[i].id + '=' + inputs[i].value;
    	}
    	//on affiche le message d'attente
        document.getElementById("four_fiche").innerHTML = '<img src="ajax-loader.gif"/> Enregistrement en cours...';
        xhr.open("GET", "fournisseurs.php?act=saveNfiche" + params, true);
        xhr.send(null);
    }

  2. #2
    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
    Bonsoir,

    Je pense que c'est surtout le fait que les données transitant via AJAX le font par la méthode GET. Les caractères échappés tels que \n \t \r\n etc.. sont probablement retranscris dans leur équivalent ASCII %n ou ignorés.

    Essayes d'enregistrer avec la méthode nl2br($texte) pour garder les sauts de ligne avec les deux méthodes pour voir.

  3. #3
    Membre habitué Avatar de Roromix
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 182
    Points : 139
    Points
    139
    Par défaut
    Donc c'était bien la transmission de mon script javascript à mon script php qui était pas compatible. il n'envoyé pas les /r/n, /n, /r

    Du coup j'ai fait un petit bidouillage. J'ai remplacés ces 3 caractéres par le mot "antislashn" dans mon javascript et dans mon code php j'ai remplacé ce mot par \n

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function saveNfiche()
    {
    	var xhr=ajax();
    	//on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() {
    		if (xhr.readyState==4) 
    		{
    			var docXML = xhr.responseXML;
    			var four_id = docXML.getElementsByTagName("errors")[0].getElementsByTagName("four_id")[0].firstChild.nodeValue;
    			//loadfiche(four_id);
    		}
    	}
     
    	//on génére un fichier XML
    	var params = "";
    	var valeur = "";
    	var textareas = document.getElementById("four_fiche").getElementsByTagName("textarea");
    	for (i=0;i<=1;i++) {
    		valeur = textareas[i].value.replace("\r\n", "antislashn");
    		valeur = valeur.replace("\r", "antislashn");
    		valeur = valeur.replace("\n", "antislashn");
    		params += '&' + textareas[i].id + '=' + valeur;
    	}
    	var inputs = document.getElementById("four_fiche").getElementsByTagName("input");
    	for (i=0;i<=7;i++)
    	{
    		params += '&' + inputs[i].id + '=' + inputs[i].value;
    	}
    	//on affiche le message d'attente
        document.getElementById("four_fiche").innerHTML = '<img src="ajax-loader.gif"/> Enregistrement en cours...';
        xhr.open("GET", "fournisseurs.php?act=saveNfiche" + params, true);
        xhr.send(null);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $infos = pg_escape_string(str_replace("antislashn", "\n", trim($_GET['infos'])));
    Mais bon c'est pas très pro je trouve. Y aurai-t-il une autre solution ?

  4. #4
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    As-tu appliqué la solution que ThomasR t'as proposé?
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

Discussions similaires

  1. Convertir un champ de base de données de type texte vers type date temporairement?
    Par Limpasse Creative dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/12/2014, 18h16
  2. [VB.NET][ADO.NET] : Taille d'un champs de type texte ?
    Par kleomas dans le forum Contribuez
    Réponses: 5
    Dernier message: 07/01/2007, 16h07
  3. Problème champs de type texte.
    Par Le-Cortex dans le forum Access
    Réponses: 7
    Dernier message: 06/01/2005, 14h42
  4. [Doublons] Unicité sur un champ de type TEXT
    Par PyRoFlo dans le forum Requêtes
    Réponses: 11
    Dernier message: 01/09/2004, 09h56
  5. Fonction LEFT sur champ de type "text" : méthodes
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/06/2004, 11h15

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