Signaler

Vider un champ text [Résolu]

Posez votre question rolly41 231Messages postés dimanche 16 novembre 2008Date d'inscription 13 juin 2017 Dernière intervention - Dernière réponse le 13 juin 2017 à 21:46 par rolly41
Bonjour,

Sur le tchat de mon site, quand nous validons un message pour parler, le message s’envoie bien mais reste aussi dans l'input text. Je souhaite donc vider le champ text nommé "message" quand le message a bien été envoyé à la base de données.

J'ai testé ceci dans mon code javascript:
function reinit() 
{
document.getElementsByName("message")[0].value = "";
}


et j'ai mis ceci au bouton submit:
onclick="reinit()"


Le problème, c'est que le champ message est vidé avant d'être envoyé à la base de données, ce qui fait donc un message vide.

Pourriez-vous m'orienter vers une solution stable pour que je puisse corriger cela?


Merci beaucoup à vous tous, grâce à ce forum j'ai appris beaucoup de chose et de plus, cela me permet de partager mes erreurs pour éviter que d'autre personne ne fassent les même erreurs :)
Afficher la suite 
Utile
+1
plus moins
Il suffit d'appeller ta fonction à la fin du script d'envoie

Donc retire le onclick que tu as mis ....
et remplaces ton code js par :
$('#envoyer').click(function(e)
{
 e.preventDefault();
 var url="./include/ajax-shoutbox.php";
 var pseudo = $('#pseudo_expediteur').val();//pseudo de l'expediteur
 var message = $('#message_expediteur').val();//message envoyé
 var idsalon = $('#idsalon').val();//id du salon
 var id_expediteur = $('#id_expediteur').val();//id de l'expediteur
 var timer = new Date(); //création variable timer
 var annee   = timer.getFullYear();
 var mois    = timer.getMonth()+1;
 var jour    = timer.getDate();
 var hrs   = timer.getHours();
 var mins  = timer.getMinutes();
 var secs = timer.getSeconds();
 var heure = ((hrs<10)?"0":"")+hrs;
 var minute = ((mins<10)?"0":"")+mins;
 var seconde = ((secs<10)?"0":"")+secs;
 var date = jour+"/"+mois+"/"+annee;
 var time = heure+":"+minute+":"+seconde;
 if(message != "") // on vérifie que la variable n'est pas vides
 {
  $.post(url,{action:"addMessage",message:message},function(data){
  },"json");
  $('#messages').append("[" + time + "] " + pseudo + " : " + message + "<hr />");
  element = document.getElementById('defillement');
  element.scrollTop = element.scrollHeight;
  
  reinit();
  return false;
  
 }
 else
 {
  alert('Votre message est vide');
 }
 
});


function reinit() 
{
document.getElementsByName("message")[0].value = "";
}

Cette réponse vous a-t-elle aidé ?  
jordane45 18038Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 11 août 2017 Dernière intervention - 13 juin 2017 à 21:33
Et pour rester cohérent avec le reste de ton code ...

function reinit() {
  $('#message_expediteur').val('');
}
Répondre
rolly41 231Messages postés dimanche 16 novembre 2008Date d'inscription 13 juin 2017 Dernière intervention - 13 juin 2017 à 21:46
J'ai bien fait les modifications proposé et cela fonctionne :) donc mon appel de la fonction se faisait simplement trop tôt --"

Effectivement, ta fonction reinit est beaucoup plus propre que la mienne pour mon code et plus facile :) il serait temps pour moi de faire une pause je crois xD

Merci beaucoup pour ton aide, une aide vraiment au top :)
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour

Comment envoies tu les données dans la bdd ?
rolly41 231Messages postés dimanche 16 novembre 2008Date d'inscription 13 juin 2017 Dernière intervention - 13 juin 2017 à 21:18
La page shoutbox.php appel ce script (shoutbox.js) :
$('#envoyer').click(function(e)
{
e.preventDefault();
var url="./include/ajax-shoutbox.php";
var pseudo = $('#pseudo_expediteur').val();//pseudo de l'expediteur
var message = $('#message_expediteur').val();//message envoyé
var idsalon = $('#idsalon').val();//id du salon
var id_expediteur = $('#id_expediteur').val();//id de l'expediteur
var timer = new Date(); //création variable timer
var annee = timer.getFullYear();
var mois = timer.getMonth()+1;
var jour = timer.getDate();
var hrs = timer.getHours();
var mins = timer.getMinutes();
var secs = timer.getSeconds();
var heure = ((hrs<10)?"0":"")+hrs;
var minute = ((mins<10)?"0":"")+mins;
var seconde = ((secs<10)?"0":"")+secs;
var date = jour+"/"+mois+"/"+annee;
var time = heure+":"+minute+":"+seconde;
if(message != "") // on vérifie que la variable n'est pas vides
{
$.post(url,{action:"addMessage",message:message},function(data){
},"json");
$('#messages').append("[" + time + "] " + pseudo + " : " + message + "<hr />");
element = document.getElementById('defillement');
element.scrollTop = element.scrollHeight;
return false;
}
else
{
alert('Votre message est vide');
}

});


function reinit()
{
document.getElementsByName("message")[0].value = "";
}


Quand je clique sur "Envoyer", le scrip me dit : "Votre message est vide". Chose qu'il ne me disait pas avant la fonction reinit. Du coup, il n’envoie pas le formulaire à la page de traitement php qui elle doit enregistrer les informations dans la base de données.

Page de traitement pour enregistrer les informations dans la base de données (ajax-shoutbox.php):
<?php
session_start();
require ("connect-bdd.php");
$d=array();
if($_POST['action']=="addMessage")
{
$d["erreur"]='connecté';
extract($_POST);
$message=mysql_escape_string($message);
//Permet l'ajout d'un message
if($_POST['action']=="addMessage")
{
$d["erreur"]='formulaire trouvé';
$pseudo_expediteur=$_SESSION['pseudo_expediteur'];
$date= date("j/n/Y");
$time= date("H:i:s");
$id_expediteur=$_SESSION['id'];
$id_salon=$_SESSION['salon'];
$requete = $bdd->prepare("INSERT INTO shoutbox_msg (id_expediteur, time_msg, date_msg, msg, id_salon) VALUES (?,?,?,?,?)");
$requete->bindParam(1, $id_expediteur);
$requete->bindParam(2, $time);
$requete->bindParam(3, $date);
$requete->bindParam(4, $message);
$requete->bindParam(5, $id_salon);
$requete->execute();
if($requete)
{
$d=["erreur"]='Votre message a bien été enregistré';
}
else
{
$d["erreur"]='Impossible d\'enregistrer votre message';
}
}
else
{
$d["erreur"]='Aucun formulaire reçu';
}
}
else
{
$d["erreur"]='Merci de vous connecter avant de discuter';
}
echo json_encode($d);
?>
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !