Lancer une fonction javascript depuis script php ?

Eléphanteau du PHP | 17 Messages

20 févr. 2007, 23:12

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 !

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 févr. 2007, 09:21

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"); 

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 févr. 2007, 10:15

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 17 Messages

21 févr. 2007, 11:23

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 !
Modifié en dernier par telecofr le 21 févr. 2007, 11:33, modifié 1 fois.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

21 févr. 2007, 11:32

Dans ce cas, il serait opportun de nous montrer un peu plus de ton code.
La solution est ailleurs... ;)

Eléphanteau du PHP | 17 Messages

21 févr. 2007, 11:41

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 !!!

Eléphanteau du PHP | 49 Messages

27 févr. 2007, 22:28

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