Page 1 sur 1

Pb avec alert()

Posté : 15 juin 2007, 11:07
par risa83
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

Posté : 15 juin 2007, 11:29
par Pierig
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 ... ^^

Posté : 15 juin 2007, 11:36
par risa83
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 ??

Posté : 15 juin 2007, 11:49
par Ryle
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 :)

Posté : 15 juin 2007, 12:02
par risa83
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?

Posté : 15 juin 2007, 12:21
par Ryle
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 -->

Posté : 15 juin 2007, 14:37
par risa83
Merci pour tout

Tout marche impec :wink:

Posté : 15 juin 2007, 18:42
par Ryle
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 ;)