Page 1 sur 1

Lancer une fonction javascript depuis script php ?

Posté : 20 févr. 2007, 23:12
par telecofr
Salut,

j'ai un script php dans la partie <body> qui utilise une condition if/else et je voudrais lancé automatiquement une fonction javascript dans la partie else.
J'ai essayé cela, mais cela ne marche pas :

Code : Tout sélectionner

if(!test) echo 'erreur'; else <script language="JavaScript">Initialise('input1', 'input2');</script>;
j'ai essayé aussi de mettre un echo devant le "<script>...</script>" mais cela ne marche pas non plus.

Comment faire pour lancer cette fonction "Initialise" ?

Merci de votre aide !

Posté : 21 févr. 2007, 09:21
par albat
Ceci devrait fonctionner :
if (!test)
   { echo "erreur";
   }
   else
   { echo "<script type='text/javascript'>Initialise('input1', 'input2');</script>\n";
   }
ou, plus logique :
if (test)
   { echo "<script type='text/javascript'>Initialise('input1', 'input2');</script>\n";
   }
   else
   { echo "erreur";
   }
autre écriture :
echo (test ? "<script type='text/javascript'>Initialise('input1', 'input2');</script>\n" : "erreur"); 

Posté : 21 févr. 2007, 10:15
par zeus
Petite précision :
La solution d'Albat doit fonctionner, mais ne perd pas de vue que le JS s'exécute après que le PHP a complètement terminé son exécution.

le PHP va faire que le code JS sera exécuté dès que la page sera affichée et non pas lors de l'exécution du code PHP.

Posté : 21 févr. 2007, 11:23
par telecofr
Merci Albat pour ta réponse.

J'ai essayé ta méthode, mais cela ne marche pas... :(

C'est pour un formulaire de contact : quand je clique sur "envoyer", cela renvoi sur la même page, et le script php vérifie si les input ne sont pas vides/corrects.
Si vide => message d'erreur, et donc on n'efface pas les input pour les corriger
Si pas vide => envoie du mail et effacement des input.

Le pb ici est donc : que le message soit envoyé ou erroné, les input ne sont pas effacés.

Merci de ton aide !

Posté : 21 févr. 2007, 11:32
par albat
Dans ce cas, il serait opportun de nous montrer un peu plus de ton code.
La solution est ailleurs... ;)

Posté : 21 févr. 2007, 11:41
par telecofr
j'ai trouvé une façon plus radicale pour être sûr d'effacer les input:
si le message est envoyé, je fais dans la condition if :
$_POST['input1']='';
$_POST['input2']='';

et là cela marche ! :)

Je m'obstinais à faire du javascript... ! :roll:

Merci de vos aides !!!

Une autre solution

Posté : 27 févr. 2007, 22:28
par Phil93
Désolé si on ne doit pas répondre à une question résolue, mais comme j'ai trouvé qu'elle n'était résolue qu'à moitié :D je me permets d'y répondre autrement :

L'autre solution, javascript celle-là, est bien entendu d'utiliser le "onload" du body :

Code : Tout sélectionner

<?PHP … … if (cecicela ) $maFonctionDinitialisation = "ditluibonjour()"; elseif (cecicela2 ) $maFonctionDinitialisation = "ditluidallerserhabiller()"; elseif etc. … … echo <<<TXT # Mon en-tête et tout le tralala … # Et enfin : <body onload="$maFonctionDinitialisation"> … … </body> </html> TXT; ?>
Bien à vous tous,

Phil