Aller au contenu

[RESOLU]Retenir les infos d'un formulaire


Messages recommandés

Bonjour,

j'ai fais mon petit script PHP et j'aimerais que lorsqu'une donnée n'est pas correcte, lorsque je clique sur un lien "retour" par exemple, que mes données soient encore dans le formulaire.

Je sais que je dois mettre le code PHP dans le value="" de mon formulaire, mais je ne sais pas quoi exactement mettre.

J'ai essayé ceci :

value="<?php echo htmlentities($_POST['ma_variable']); ?>"

Mais ça ne fonctionne pas, sûrement parce que je n'ai pas mis le bon code... J'ai cherché mais je ne trouve pas où je pourrais savoir comment mettre le bon =/

Donc si vous avez une idée ou un site à me proposer se serait bien =)

Ah oui !

Mes données sont enregistrées dans ma BDD grâce à ma Page 2.

Ma page 1 est la page de mon formulaire avec une method POST.

Ma page 2 est la page où est ma requête MySQL qui enregistre mes données et lorsque c'est fait, il y a un header("Location..."); vers ma page 3.

Et ma page 3 est la page de vérification des données et c'est dans cette page que j'ai mis mon lien "retour".

Si ça peut vous aider ^^

À bientôt =)

Lien vers le commentaire
Partager sur d’autres sites

Tu lien retour c'est du javascript ? history.back() ?

Si oui pas possible à part conseiller Opera.

Sinon tu peut faire comme ça :

if (marche_pas OR formulaire_vide) {
 affiche_formulaire();
} else {
 traite_formulaire();
}

Dans affiche_formulaire tu met bien les données de $_POST dans les champs.

Sinon vérifie aussi que tu n'est pas en GET.

Lien vers le commentaire
Partager sur d’autres sites

Non, ce n'est pas du Javascript ^^ c'est juste un lien en faite c'est un bouton submit qui me ramène sur ma pageX :transpi:

Sinon pour les sessions, j'ai déjà une session d'ouverte car c'est dans un espace membre, alors je regarde le login. Est-ce que je mets par exemple ma variable serveur là aussi ?

Je vais essayer et je vous redonne des nouvelles =) merci à vous =D

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à vous =D,

j'ai essayé pour les sessions mais ça ne fonctionne pas =S. Peut-être que je fais mal ça =/. Donc si vous avez d'autres idées que les sessions, vous pouvez me le dire =).

Pour l'instant je vais aller essayé de trouver un bon tutorial sur les session :transpi:.

Merci à vous =)

Lien vers le commentaire
Partager sur d’autres sites

Salut =),

pour répondre à ta question, j'utilise les sessions sur une seule page pour l'instant. Elle est en ddébut de page avant tout code HTML et elle fonctionne très bien (je parle de la session ^^). C'est pour savoir si un client est membre ou non. Si oui il continue, sinon il retourne à la page d'inscription ou de connexion. Donc si il est membre, il va sur la page où il peut remplir les informations concernant sa BDD etc... Lorsqu'il clique sur le bouton "Envoyer" il va à la page de "insertion des données dans MA BDD" où est ma requête "INSERT INTO....". Par la suite lorsque ceci est fait il est automatiquement redirigé (header("Location....")) sur ma page de "vérifications des données" c'est là que j'ai ma requête "SELECT... FROM... WHERE..." le WHERE est un $_GET. Et sur la même page, j'affiche le résultat de ce qu'il a entré comme données, si tout est corect, il peut continué, sinon si il veut changer quelque chose il clique sur le bouton "modifier mes données" et il revient à la page du formulaire. Et c'est là que mon problème et ma question arrive =); comment fait-on pour que les données qu'il a entrées, soit "retenues", et lorsqu'il revient "en arrière", les données soient affichées donc il aurait juste à modifier celles qu'il veut au lieu de tout réécrire.

Donc voilà, j'espère avoir été plus clair =).

À la prochaine =D.

Lien vers le commentaire
Partager sur d’autres sites

Imaginons 3 pages de formulaires p1.php p2.php et p3.php

Dans p1.php, tu fais saisir le nom et le prénom. Si pas de variables session (cas A) nom et prénom, tu laisses les champs vides, sinon tu les remplis avec le contenu des variables sessions nom et prénoms (cas B). Au début, on sera donc dans le cas A.

A la validation, ça t'envoie en page 2.

Dans p2.php, tu enregistres nom et prénom dans des variables sessions. Dans cette page, disons que tu enregistres l'adresse, code postal et ville. Idem que pour p1.php : si aucune variable session, tu laisses vide, tu remplis sinon. A ce moment, l'utilisateur peut décider de revenir en p1.php pour corriger son nom. Les variables sessions ayant été créées, p1.php affichera le contenu des variables session nom et prénom dans les champs.

A la validation ça t'envoie en page 3.

Dans p3.php, tu enregistres adresse, code postal et ville dans des variables sessions. etc...etc...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

merci de ces explications, mais je ne comprend pas vraiment alors je passe un peu plus au "réel" ^^.

Donc voilà j'ai 3 pages:

Page1 qui contient ce code :

<?php
//ON COMMENCE UNE SESSION;
session_start();
if (!isset($_SESSION['login'])) {
header ('Location: index_cp.php');
exit();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>
Installation d'un systeme de nouvelles.
</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>
Bonjour <?php echo htmlentities(stripslashes(trim($_SESSION['login']))); ?>, pour installer votre systeme de nouvelles (systeme de news), vous devez remplir les informations suivantes concernants votre base de donnée, pour que vos nouvelles soient enregistrées quelque part;).
</p>
<p>
<form method="POST" action="insert_info_bdd.php">
Serveur : <input type="text" name="serveur_client" value="" />
<br />
Nom utilisateur : <input type="text" name="username_client" value="" />
<br />
Mot de passe : <input type="password" name="mdp_bdd_client" value="" />
<br />
Nom de votre base de donnée : <input type="text" name="nom_bdd_client" value="" />
<br />
Nom de votre table (pour insérer les données) : <input type="text" name="table_client" value="" />
<br />
Votre adresse e-mail : <input type="text" name="email_c" value="" />
<br />
<input type="submit" name="creer_bdd" value="Créer ma base de données" />
</form>
</p> 
</body>
</html>

Comme tu le vois, j'ai une session. Si il est pas membre, je le renvoi à une page pour qu'il s'incrit ou s'enregistre.

Page2 contient celle qui s'active lors de l'envoi du formulaire de la Page1 :

Elle contient ma requête MySQL qui insert les données...

<?php
//ON SE CONNECTE À NOTRE BDD
mysql_connect('localhost','****','****') or die('Connexion à la base de données impossible');
//ON SÉLECTIONNE NOTRE BDD
mysql_select_db('*****');
//ON LANCE LA REQUÊTE MYSQL QUI ENREGISTRE LES DONNÉES DE LA BDD DU CLIENT
mysql_query("INSERT INTO infos_bdd_clients(serveur , username , mdp_bdd , nom_bdd , table_c , email) VALUES('".($_POST['serveur_client'])."' , '".($_POST['username_client'])."' , '".($_POST['mdp_bdd_client'])."' , '".($_POST['nom_bdd_client'])."' , '".($_POST['table_client'])."' , '".($_POST['email_c'])."')") or die('Erreur MySQL'.'<br />'.mysql_error());
mysql_close();
header('Location:verification_donnees.php?email_c='.$_POST['email_c']);
?>

Et pour finir lorsque ma requête est éxécutée, ma Page3 s'affiche automatiquement :

<?php
mysql_connect('localhost' , '****' , '*****') or die('Connexion à la BDD impossible');
mysql_select_db('*****') or die('Sélection de la BDD impossible');
$requete = 'SELECT serveur , username , mdp_bdd , nom_bdd , table_c , email FROM infos_bdd_clients WHERE email="'.$_GET['email_c'].'"'; 

$requete_mysql = mysql_query($requete) or die('Exécution de la requête impossible');
$informations = mysql_fetch_array($requete_mysql);
mysql_close();
?>
<?php
echo 'Votre serveur est : '.$informations['serveur'].'<br />';
echo 'Votre nom d\'utilisateur est : '.$informations['username'].'<br />';
echo 'Votre mot de passe est : '.$informations['mdp_bdd'].'<br />';
echo 'Le nom de votre BDD est : '.$informations['nom_bdd'].'<br />';
echo 'Le nom de votre table est : '.$informations['table_c'].'<br />';
echo 'Votre courriel est : '.$informations['email'].'<br />';
?>	

<html>
<body>
<form method="POST" action="install_new.php">
<input type="submit" name="retour" value="Modifier les données" />
</form>
</body>
</html>

Donc ma Page3 affiche les résultats, et c'est là que je veux pouvoir revenir en arrière si il y a des erreurs :ouioui:.

Il faut que je mette une session sur quelle page ?

Merci de votre patience lol =P

Lien vers le commentaire
Partager sur d’autres sites

Pour appeler ta page 1 à partir de ta page 3 :

<form method="POST" action="install_new.php?serveur=$informations['serveur']&username=$informations['username']&...&ma_variable=...">

//Il y a moyen de le faire automatiquement avec une hashtable et un explode, je te laisse jeter un oeil à la doc php;)

ensuite, il suffit que tu mettes des

value="<?php if( isset($_POST['ma_variable']) ) echo $_POST['ma_variable']; ?>"

dans ton forms page1

Le code est fait de mémoire, ça fait longtemps que j'ai pas fait de php, donc à confirmer pour la syntaxe exacte :transpi:

Lien vers le commentaire
Partager sur d’autres sites

Pour faire ça avec des sessions, tu dois définir tes variables session dans ta page 2 (avant ton header, évidemment).

Ta page 1 sera aussi à modifier sur le modèle du code de beuhbeuh :

value="<?php if( isset($_SESSION['ma_variable']) ) echo $_SESSION['ma_variable']; ?>"

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...