Comment afficher un message d'erreur, dans une nouvelle fenêtre

Fermé
christel151173 Messages postés 28 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 15 mars 2013 - 14 mars 2013 à 20:51
charcom Messages postés 60 Date d'inscription jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 - 21 mars 2013 à 17:47
Bonjour,

J'ai crée un formulaire sur mon site, dans ce formulaire, j'ai rajouté un code php obligeant les visiteurs à remplir certains champs.

Si les champs ne sont pas remplit, un message d'erreur, le leur spécifie. Mon souci, c'est que ce message d'erreur, s'affiche dans une nouvelle fenêtre et ferme le site.

Est-il possible de rajouter dans mon code php, un élément permettant que cette fenêtre de message d'erreur, s'affiche dans une autre fenêtre, mais tout en laissant le site ouvert.... j'espère avoir été claire !!!

Voici la ligne de mon code :

}
Else {
echo "Vous n'avez pas saisi toutes les informations";
}

Merci.

A voir également:

12 réponses

aucellus Messages postés 4 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 14 mars 2013
14 mars 2013 à 21:19
Bonsoir,
je te propose ceci

}
Else {
$erreur = "Vous n'avez pas saisi toutes les informations";


Puis dans ta page tu affiches l erreur où tu veux

<?php echo $erreur ?>

J te recommande de traiter les erreurs en jquery c est plus sympas pour l utilisateur car ça affiche les erreurs directement lors de la saisie.....

Bon courage
0
christel151173 Messages postés 28 Date d'inscription jeudi 14 mars 2013 Statut Membre Dernière intervention 15 mars 2013
15 mars 2013 à 09:08
Bonjour, merci pour cette réponse.
Mais je ne dois pas faire ce qu'il faut, car cela ne marche pas.

A la place, j'ai un message d'erreur "Parse error: syntax error, unexpected '<' in /home/g........."

J'ai placé ce code dans ma page php
}
Else {
$erreur = "Vous n'avez pas saisi toutes les informations";

Puis, j'ai placé ce code dans ma page html
<?php echo $erreur ?>
0
Salut,

Ton erreur indique qu'il y a un caractère '<' qui ne devrait pas être la. Le message précise le fichier et le numéro de la ligne où se trouve l'erreur.
0
Utilisateur anonyme
15 mars 2013 à 09:33
Bonjour

Bien sûr, christel a mis <?php echo $erreur ?> dans un passage qui était déjà du php.
Dans ce cas, il ne faut mettre que echo $erreur;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
christel151173
21 mars 2013 à 08:27
Bonjour, ça ne marche toujours pas. En mettant ce code, j'ai ce message d'erreur :
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/gitevaca/public_html/page.php on line 26
Je dois faire une erreur quelque part. Quelqu'un saurait-il me conseiller svp, merci.


<?php

$to = ".....................fr"; /* ADRESSE DE LA PERSONNE QUI DOIT RECEVOIR LE FORMULAIRE */

$from = "............. "; /* NOM DE LA PERSONNE QUI ENVOIE LE MAIL OU ADRESSE MAIL */
$h = "From: " . $from;

$subject = ".................."; /* OBJET DU MAIL */

$message = "";

/* début code obligation champs à remplir */

If (isset($_POST['nom']) AND isset($_POST['email']) AND isset($_POST['telfixeoumobile'])AND isset($_POST['message']))
{
/* fin code obligation champ à remplir */

while (list($key, $val) = each($_POST))
{
$message .= "$key : $val\n";
}

mail($to, $subject, $message, $h);

header("Location: http://www............html");


}
Else {
$erreur "Vous n'avez pas saisi toutes les informations";
}

echo $erreur
?>
0
Utilisateur anonyme
21 mars 2013 à 08:54
Et c'est laquelle, la ligne 26 ? Chez moi, l'erreur est ligne 30 :
$erreur "Vous n'avez pas saisi toutes les informations"; 

Il te manque le = :
$erreur= "Vous n'avez pas saisi toutes les informations"; 
0
christel151173
21 mars 2013 à 08:58
Oup, effectivement, j'avais oublié le =
Ca marche, je te remercie.
Par-contre, ma question du début, était que ce message d'erreur puisse s'ouvrir dans une nouvelle fenêtre ou page, sans fermer la page du site.
J'espère être claire.
Un peu comme quand on utilises l'option "blank" dans un lien, quand on veut que celui-ci s'ouvre dans une nouvelle page, tout en laissant le site visité, ouvert.
0
Utilisateur anonyme
21 mars 2013 à 09:05
Oui c'est possible, mais je n'ai pas de code tout fait à te proposer.
Au lieu d'insérer les messages d'erreur dans ta page, il faut les insérer dans un script javascript qui s'exécutera quand ta page sera chargée.
Tu as (au moins) deux options pour ce code javascript ; soit il affiche lui-même les messages d'erreur, ce qui me semble le plus simple, soit il ouvre une nouvelle fenêtre dans laquelle tu afficheras les messages d'erreur.

Il y a sans doute d'autres façons de procéder, quelqu'un d'autre aura peut-être une idée plus simple à mettre en oeuvre.
0
christel151173
21 mars 2013 à 09:07
Je te remercie.
0
charcom Messages postés 60 Date d'inscription jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 5
21 mars 2013 à 15:50
Tu demandes du PHP, on te propose d'aller apprendre le javascript... LOL

Si tu veux afficher ton message d'erreur dans une autre fenêtre, il faut que tu ouvres un nouveau fichier et non pas que tu affiches simplement un message. Tu ne peux pas commander le navigateur avec du PHP, tu dois lancer ou relancer un script si tu veux ouvrir une nouvelle fenêtre.

Une possibilité, parmi d'autres, est de lancer le traitement de ton formulaire dans une autre fenêtre avant même ta vérification, c'est à dire que tu modifies ta balise <form> au niveau de ton formulaire en ajoutant le target :

<form method=POST action=page.php target="_blank">

Dans ce cas, quelle que soit la réponse (OK ou erreur), elle s'ouvrira dans une autre fenêtre.

L'avantage de cette solution est qu'en cas d'erreur, ton internaute n'est pas obligé de tout resaisir....
0
Utilisateur anonyme
21 mars 2013 à 16:29
Christel demande une solution et e semble pas avoir les compétences pour décider si javascript est plus ou moins approprié que PHP.

Dans ce cas, quelle que soit la réponse (OK ou erreur), elle s'ouvrira dans une autre fenêtre. Et ce, à tel point que s'il n'y a pas d'erreur, tu vas quand même obligatoirement ouvrir une autre fenêtre. Même si tu n'as rien à mettre dedans.... Ce n'est probablement pas l'effet désiré.

L'avantage de cette solution est qu'en cas d'erreur, ton internaute n'est pas obligé de tout resaisir....

Je ne vois pas le rapport. Avec la mienne non plus, l'internaute n'a rien à ressaisir, si on traite le formulaire normalement c'est à dire en restituant les valeurs déjà saisies comme les font tous les scripts normalement constitués.
0
charcom Messages postés 60 Date d'inscription jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 5
Modifié par charcom le 21/03/2013 à 16:45
Ta solution est OK, elle est même idéale je dirais. Si on connait le Javascript il est évident que mettre les messages d'erreur en direct en même temps que la saisie, c'est carrément mieux, là n'est pas le problème. Elle est juste inutile si on ne connaît pas le Javascript... Je doute que Christel soit venue ici demander de l'aide PHP pour lire "va apprendre le javascript" ; ça n'aide en rien. Faut pas le prendre perso, surtout, keep cool.
0
christel151173
21 mars 2013 à 16:11
Merci charcom, pour ta réponse, je vais faire la modif et je vous tiens au courant.
0
christel151173
21 mars 2013 à 16:29
Je viens donc de modifier ma balise <form> au niveau de mon formulaire en ajoutant le target :

voici mon code :

<form action="page.php" method="post" name="form1" target="_blank" id="form1">

Alors, j'ai remplit le formulaire et fais exprès d'oublier de remplir un champ obligatoire, une nouvelle fenêtre s'est ouverte et la page du site, ne s'est pas fermée. SUPER ça a marché.

Par-contre, je ne sais pas ce que j'ai fais, mais même si je remplis correctement mon formulaire sans oublier aucun des champs obligatoires, je n'ai plus ma page avec mon message OK qui s'ouvre, mais la page d'erreur.
J'ai dut bouger quelque chose ou oublier un bout de code.

Voici mon code php :

<?php

$to = "............."; /* ADRESSE DE LA PERSONNE QUI DOIT RECEVOIR LE FORMULAIRE */

$from = "............. "; /* NOM DE LA PERSONNE QUI ENVOIE LE MAIL OU ADRESSE MAIL */
$h = "From: " . $from;

$subject = ".........."; /* OBJET DU MAIL */

$message = "";

/* début code obligation champs à remplir */
If (isset($_POST['nom']) AND isset($_POST['email']) AND isset($_POST['telfixeoumobile'])AND isset($_POST['message'])) {
/* fin code obligation champ à remplir */

while (list($key, $val) = each($_POST)) {
$message .= "$key : $val\n";
}

mail($to, $subject, $message, $h);

header("adresse de la page quand le formulaire est bon envoiok.html");


}
Else {
$erreur= "Vous n'avez pas saisi toutes les informations";

}
echo $erreur
?>
0
charcom Messages postés 60 Date d'inscription jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 5
21 mars 2013 à 16:43
Je ne suis pas sure, mais je pense que c'est parce que ton echo $erreur est en dehors de ton Else, donc du coup, il s'affiche dans tous les cas (normalement ton email a quand même été envoyé. Et puis aussi il manque un point virgule après $erreur;
0
christel151173
21 mars 2013 à 16:54
}
Else {
$erreur= "Vous n'avez pas saisi toutes les informations";

echo $erreur;
}
?>

Que le formulaire soit bien ou mal remplit, c'est la fenêtre d'erreur qui s'ouvre et je ne reçois dans les 2 cas, aucun mail. Flûte de flûte, ça ne marche toujours pas.
0
charcom Messages postés 60 Date d'inscription jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 5
21 mars 2013 à 17:05
Dans ce cas, vérifie que :
- les champs vérifiés (nom, email, telfixeoumobile et message) existent bien dans ton formulaire
- et qu'ils ont bien ces noms là
0
christel151173
21 mars 2013 à 17:08
C'est vérifié, ça marchait trés bien, je ne sais pas ce que j'ai fais, mais ça marchait avant que je ne rajoute le code php pour le message d'erreur.
Maintenant, ça m'ouvre une page avec un code d'erreur :

Parse error: syntax error, unexpected T_ELSE in /home/gitevaca/public_html/page.php on line 25
0
charcom Messages postés 60 Date d'inscription jeudi 24 janvier 2013 Statut Membre Dernière intervention 3 novembre 2022 5
Modifié par charcom le 21/03/2013 à 17:17
} else { echo "Vous n'avez pas saisi toutes les informations"; }

serait plus simple.
Ton nouveau message d'erreur suppose qu'il te manque une accolade....
0