Pb avec alert()

Eléphanteau du PHP | 26 Messages

15 juin 2007, 11:07

Bonjour à tous et à toutes,

Je construit un formulaire en php et j'ai du mal à intégrer la fonction javascript alert()
Mon formulaire (de methode POST) est traité dans 'formulaire.php'
Lorsque je valide le formulaire je traite les données dans 'formulaireSubmit.php'

A la fin de ce traitement si une erreur est apparue dans la saisie des données je reviens dans 'formulaire.php'

Code : Tout sélectionner

if ($error){?> <script type="text/javascript"> alert ("erreur"); </script> <? header('Location: TRA_packOneShot.php?id=' . intval($_GET['id'])); } else{ header('Location: TRA_selfRankTest.php?idPack=' . intval($_GET['id'])); }
Je souhaiterai intégrer dans alerte un message d'erreur provenant d'une variable de php ($str), est-ce possible?
Le message d'alerte ne s'affiche que dans 'formulaireSubmit.php' et donc non visible par l'utilisateur. Suis-je obligé de traiter l'alerte depuis formulaire.php ?

Merci de votre aide

Eléphant du PHP | 73 Messages

15 juin 2007, 11:29

Bonjour,

Si tu fait comme un appel vers une fonction en php et que tu met ta fonction javascript

onsubmit="RetourneStr('<?php echo $str ?>')"

function RetourneStr(str)
{
Alert(str)
}


Je suis aussi débutant en javascript (en fait j'ai commencer hier) mais je pense que déja là tu pourra avoir ton "Alert" avec l'erreur normalement.

Sinon je pense que l'utilisateur devrait voir le message ... ^^
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD

Eléphanteau du PHP | 26 Messages

15 juin 2007, 11:36

Le souci c'est que l'appel de la fonction alert() ne se fait pas dans formulaire.php
Du coup je ne l'execute pas par le biais de Onclick

Est-il possible de l'appeler sans aucune action de la part de l'utilisateur ??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 juin 2007, 11:49

Pas de soucis pour passer un texte php dans ton alert, dans la mesure ou comme pour le html, php va générer le code javascript.. à toi de placer et/ou protéger correctement guillemets et apostrophes pour que cela fonctionne :)

En revanche, dès le moment où tu vas envoyer du code au navigateur (donc ta balise script) php ne pourras plus effectuer de header et donc la redirection.... Pourquoi ne pas passer un paramètre dans ta redirection pour indiquer le type d'erreur, et gérer ce résultat dans ton formulaire pour afficher le message d'alerte ?

'formulaireSubmit.php'
if ($error)
  header('Location: TRA_packOneShot.php?id=' . intval($_GET['id'] . '&error=' . $error)); 
else 
  header(...);
'formulaire.php'
<?php if (isSet($_GET['error'])) { ?> 
<script type="text/javascript"> 
  alert ("erreur"); 
</script> 
<?php  } ?>
Tu peux ensuite soit passer le message d'erreur dans l'url et l'afficher (mais c'est pas top) soit simplement un code erreur, que tu feras correspondre dans formulaire.php pour afficher le message qui va bien :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 26 Messages

15 juin 2007, 12:02

Merci pour ta reponse Ryle :D

Je pense effectivement que le mieux est de génére un code erreur que je traiterai dans formulaire.php

En revanche existe-t-il un moyen d'appeler un fonction javascript qui me crée l'alerte (comme celle de Pierig par example) sans aucune intervention de l'utilisateur?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 juin 2007, 12:21

Tu peux le faire au chargement de la page en appellant ta fonction dans l'attribut onLoad="" de la balise body, ou simplement en laissant le navigateur l'interprété lorsqu'il lit la page :
<script language="javascript">
function toto() { ... }
....
toto(); // appel la fonction lorsque le navigateur arrive à cette ligne (il faut que la fonction ait été définie avant dans le code)
</script>

// ou sinon

<body onLoad="toto();"> <!-- appel la fonction une fois la page chargée -->
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 26 Messages

15 juin 2007, 14:37

Merci pour tout

Tout marche impec :wink:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 juin 2007, 18:42

Modération :
risa83, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...