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 :

Frappe au kilomètre : Nl2br [PHP 4]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Points : 87
    Points
    87
    Par défaut Frappe au kilomètre : Nl2br
    Bonjour, si je tape un texte au kilomètres dans un textarea, la fonction "nl2br" ne... fonctionne pas ! Il faut que je tape sur ENTREES pour que le retour à la ligne s'effectue. Hors, un utilisateur ne fera pas entrée en bout de ligne... Connaissais vous une petit astuce pour remédier a ce problème ?

    Merci à tous !

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Si tu tapes pas entrée y'a pas de saut de ligne donc nl2br() marche très bien c'est juste qu'il n’y a rien à convertir.

    Le textarea met en forme le texte pour le faire tenir dans les limite qu'on lui donne mais il ne rajoute pas de saut de ligne.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    C'est au niveau du html qu'il faut gérer cela avec l'attribut wrap dans le textarea

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    +1 grunk.
    nl2br signifie : convertir les "NL" (=Nex Line = Retours chariots) en <br />.
    Si tu ne fais pas de retour chariot (touche Enter), il n'y a rien à convertir !

  5. #5
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Points : 87
    Points
    87
    Par défaut Ecrire Entrée (retour chariot) dans un code
    Citation Envoyé par Bovino Voir le message
    +1 grunk.
    nl2br signifie : convertir les "NL" (=Nex Line = Retours chariots) en <br />.
    Si tu ne fais pas de retour chariot (touche Enter), il n'y a rien à convertir !
    Alors comment faire pour qu'une fois qu'il arrive au bout du cadre, il me le compte comme un retour à la linge ? Un peu comme dans ce forum d'ailleurs ? J'ai essayé warp, ca marche bien mais le wrap me coupe les phrases, pour la première a 20 caractères, la seconde à 19, la troisième 10 ou 11...

    Je suis un peu perdu là !

    Est-ce que la zone d'affichage et la zone de textarea doit avoir la même longueur ?

    Sinon, existe-il une fonction en php pour gérer ça, différente de "nl2br" ?

    Ou peut-être que je pourrais compter le nombre max de caractères du cadre, avec str_replace, remplacer le dernier caractère par un retour chariot, mais comment écris t-on Entrées dans un code ?

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Je t'ai déjà répondu en te laissant un lien !
    Testes :
    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
    <?php
    if (isset($_POST['text'])) echo nl2br($_POST['text']);
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta charset="UTF-8" />
    <title></title>
    </head>
    <body>
    <form action='#' method="post">
    <textarea name="text"  wrap="hard" cols="50" > </textarea>
    <input type="submit" value= "ok"/>
    </form>
    </body>
    </html>
    Ainsi les retours lignes automatiques du textarea sont tranformés en retour ligne réels.
    Mais bon on utilise très rarement cette attribut "wrap" car normalement c'est l'affichage qui impose ses retours lignes automatiques (en fonction de la dimension du bloc) et seuls les retours lignes manuels sont pris en compte, comme dans ce forum. D'ailleurs l'emploi de cet attribut aurait comme inconvénient secondaire que tu ne pourrais par exemple plus justifier ton texte et puis un affichage dans un bloc de plus petites dimensions que la saisie aurait des effets indésirables.
    Pourquoi veut tu imposer des retours lignes quand ils ne sont pas rentrés manuellement et donc volontairement par le visiteur ?

  7. #7
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Points : 87
    Points
    87
    Par défaut On avance
    J'ai fait exactement, enfin je crois , comme vous m'avez dit et il me remplace maintenant mes retours à la lignes (frappe au kilomètres sans la touche Enter) par /n/r (ou le contraire ! Je sais plus) Enfin un truc comme ça ! Maintenant, je pense qu'avec une fonction STR_Replace, (enfin un truc comme ca lol ), ca devrait marché ! Qu'en pensez-vous ?

    Ps : Sur la feuille d'envoi, le textarea est défini par "cols" et sur la feuille réception, la taille en pixel en css ? Est-ce que ça peut jouer un rôle dans l'affichage ? Rôle voulu ou non ?

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par toutoune95800 Voir le message
    ca devrait marché ! Qu'en pensez-vous ?
    Le problème est que je ne sais pas trop ce que tu souhaite faire. Je répète donc ma question : Pourquoi veux-tu imposer des retours lignes quand ils ne sont pas rentrés manuellement et donc volontairement par le visiteur ?

  9. #9
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Points : 87
    Points
    87
    Par défaut Une seule ligne
    Parce qu'à l'affichage du texte entré dans le formulaire, ce dernier ne s'affiche que sur une seule ligne !

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Il s'affiche sur une seule ligne parce que le bloc conteneur dans lequel tu l'affiche est plus grand que le textarea dans lequel tu saisi ton texte. C'est comme dans ce forum si tu réduit ou agrandit ta fenêtre, les retours lignes automatiques ne sont plus au même endroit.
    Si tu veux une concordance il faut que les dimensions du textarea et du bloc d'affichage soient fixes et identiques.

  11. #11
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2012
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Février 2012
    Messages : 164
    Points : 87
    Points
    87
    Par défaut Merci ! ! !
    Citation Envoyé par ABCIWEB Voir le message
    Il s'affiche sur une seule ligne parce que le bloc conteneur dans lequel tu l'affiche est plus grand que le textarea dans lequel tu saisi ton texte. C'est comme dans ce forum si tu réduit ou agrandit ta fenêtre, les retours lignes automatiques ne sont plus au même endroit.
    Si tu veux une concordance il faut que les dimensions du textarea et du bloc d'affichage soient fixes et identiques.
    Merci ! Ca marche enfin ! C'est parfait ! Le problème venait, d'une part de la taille des éléments, et d'autre part de la fonction : white-space:pre

    En revanche, j'ai lu que pour plus de sécurité sur les données qu'entrait un utilisateur il fallait utiliser la fonction suivant :

    mysql_real_escape_string(htmlspecialchars($mavariable)

    Le souci est que si je met en place cette petite ligne, il me un / avant chaque apostrophe ! Savez-vous pourquoi ? Et on peut remedier à ce problème ?

    En tout cas, merci à toi ABCIWEB !

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par toutoune95800 Voir le message
    En revanche, j'ai lu que pour plus de sécurité sur les données qu'entrait un utilisateur il fallait utiliser la fonction suivante :
    mysql_real_escape_string(htmlspecialchars($mavariable)
    Oui mais uniquement pour protéger les variables dans les requêtes sql

    Concernant l'affichage (pour ce qui te préoccupe actuellement) et donc typiquement derrière un "echo", utilises htmlspecialchars :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo htmlspecialchars($text);

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/06/2005, 10h37
  2. Clavier et envoie de données sans frappe clavier
    Par Alexandre T dans le forum Administration système
    Réponses: 4
    Dernier message: 07/05/2005, 17h05
  3. Remplir un Edit en cours de frappe
    Par LoicH dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/01/2005, 19h53
  4. [C#] Capter la tabulation lors de la frappe dans un DataGrid
    Par fabrice1596 dans le forum Windows Forms
    Réponses: 20
    Dernier message: 13/12/2004, 17h53
  5. Comment détecter la frappe d'une touche ?
    Par Bubonik software dans le forum C
    Réponses: 17
    Dernier message: 11/12/2003, 21h52

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