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 :

retours chariot


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut retours chariot
    Bonjour,
    Cela fait donc des heures que je cherche la solution dans les tutoriels et les forum.
    Donc quand je saisis du texte avec un retour chariot dans un textarea, la mise en forme dans la table est correcte mais pas quand le texte s'affiche de nouveau dans le textarea.

    -dans la table :
    Bonjour,
    C'est vraiment pénible ces retours chariots.

    -dans mon textarea :
    Bonjour,C'est vraiment pénible ces retours chariots.

    mon code :
    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
    34
    35
    36
    37
     
    if (isset($_POST['textemessage']))	$textemessage = $_POST['textemessage'];
    else $textemessage = "";
     
    if (isset($_POST['enregistrer'])){
    	if ((empty($_POST['nom'])) OR (empty($_POST['prenom'])) OR (empty($_POST['mail'])) OR (empty($_POST['objet'])) OR (empty($_POST['textemessage']))){
    		$message = "Merci de renseigner tous les champs.";
    	}
    	else if (empty($message)){
    		//teste si le même message est déjà dans la table
    		$textemessage = mysqli_real_escape_string($con,$_POST['textemessage']);
    		$requete = "SELECT * FROM messages WHERE date = '$my_date' AND emetteur = '$mail' AND texte = '$textemessage'";
    		$resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error());
    		if (mysqli_num_rows($resultat) > 0){
    			$message = "Ce message est déjà enregistré !";
    		}
    		else {
    		 	$objet = mysqli_real_escape_string($con,$_POST['objet']);
    		 	$nom = mysqli_real_escape_string($con,$_POST['nom']);
    		 	$prenom = mysqli_real_escape_string($con,$_POST['prenom']);
    		 	$emetteur = mysqli_real_escape_string($con,$_POST['mail']);
    		 	$textemessage = mysqli_real_escape_string($con,$_POST['textemessage']);
    			//preparation de la requete
    			$requete = "INSERT INTO messages (id_message, date, heure, nom, prenom, emetteur, objet, texte)
    			VALUES('','$my_date','$my_time','$nom','$prenom','$emetteur','$objet','$textemessage')";
    			if (mysqli_query($con, $requete)) {
        				$message1 = "Merci pour votre message, nous vous répondrons dans les meilleurs délais";
    			} else {
        				$message = "Message non enregistré. Merci de vérifier votre saisie";
    			}
    			mysqli_close($con);
     
    		}
    	}
    }
     
    <textarea name="textemessage" rows="15" style="width:440px; font-size:13px"><?php $textemessage=str_replace('\r\n','',$textemessage);  echo stripslashes(nl2br(htmlentities($textemessage))); ?></textarea><br>
    Dans le str_replace j'avais tenté str_replace('\r\n','<br>',$textemessage) mais <br> apparaît en clair !!
    Merci d'avance

  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
    Si tu mets du code qui retire les retours chariots c'est un peu normal que tu n'aies plus de retours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo htmlentities($textemessage);
    Au passage quand même c'est "\r\n" et pas '\r\n'
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    mon textarea est devenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <textarea name="textemessage" rows="15" style="width:440px; font-size:13px"><?php $textemessage=str_replace('\r\n','',$textemessage); echo htmlentities($textemessage); ?></textarea>
    et plus rien ne s'affiche !!

    j'avais vu que j'avais inversé '\r\n' j'avais rectifié.
    par contre si j'écris "\r\n" les signes apparaissent dans le textarea

  4. #4
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Bonjour,

    J'ai donc repris mon code et voilà le résultat dans l'ordre de ma page :
    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
     
    if (isset($_POST['textemessage']))	$textemessage = $_POST['textemessage'];
    else $textemessage = "";
     
    //insertion dans la table
    $textemessage = mysqli_real_escape_string($con,$_POST['textemessage']);
    $requete = "INSERT INTO messages (id_message, date, heure, nom, prenom, emetteur, objet, texte)
    VALUES('','$my_date','$my_time','$nom','$prenom','$emetteur','$objet','$textemessage')";
    if (mysqli_query($con, $requete)) {
    $message1 = "Merci pour votre message, nous vous répondrons dans les meilleurs délais";
    }
     
    $msg = isset($_POST['textemessage']) ?trim($_POST['textemessage']) : '';
    $textemessage = nl2br($msg) ;
    echo $textemessage;
     
    <textarea name="textemessage" rows="15" style="width:440px; font-size:13px"><?php echo $textemessage; ?></textarea><br>
    En résumé :
    quand j'écris directement sur la page le retour chariot se fait sans problème.
    et dans le textarea le retour chariot se fait mais j'ai <br />

    Comment je peux m'en sortir ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    htmlentities() ne convient pas pour un textarea.
    htmlspecialchars() peut s'avérer utile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $textemessage = (isset($_POST['textemessage']))? $_POST['textemessage'] : ''; 
    ?>
    <form method="post">
    	<textarea name="textemessage"><?php echo htmlspecialchars($textemessage,ENT_QUOTES); ?></textarea>
    	<input type="submit" value="ok"/>
    </form>
     
    <div id="affichage">
    <?php echo nl2br(htmlspecialchars($textemessage,ENT_QUOTES)); ?>
    </div>
    Dernière modification par Invité ; 16/11/2015 à 12h07.

  6. #6
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci jreaux62.

    Je pense que ce problème est résolu.
    J'ai fait plusieurs tests et ça semble marcher.

    voilà ce que j'ai fait sur ma page, dans l'ordre
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    if (isset($_POST['textemessage']))	$textemessage = $_POST['textemessage'];
    else $textemessage = "";
     
    //avant l'insertion dans la table
    $textemessage = mysqli_real_escape_string($con,$_POST['textemessage']);
     
    //pour l'affichage dans le textarea
    $textemessage = isset($_POST['textemessage']) ?trim($_POST['textemessage']) : '';
     
    //le texte dans le textarea
    <textarea name="textemessage" rows="15" style="width:440px; font-size:13px"><?php echo $textemessage; ?></textarea>

    Je viens de refaire un test avant de poster et tout de passe bien.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ce n'est pas la peine de récupérer 12000 fois $_POST['textemessage'] !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $textemessage = (isset($_POST['textemessage']))? trim($_POST['textemessage']) : '';
    DANS la requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "....................".mysqli_real_escape_string($con,$textemessage)."............."
    N.B.
    Citation Envoyé par philippef Voir le message
    ...j'avais vu que j'avais inversé '\r\n' j'avais rectifié...
    Ce n'est pas un problème d'inversion.
    => il FAUT absolument des double-quotes pour que ça fonctionne.

  8. #8
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Ce n'est pas un problème d'inversion.
    => il FAUT absolument des double-quotes pour que ça fonctionne.
    Comme tu peux le voir je n'utilise plus ça dans mon code.

    Pour ce qui est de "Ce n'est pas la peine de récupérer 12000 fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $textemessage = (isset($_POST['textemessage']))? trim($_POST['textemessage']) : '';
    Si je ne le récupère pas ici alors le texte de mon textarea contient <br />
    Mais si tu veux voir toute la page, pas de problème : je ne pourrai en tirer que profit !!

  9. #9
    Invité
    Invité(e)

  10. #10
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci pour toute ton aide

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

Discussions similaires

  1. [DOM] Problème de retour chariot après les noeuds
    Par Phenomenium dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 04/03/2008, 13h58
  2. [SQL Loader] problème de retour chariot
    Par euphorix dans le forum SQL
    Réponses: 3
    Dernier message: 31/08/2006, 05h37
  3. Problème de Retour Chariot
    Par AyreoN dans le forum Langage
    Réponses: 1
    Dernier message: 30/05/2006, 11h00
  4. [Struts] Problème de retour chariot
    Par pimousse76 dans le forum Struts 1
    Réponses: 5
    Dernier message: 22/11/2004, 15h39
  5. Aie!Aie!Aie les mises à jour
    Par David M dans le forum Access
    Réponses: 10
    Dernier message: 09/10/2004, 18h28

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