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

JavaScript Discussion :

Textarea, javascript et limite de caractères


Sujet :

JavaScript

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut Textarea, javascript et limite de caractères
    Bonjour a tous,


    J'ai un petit souci a vous exposer:

    J'ai créé une petite admin en PHP avec identifiants et donc session

    J'ai un petit formulaire avec un texteara

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo 'Commentaire<br>';
    $res_p = mysql_query("SELECT * FROM `table` where .................................");
    while($prt = mysql_fetch_array($res_p, MYSQL_ASSOC)){$text_p=$prt['text']; $text_p = str_replace(array('<br>'), array("\n" ), $text_p);$text_p = stripslashes($text_p);}
    <textarea style="width:100%; height:300px" id="com_pret" name="com" onblur="envoi_com(\'com\')">'.$text_p.'</textarea>

    Ensuite la fonction envoi_com() recupere l'ID de mon textarea pour la traiter en Javascript/Ajax s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function envoi_com (idA) {
    idC= 'S'+idA;
    var idC = document.getElementById(idA).value;
    while(idC.indexOf("\n")>0){idC = idC.replace("\n","<br>");}
    var xhr_object = null;
    if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
    xhr_object.open("POST", "sauve.php?toto=<?php echo $toto;?>&ong=com&"+idA+"="+idC, true);
    xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {document.getElementById("sauve_com").innerHTML = xhr_object.responseText;}}
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var data = "toto=<?php echo $toto;?>&ong=com&"+idA+"="+idC;
    xhr_object.send(data);
    }
    Le fichier sauve.php contient bien les include de session pas de souci.

    Je saisie un commentaire avec moins de 2804 caractère et tout se passe bien

    Je saisie un commentaire de plus de 2804 caractère et la un truc bizarre se produit:
    Le commentaire arrive bien jusqu'au fichier sauve.php, il est en bien traité par le php du fichier et bien sauvegardé dans la BDD SQL
    MAIS JE PERDS LA CONNEXION DONC LES SESSIONS

    Alors qu'avec moins de 2804 caractères saisie la session est conservée.

    Avez vous une idée de de piste de reflexion, s'il vous plait.

    Merci milles fois a tout ceux qui auront le temps de me lire.

    Olivier

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Pourrait-on avoir du JavaScript et du HTML et non du PHP*?

    si tu avais ouvert ton code dans le navigateur, tu aurais compris d'où vient l'erreur

    Tu places tes données dans l'URL et dans data.
    Or la taille d'une URL est limitée
    A+JYT

  3. #3
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Je vais être un peu hors sujet mais voilà : j'ai l'impression que la communauté JavaScript a encore beaucoup à apprendre quant au signalement des erreurs à l'utilisateur.

    Scénario : ma grand-mère (ou la grand-mère de qui tu veux) navigue sur ton site et reçoit le message suivant :
    Votre navigateur ne supporte pas les objets XMLHTTPRequest...
    Ça lui fait une belle jambe. Que doit-elle comprendre ? Que doit-elle faire ? Elle est livrée à elle-même. Il y a fort à parier qu'elle va quitter ton site.

    Dans ce genre de cas il y a deux approches :
    – soit tu expliques clairement ce que l'utilisateur peut faire pour utiliser ton site convenablement ;
    – soit tu fais en sorte que ton site se dégrade gracieusement pour continuer à fonctionner avec des fonctionnalités réduites.

    Pour moi, la première approche est la plus difficile. Vraisemblablement, tu pourrais recommander à l'utilisateur de mettre à jour/changer de navigateur. Mais comment le faire avec tact, concision et clarté ? Comment faire en sorte que ceux qui ne peuvent pas changer de navigateur (par exemple sur leur lieu de travail) ne se sentent exclus ?
    De plus, certains ergonomes estiment que tu n'as pas à imposer à l'utilisateur la façon dont il visite ton site.

    La seconde approche est tout à fait réalisable quand on parle d'Ajax, car toute fonctionnalité de site Web mise en œuvre avec Ajax peut être mise en œuvre minimalement sans Ajax, par des liens et des formulaires classiques.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Bonsoir,

    Je vous remercie a tous les deux pour vos réponses, bien que je ne saisisse pas le sens de toutes .

    En clair, évidemment j'ai zappé que dans une url la taille de la chaine de caractère etait limité, donc le javascript, enfin l'ajax me limite (DATA), enfin l'URL, on s'est compris ...

    Par contre si je passe par un formulaire en POST je ne suis pas limité.. or justement je voulais eviter le rafraichissement de la page.. pffff

    Donc je n'ai pas le choix.

    Merci encore !

    voir info ici : http://support.microsoft.com/kb/208427


    P.S je ne ferme pas ce topic car si il existe une solution miracle je suis toujours preneur

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    sekaijin t'a déjà répondu
    Pourquoi veux-tu absolument passer tes variables dans l'url (notamment celles qui posent des problèmes de taille) puisque tu les passe aussi dans data ? En d'autres termes supprime les variables de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("POST", "sauve.php?toto=<?php echo $toto;?>&ong=com&"+idA+"="+idC, true);
    ou garde en quelques unes mais pas besoin de faire de doublons avec celles que tu passe dans le send.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Je suis désolés, dans ce cas, je n'ai rien compris a ce que j'ai codé alors.

    Je pensais qu'il fallait que je tape les deux fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("POST", "sauve.php?toto=<?php echo $toto;?>&ong=com&"+idA+"="+idC, true);
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var data = "toto=<?php echo $toto;?>&ong=com&"+idA+"="+idC;
    Pour que la fonction donne le résultat, car tous les exemples donnés se traduisent avec ces deux fonctions.

    Si je vous suis, je peux simplement mettre les infos dans le data et je n'aurai plus le probleme de limitation du a la taille max de la chaine dans une URL ?

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    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 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Et t'as pas eu la curiosité d'essayer ?

    Quand tu fais xhr_object.open("POST", "sauve.php", true);, le second paramètre indique la destination c'est à dire l'url exactement comme dans l'attribut action d'un formulaire post. En complément des valeurs que tu passe dans le post tu peux mettre des valeurs "get" dans cette adresse (comme tu le faisais avant), mais le plus souvent on met tout dans le post (surtout quand on veut des url courtes...)

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Non j'avoue ne pas avoir pensé a tester, et je ne comprends pas pourquoi ca devrait fonctionner, puisque meme avec le data, les infos passent qd meme dans l'URL ???

    Ma petite admin fait appel a bcp de fonctions et quand un script fonctionne, je ne le touche plus, j'ai deja du mal a rendre compatible le PHP, le JAVASCRIPT, mes bases SQL, l'AJAX, les JQUERY qui des fois sont incompatibles.. bref.. tout ce que vous rencontrer tous les jours dans vos scripts .. mais je ne suis qu'amateur :-D alors c'est seulement en poussant a bout un script que je m'apercois que je dois le modifier comme ici la limitation de caracteres.

    Je vais tester en ne mettant mes var uniquement dans le data et voir si je suis limité a 2048 aussi.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function envoi_com (idA) {
    idC= 'S'+idA;
    var idC = document.getElementById(idA).value;
    while(idC.indexOf("\n")>0){idC = idC.replace("\n","<br>");}
    var xhr_object = null;
    if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else {alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return;}
    xhr_object.open("POST", "sauve.php", true);
    xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {document.getElementById("sauve_com").innerHTML = xhr_object.responseText;}}
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var data = "toto=<?php echo $toto;?>&ong=com&"+idA+"="+idC;
    xhr_object.send(data);
    }

Discussions similaires

  1. Limite Textarea, Ligne et Nombre de caractères par ligne
    Par michelS dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/11/2010, 14h00
  2. [JTextField]limiter les caractères ?
    Par Baptiste Wicht dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/12/2005, 12h12
  3. Réponses: 1
    Dernier message: 18/08/2005, 15h11
  4. limite de caractère sur un type="texte"
    Par auduma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/03/2005, 14h06
  5. Varchar2 limité à 256 caractères (SQLLoader, 9i)
    Par nuke_y dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 09/11/2004, 12h20

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