Passer une variable dans une fonction

Passer une variable dans une fonction - PHP - Programmation

Marsh Posté le 24-10-2007 à 23:27:59    

Bonjour à tous.
 
Je réalise un chat en AJAX. Je veux passer le contenu d'une textarea dans une fonction, qui elle-même ira ensuite ajouter ce texte dans la base de donnée, accompagné du pseudo et de la date.
 
Quand on appuie sur le bouton Envoyer, le contenu "message" du formulaire "post" est envoyé à la fonction "do_multiply" (le nom importe peu, c'est parce que c'est bidouillé à partir d'un autre code :D ) :

Code :
  1. <form name="post" onSubmit="do_multiply()" action=""/>
  2. <textarea name="message" id="message" rows="8" cols="50"></textarea>
  3. <input type="button" name="envoyer" value="Envoyer" onclick="do_multiply()"><br /></fieldset>
  4. </form>


Il y a donc ensuite une partie Javascript qui prend le contenu du champ "message" et le transforme en variable "txtmessage" :

Code :
  1. function do_multiply() {
  2.  var txtmessage = document.post.message.value;
  3.  x_multiply(txtmessage);
  4.  alert(txtmessage);
  5.  document.post.message.value = "";
  6. }


Le "alert(txtmessage);" me permet de vérifier que la variable "txtmessage" existe et qu'elle contient bien le texte de la textarea.
 
Donc jusqu'ici tout va bien. :sol:  
 
Ensuite le Javascript précédent renvoi la valeur "txtmessage" à une autre fonction PHP, "multiply" :

Code :
  1. function multiply($txtmessage) {
  2. $conv_texte = mysql_real_escape_string(nl2br(htmlspecialchars($txtmessage, ENT_QUOTES)));
  3. $conv_pseudo = mysql_real_escape_string(htmlspecialchars($_SESSION['pseudo']));
  4. $temps = time();
  5. mysql_query("INSERT INTO chat_prive VALUES('', '$conv_texte', '".$temps."', '$conv_pseudo')" );
  6. }


$_SESSION['pseudo'] fonctionne bien, mais $txtmessage ici ne retourne plus rien. :heink:  
La requête MySQL enregistre bien le pseudo et le time, mais le texte du message reste vide.
 
Si quelqu'un pouvait m'expliquer pourquoi et ce qu'il faut que je change pour que $txtmessage contienne bien la valeur transmise (ça doit être tout bête je suis sûr :D , mais ça fait une heure que je galère juste sur ça...).
Merci d'avance pour vos réponses. ;)

Reply

Marsh Posté le 24-10-2007 à 23:27:59   

Reply

Marsh Posté le 24-10-2007 à 23:36:28    

Connais pas grand chose à ça alors je peux me planter :
La valeur de la variable javascript pourrait se retrouver dans le php ?!
Je ne comprends pas comment. Le javascript s'exécute sur le client et le php sur le serveur non ?
Ou alors on la fait passer sur validation d'un truc, en post.


Message édité par gzii le 24-10-2007 à 23:37:02
Reply

Marsh Posté le 24-10-2007 à 23:52:48    

Moi aussi je peux me tromper mais ce n'est pas justement le principe de l'AJAX de faire que client et serveur reste connectés?
 
Le code sur lequel je me suis basé (et qui fonctionne bien entendu :D ) :
 
Javascript :

Code :
  1. function do_multiply() {
  2.  // get the folder name
  3.  var x, y;
  4.  x = document.getElementById("x" ).value;
  5.  y = document.getElementById("y" ).value;
  6.  x_multiply(x, y, do_multiply_cb);
  7. }


PHP :

Code :
  1. function multiply($x, $y) {
  2.  return $x * $y;
  3. }


 
Chez eux ça ne pose pas de problème.
Leur code complet (pour les curieux :D ) : http://www.modernmethod.com/sajax/ [...] ly.php.txt


Message édité par Zoltan32 le 25-10-2007 à 00:04:42
Reply

Marsh Posté le 25-10-2007 à 00:46:39    

Ajax ne permet pas que le client et le serveur reste connecté. Ajax sert juste à faire des requetes get ou post au serveur afin de ne raffraichir qu'une partie de la page.
 
Si tu veux qu'une variable javascript soit envoyé au php, il faut l'envoyer à l'aide d'une requete ajax dans laquelle tu passerais ta variable en get ou en post.
 
Je ne vois pas ou tu utilises ajax là  :heink:
Peut etre dans le x_multiply() mais faudrait que tu me postes ta fonction.


Message édité par FlyPhp le 25-10-2007 à 00:48:59
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed