Partage
  • Partager sur Facebook
  • Partager sur Twitter

Textarea qui est considérer vide !

Sujet résolu
    27 mars 2015 à 2:45:21

    Bonjour,

    J'ai repris un le tuto sur le site qui était le chat en ajax qui fonctionne bien, et j'ai donc voulu un système de smileys, et par exemple dans la zone de texte si je clique sur le smileys :colere: et que j'envoi le formulaire cela me dit que le message est vide :( je ne comprend pas.

    Voici mon formulaire:

    <form action="" method="" onsubmit="postMessage(); return false;">
    <a href="#" onclick="window.open(\'smileys.html\',\'_blank\',\'toolbar=0, location=0, directories=0, status=0, scrollbars=0, resizable=1, copyhistory=0, menuBar=0, width=200, height=150\');return(false)" class="big-btn green">Émoticônes</a>
    <textarea id="message_shoutbox" name="message_shoutbox"></textarea>
    </form>

    Ma page smileys.html (en bref):

    <a href="#null" onclick="insertSmiley(':colere:');"><img src="images/smileys/cole.gif" border="0" alt=":colere:" /></a>

    Ma fonction javascript (insertSmiley)

    function insertSmiley(smiley) {
    		
    textselect=window.opener.document.getElementById('message_shoutbox');
    	
    	if(textselect.c)
    	{
    		textselect.c.text=textselect.c.text+smiley;
    	}
    	else
    	{
    		textselect.value+=smiley;
    	}
    	
    	textselect.focus();
    }

    Ma fonction pour le traitement des smileys

    function urllink($content='') {
    	
        // Insérez vos smiley ici, dans le premier tableau smiliesName
        // Et dans la colonne correpsondante du second tableau smiliesUrl   
        // Indiquez le nom de l'image
    	
        $smiliesName = array(':colere:');
    
        $smiliesUrl  = array('cole.gif');
    
        $smiliesPath = "".ADRESSE_SITE."/templates/".TEMPLATE_SITE."/images/smileys/";
    
        for ($i = 0, $c = count($smiliesName); $i < $c; $i++) {
    
            $content = preg_replace('`' . $smiliesName[$i] . '`isU', '<img src="' . $smiliesPath . $smiliesUrl[$i] . '" alt="smiley" />', $content);
    
        }
    
        $content = stripslashes($content);
    
        return $content;
    }

    Ma fonction ajax pour l'envoi du formulaire:

    function postMessage() {
    
        //-- On lance la requête ajax
        //-- type: POST > nous envoyons le message
        //-- On encode le message pour faire passer les caractères spéciaux comme +
    
        var message = encodeURIComponent($("#message_shoutbox").val());
    
        $.ajax({
            type: "POST",
            url: "/ajax-chat/post-message.php",
            data: "message="+message,
    
            success: function(msg)
    		{
                //-- Si la réponse est true, tout s'est bien passé,
                //-- Si non, on a une erreur et on l'affiche
                if(msg == true) 
    			{
                    //-- On vide la zone de texte
                    $("#message_shoutbox").val('');
                    $("#responsePost").slideUp("slow").html('');
    
                } else
                    $("#responsePost").html(msg).slideDown("slow");
    			
    			//-- On resélectionne la zone de texte, en cas d'utilisation du bouton "Envoyer"
                $("#message_shoutbox").focus();
            },
    
            error: function(msg){
                //-- On alerte d'une erreur
                alert('Erreur');
            }
        });
    }

    Et voici mon code PHP pour l'envoi du formulaire:

    if(isset($_POST['message_shoutbox']) AND !empty($_POST['message_shoutbox'])) 
    	{
            //-- On teste si le message ne contient qu'un ou plusieurs points et qu'un ou plusieurs espaces, ou s'il est vide. ^ -> début de la chaine - $ -> fin de la chaine [-. ] -> espace, rien ou point + -> une ou plusieurs fois Si c'est le cas, alors on envoie pas le message
            if(!preg_match("#^[-. ]+$#", $_POST['message_shoutbox'])) 
    		{ 
                $query = $connexion->prepare("SELECT * FROM ChatMessages WHERE message_user = :user ORDER BY message_time DESC LIMIT 0,1");
                $query->execute(array(
                    'user' => $_SESSION['id']
                ));
    
                $count = $query->rowCount();
    
                $data = $query->fetch();
    
    			$percent = "";
    			
                //-- Vérification de la similitude
                if($count != 0)
                    similar_text($data['message_text'], $_POST['message_shoutbox'], $percent);
    
                if($percent < 80) 
    			{
                    //-- Vérification de la date du dernier message.
                    if(time()-5 >= $data['message_time']) 
    				{
                        $insert = $connexion->prepare('INSERT INTO ChatMessages (message_id, message_user, message_time, message_text) VALUES(:id, :user, :time, :text)');
    					$insert->execute(array(
    						'id' => '',
    						'user' => $_SESSION['id'],
    						'time' => time(),
    						'text' => $_POST['message_shoutbox']
    					));
    					
    					echo true;
                    } 
    				else
    				{
                        alert_ariere_go('Votre dernier message est trop récent. Baissez le rythme :D'); 
                    }
                } 
    			else
    			{
    				alert_ariere_go('Votre dernier message est très similaire.');   
    			}
            }
    		else
    		{
                alert_ariere_go('Votre message est vide.');
    		}
        } 
    	else
    	{
            alert_ariere_go('Votre message est vide.');
    	}

    Voila en espérant de m'avoir bien expliquer je vous remercie pour votre aide ;)


    -
    Edité par staff 27 mars 2015 à 2:46:25

    • Partager sur Facebook
    • Partager sur Twitter
      27 mars 2015 à 9:29:23

      Salut,

      Q1: lorsque tu cliques sur le bouton smiley, est-ce qu'il s'affiche bien dans ton textarea ?

      Q2: si Q1 == oui, tu envoie la variable data de ton JS vers ton script PHP, mais tu regarde message_shoutbox, c'est là ton problème.

      ++

      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2015 à 9:34:41

        Bonjour,

        Je n'ai pas analysé tout le code, il y en a beaucoup trop et des le matin, c'est dur ! :)

        Cependant la fonction javascript ma sauté au yeux :

        Je suppose donc que c'est la fonction qui insert le smiley de ta "pop-up" a ton textarea,

        textSelect etant ton textarea, qu'est-ce que c'est que textSelect.c ? Je ne le vois défini nul part.

        De plus tu dis en javascript, la valeur de mon textarea, si elle est vide, on ajoute a la variable le smiley, sinon on reprend le texte + smiley, ca c'est ok, mais tu l'a affecté dans ton javascript, il va falloir le remettre a ton textarea via un innerHTML ou append. ( innerHTML je crois que c'est ce qu'il te faut, avant de le refocus.

        • Partager sur Facebook
        • Partager sur Twitter
        Voir une araignée c'est rien ... Le pire c'est quand tu ne la vois plus !
          27 mars 2015 à 12:04:31

          christouphe a écrit:

          Salut,

          Q1: lorsque tu cliques sur le bouton smiley, est-ce qu'il s'affiche bien dans ton textarea ?

          Q2: si Q1 == oui, tu envoie la variable data de ton JS vers ton script PHP, mais tu regarde message_shoutbox, c'est là ton problème.

          ++

          Merci pour vos réponses... bien vu j'avait une erreur dans mon j'avait ceci

          var message = encodeURIComponent($("#message_shoutbox").val());
           
              $.ajax({
                  type: "POST",
                  url: "/ajax-chat/post-message.php",
                  data: "message="+message,

          Et j'ai donc remplacer par ceci

          var message_shoutbox = encodeURIComponent($("#message_shoutbox").val());
          
              $.ajax({
                  type: "POST",
                  url: "/ajax-chat/post-message.php",
                  data: "message_shoutbox="+message_shoutbox,

          Et cela fonctionne a présent ;) merci beaucoup sujet résolu



          • Partager sur Facebook
          • Partager sur Twitter

          Textarea qui est considérer vide !

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown