redirection avec un message de confirmation

mmlou
Invité n'ayant pas de compte PHPfrance

24 juil. 2012, 11:05

Bonjour, voici mon problème:

J'ai une page de création d'un nouveau compte utilisateur. Dans le cas où les données sont bien remplies, l'utilisateur est redirigé vers une page de confirmation. Dans le cas contraire, je souhaite rediriger vers la page précédente en affichant un message d'erreur de saisie comme par exemple "les champs X et Y ne sont pas remplies".La redirection marche parfaitement à l'aide de la fonction header reste le problème d'affichage.Peut-on m'aider ?

Eléphant du PHP | 53 Messages

24 juil. 2012, 11:52

Bonjour,

un script du genre devrai fonctionner :
if ( !empty($X) AND !empty($Y) )
{
      header("Location: pageSuivante.php"):
}
elseif ( empty($X) )
{
      $msgError = 'X n\'est pas remplie';
      header("Location: pagePrecedent.php"):
}
elseif ( empty($Y) )
{
      $msgError = 'Y n\'est pas remplie';
      header("Location: pagePrecedent.php"):
}
else
{
      $msgError = 'X et Y ne sont pas remplies';
      header("Location: pagePrecedent.php"):
}
Et tu interprète $msgError dans ta page précédentes.

Cordialement.
Modifié en dernier par DiurnaSys le 24 juil. 2012, 14:24, modifié 1 fois.
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison.

ViPHP
xTG
ViPHP | 7331 Messages

24 juil. 2012, 12:58

Si tu veux garder le message il faut soit le stocker dans une variable de session, soit le faire passer dans l'url.
$_SESSION['erreur'] = 'X n\'est pas remplie';
header("Location: page.php");

// ou

$erreur = 'X n\'est pas remplie';
header("Location: page.php?erreur=" . $erreur);

Eléphant du PHP | 53 Messages

24 juil. 2012, 14:22

Rebonjour,

Ha oui merci xTG pour la correction à ma décharge je m’était concentré sur la logique et non sur l’exactitude du code ( Rappel pour plus tard : se relire ).

Cordialement.
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison.

mmlou
Invité n'ayant pas de compte PHPfrance

24 juil. 2012, 14:40

En fait, je voulais dire par la page précédente la page de saisie (qui est la page actuelle). voici la page add_usr.html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link href="style.css" rel="stylesheet" type="text/css" media="screen">
<title>Création de compte utilisateur</title>
</head>
<body>
<h1>Formulaire d'inscription</h1>
<form action="add_usr.php" id="formulaire" method="post">
<table>
<tr>
<td>nom utilisateur:</td>
<td><input type="text" name="login"/></td>
</tr>
<tr>
<td>mot de passe: </td>
<td><input type="password" name="password"/></td>
</tr>
</table>
<input type="submit" name="valider">
</form>

</body>
</html>

voici le code add_usr.php :

<?php
// On intialise la connexion à la base de données
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='3307';
$PARAM_nom_bd='MonSite'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='ADMIN'; // mot de passe de l'utilisateur pour se connecter
$bdd = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
$insert_user = $bdd->prepare('INSERT INTO users (login , password) VALUES (?,?)');
//création de compte
if (!empty($_POST['login'])&& !empty($_POST['password']))
{
$insert_user->execute(array($_POST['login'],$_POST['password']));
//compte crée
//header("Location: confirmation.html");
}
else
{
// Le formulaire n'est pas complet
// On renvoit vers la page précédente
header("Location: add_user.html);
}
?>


j'utilise la méthode $_POST et non pas $_GET.

Eléphant du PHP | 53 Messages

24 juil. 2012, 14:52

Rebonjour,

Sans vouloir être impolie que demande tu dans ton dernier post ?
Je ne comprend pas.

Cordialement.
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison.

mmlou
Invité n'ayant pas de compte PHPfrance

24 juil. 2012, 15:23

Je voulais savoir est-ce possible de réaliser dans le même code php (add_usr.php) un contrôle de saisie sur la page, de passer un message d'erreur dans l'URL est d’interpréter le message d'erreur?
et comment je pourrais l'afficher dans la page html add_usr.html? (j'ai essayé avec echo "<h1>$erreur</h1>";mais rien n'est affiché )

Eléphant du PHP | 53 Messages

24 juil. 2012, 15:25

Rebonjour

Oui c'est possible et c'est déjà ce que tu fait 8-| .

Cordialement.
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison.

mmlou
Invité n'ayant pas de compte PHPfrance

24 juil. 2012, 15:48

Je suis débutante en PHP et je demande ces questions pour être sure de ce que je fais. j'ai tenté de passer l'argument dans l'url mais je ne parviens pas à l'afficher dans la page html.

Eléphant du PHP | 53 Messages

24 juil. 2012, 16:09

Rebonjour,

On a tous été débutant dans quelque chose.
Ton formulaire envoie en méthode "POST" tu doit donc récupérer tes variables avec $_POST["nomDeMaVariable"] mais si tu redirige le tableau $_POST sera vider, pour transmettre des variables après redirection tu doit les stocker dans le tableau $_SESSION comme cela :
$_SESSION["nomDeMaVariable"] = $_POST["nomDeMaVariable"];
Si tu transmet tes variables via l'url il te faut utiliser $_GET à la place de $_POST.

Je te conseille d'apprendre via tutoriels et cours :
http://php.developpez.com/cours/

Personnellement j'ai débuté avec ce tutoriel :
http://www.siteduzero.com/tutoriel-3-14 ... mysql.html

Cordialement.
Ce n'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison.