[PHP] Appeler une fonction javascript

Voilà j’ai un autre soucis. J’ai un fichier php qui ne contient juste ma fonction et donc il n’y a pas de balise html, body, etc… juste la fonction. Et je veux pouvoir lui dire d’exécuter une fonction javascript qui se trouve dans un autre fichier dédié spécialement aux opérations javascript.

Malheureusement, en tentant de faire un :

if($i%2 == 0) echo "<div id='message_pair'><b><font color='#FF725F'>".$regs[1]."</font></b><br><i>le ".$regs[2]." a ".$regs[3]."</i><br><script language=javascript>parseMessage(".stripslashes($regs[4]).")</script><br><br />"; else echo "<b><font color='#FF725F'>".$regs[1]."</font></b><br><i>le ".$regs[2]." a ".$regs[3]."</i><br><script language=javascript>parseMessage(".stripslashes($regs[4]).")</script><br><br />";

Et plus précisément ce bout de code :

Je n’ai rien en retour sachant que ma fonction parseMessage doit retourner une string.

Pourquoi t’ecris pas parsemessage en php ?

Et bien (sous reserve que j’ai compris), il faut “inclure” le fichier javascript pour pouvoir avoir acces a la fonction parseMessage.
pour cela, et ça devrait marcher.

Je vais tester. Merci.

Edit : malheureusement, ca ne fonctionne pas.

je retest :

Pourquoi t’écris pas parseMessage en php ?

[quote=“avavrin, post:5, topic: 32197”]je retest :

Pourquoi t’écris pas parseMessage en php ?[/quote]

Je veux bien mais je veux vérifier le navigateur et je ne sais plus si RegExp est géré en php.

je crois que j’ai compris : quand tu passe ta chaine a javascript, il faut qu’elle soit entourée de quotes : ’ ou " (échapée éventuellement) et là ça n’a pas l’air d’être le cas.

Essayé, marche pas non plus. D’ailleur, il ne veut même pas rentrer dans ma fonction javascript.

c’est visible en ligne ?
(pour voir le code généré)

[quote=“fser, post:9, topic: 32197”]c’est visible en ligne ?
(pour voir le code généré)[/quote]

Je ne peux rien voir, au lieu de m’afficher ce qu’il devrait avoir, le champ est vide alors que le contenu de la variable $regs[3] contient un message. Tu peux le voir sur le chat de http://nebulastar.free.fr tous les 2 messages.

ok pour moi ça marche pas … B)
mais plutot que de faire un form.nom.value, pourquoi tu n’essaye pas avec document.getElementById(‘id_du_champs_que_tu_va_donner_a_tes_input’).value ?

[quote=“fser, post:11, topic: 32197”]ok pour moi ça marche pas … B)
mais plutot que de faire un form.nom.value, pourquoi tu n’essaye pas avec document.getElementById(‘id_du_champs_que_tu_va_donner_a_tes_input’).value ?[/quote]

L’appel à la fonction AddMessage (javascript) fonctionne et passe ensuite à la fonction Add_Message (php) qui fonctionne très bien. C’est juste l’appel de la fonction javascript parseMessage dans Add_Message que sa merdouille ><.

Pour le source du js :
http://nebulastar.free.fr/nebulastar_scripts.js

ta fonction parseMessage, elle retourne une chaine ou elle écrit une chaine ?

dans le cas 1 il faut que tu fasse un window.write pour écrire quelque chose dans le fichier html :

(A la condition, cité plus haut, que tu ai bien inclus le fichier javascript contenant la fonction parseMessage dans ta page html)

Edit : D’après ton fichier, la fonction renvoie la chaine donc, il faut bien que tu l’écrive.

[quote=“engy, post:13, topic: 32197”]ta fonction parseMessage, elle retourne une chaine ou elle écrit une chaine ?

dans le cas 1 il faut que tu fasse un window.write pour écrire quelque chose dans le fichier html :

(A la condition, cité plus haut, que tu ai bien inclus le fichier javascript contenant la fonction parseMessage dans ta page html)[/quote]

J’ai juste besoin de la chaine retournée. Sachant que la chaine est déjà sur un fichier que ce dernier me sert pour afficher les derniers messages dans la chat. Les messages seront affichés via echo

Juste pour reprendre avavrin : oui les regexp ça existe en php, et pour le coup ça me parait mieux non, si un visiteur n’a pas javascript, rien ne marche … :s
j’ai l’impression que ta verification des caracteres speciaux merdouille.
tu peux te contenter d’un “htmlspecialchars” en php ça suffira, et ça posera sans doute moins de problemes.

/me allucine de la merde pour faire une shoutbox alacon B)

ca n’a pas de sens ce que tu dis, le php n’a pas la moindre idée de ce que fais ton fichier javascript. le php ecrit ce que tu lui dit, l’envoie au navigateur et seulement ensuite le navigateur execute le javascript.

imaginons je prends ton code, sur le serveur il y a ca :

avec $regs[1] = a; $regs[2] = b; $regs[3] = c et $regs[1] = d;

lorsque tu appelle ton fichier, le php s’exécutent côté serveur et c’est ça qui est envoyé a ton navigateur :

le javascript n’est pas encore appelé. c’est seulement une fois dans le navigateur qu’il s’execute. et la tel que c’est écrit, ton code ne fait rien, tu appelle une fonction et tu ne fait rien de la valeur de retour (et il manque des quote pour protéger la chaîne), donc il faut bien un window.write si tu veux que cela fonctionne tel que tu l’as écrit.

sinon +1 ça serait plus propre que tout se passe côté serveur en php mais c’est pas forcement trivial à recoder si tu es débutant.

Erf, ok, bon je vais corriger le bug sur les caractères spéciaux et ensuite je fonce sur le parser. Raaah, moi qui voulait pouvoir traiter les url afin qu’on puisse cliquer dessus.

Fser -> Ouais, faire une shoutbox alacon comme tu dis, cca peut devenir chiant aussi >< surtout que je ne suis pas doué en php. Enfin d’un autre coté, ca va faire 2 ans que je n’y ai pas touché en profondeur.

pour les urls cliquables et companie, fais le en php !

<?php $text = preg_replace('=([^\s]*)(www\.)=', ' http://www.', $text); $text = preg_replace('=([^\s]*)(\w://[www\.]*)([^\s]*)=', '<a href="\\1\\2\\3\\4" target=_blank>\\3\\4</a>', $text); ?>
(issu des commentaires à “preg_replace”)

[quote=“fser, post:18, topic: 32197”]pour les urls cliquables et companie, fais le en php !

<?php $text = preg_replace('=([^\s]*)(www\.)=', ' http://www.', $text); $text = preg_replace('=([^\s]*)(\w://[www\.]*)([^\s]*)=', '<a href="\\1\\2\\3\\4" target=_blank>\\3\\4</a>', $text); ?>
(issu des commentaires à “preg_replace”)[/quote]

Ton code fonctionne aussi dans le cas, si tu files du texte suivi d’une URL puis d’un texte ? Parce que j’ai pas l’impression, à moins d’avoir zappé quelque chose.

demo ici : http://home.fser.info/geekzone/url.php
ça marche donc B)

http://home.fser.info/geekzone/url.php?source=1 pour afficher la source.