Problème de récupération en formulaire

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour, alors voilà mon problème, j'ai une page où j'ai toutes les informations clients, et j'aimerais récupérer de la page (ou de la base de données) le nom et prénom, qui servirait en gros d'identifiant pour ma deuxième page [Formulaire en 2 pages]
je vais vous montrer concrètement, mais si vous avez un semblant de réponse hésitez pas, il me faut ça pour demain.

1ere page :
<?php
// on teste si le visiteur a soumi le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
// on test l'existence de nos variables. On test également si elles ne sont pas vides
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['mot_de_passe']) && !empty($_POST['mot_de_passe'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
// on test les deux mots de passe
if ($_POST['mot_de_passe'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents. Veuillez resaisir les mots de passe';
}
else {
$base = mysql_connect ('127.0.0.1', 'root', '');
mysql_select_db ('voyage', $base);

//récupération des valeurs des champs
//civilité
$civ = $_POST["civ"] ;
//nom
$nom = $_POST["nomclt"] ;
//prenom
$prenom = $_POST["prenomclt"] ;
//adresse
$adresse = $_POST["adresseclt"] ;
//ville
$ville = $_POST["villeclt"];
//code postal
$cp = $_POST["CPclt"] ;
// Login
$login = $_POST["login"];
//Mot de passe
$Mot_de_passe = $_POST["mot_de_passe"];
//création de la requête SQL:
$sql = "INSERT INTO client ( codeclt, login, mot_de_passe, nomclt, prenomclt, adresseclt, cpclt, villeclt, codeagent)
VALUES ( '', '$login', '$Mot_de_passe', '$nom', '$prenom', '$adresse', '$cp', '$ville', '') " ;
//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete)
{
echo("L'inscription a été correctement effectuée !") ;
}
else
{
echo(" Erreur. L'inscription a echouée") ;
}
// on recherche si ce login est déjà utilisé par un autre client
$sql = 'SELECT count(*) FROM client WHERE login="'.mysql_escape_string($_POST['login']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.mysql_error());
$data = mysql_fetch_array($req);
if ($data[0] == 0) {
$sql = 'INSERT INTO client VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['mot_de_passe'])).'", "'.mysql_escape_string(($_POST['nom'])).'"
, "'.mysql_escape_string($_POST['prenom']).'", "'.mysql_escape_string($_POST['adresse']).'", "'.mysql_escape_string($_POST['CP']).'"
, "'.mysql_escape_string($_POST['ville']).'", "")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br/>'.mysql_error());
$_SESSION['login'] = $_POST['login'];
header('Location: dest.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ce login. Veuillez en choisir un autre.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide. Veuillez verifier si tous les champs sont remplis.';
}
}
?>
<!-- début partie HTML -->

<?php
include ("Entete.php");
?>
<?php
include ("menu.php");
$menu = affiche_menu();
?>
<?php
echo $menu;
?>
<div id="corps">
<h1>Inscrivez-vous</h1>
<h2>Inscription à l'agence de voyage PARTIR -1/2-</h2>
L'adhésion à l'espace membre du site de l'agence Partir vous permettra de réserver vos billets pour votre déstination.<br />
<table border = 0>
<form action="inscription.php" method="post">
<tr><td>Civilite :</td><td>
<input type="radio" name="civ" value="Mme">Mme
<input type="radio" name="civ" value="Mlle">Mlle
<input type="radio" name="civ" value="Mr">Mr
</td></tr>
<tr><td>Nom : </td><td><input type="text" name="nom" value=""></td></tr>
<tr><td>Prénom : </td><td><input type="text" name="prenom" value=""></td></tr>
<tr><td>Adresse : </td><td><input type="text" name="adresse" value="" size="25"></td></tr>
<tr><td>Ville : </td><td><input type="text" name="ville" value=""></td></tr>
<tr><td>Code Postal : </td><td><input type="text" name="CP" value="" size="5" maxlenght="5"></td></tr>
<tr><td>Login :</td><td><input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>" id="for"></td></tr>
<tr><td>Mot de passe : </td><td><input type="password" name="mot_de_passe" value="<?php if (isset($_POST['mot_de_passe'])) echo htmlentities(trim($_POST['mot_de_passe'])); ?>" id="for"></td></tr>
<tr><td>Confirmation : </td><td><input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>" id="for"></td></tr>
<tr><td><input type="submit" name="inscription" value="Inscription" id="btn"></td><td><input type="reset" name ="effacer" value="Effacer"></td></tr>
</form></table>
<!-- message d'erreur -->
<?php
if (isset($erreur)) echo '<br/>',$erreur;
?>

<br/><br/>
</div>
<?php
include ("Pied_de_page.php");
?>

2eme page :
<? php
$base = mysql_connect ('127.0.0.1', 'root', '');
mysql_select_db ('voyage', $base);

//récupération des valeurs des champs
//Confirm Nom
$nom = $_POST["nomclt"];
//Confirm Prénom
$prenom = $_POST["prenomclt"];
//code voyage
$codedevoy = $_POST["codedevoy"];
//nombre d'enfants
$nb_enfants = $_POST["nb_enfants"];
//nombre d'adultes
$nb_adultes = $_POST["nb_adultes"];
//création de la requête SQL:
$echo "coucou"
$sql = mysql_query("INSERT INTO reservation (codedeclt, codedevoy, paye, nb_enfants, nb_adultes)
VALUES ( '', '$codedevoy','', '$nb_enfants', '$nb_adultes') ") ;

$sql = 'INSERT INTO reservation VALUES(("", "'.mysql_escape_string($_POST['codedevoy']).'", "",
"'.mysql_escape_string($_POST['nb_enfants']).'","'.mysql_escape_string(($_POST['nb_adultes'])).'")';

?>
<?php
include ("Entete.php");
?>
<?php
include ("menu.php");
$menu = affiche_menu();
?>
<?php
echo $menu;
?>
<div id="corps">
<h1>Inscrivez-vous</h1>
<h2>Inscription à l'agence de voyage PARTIR -2/2-</h2>
L'adhésion à l'espace membre du site de l'agence Partir vous permettra de réserver vos billets pour votre déstination.<br />
<table border = 0>
<form action="dest.php" method="post">
<tr><td>Confirmation du :</td></tr>
<tr><td>Nom : </td><td><input type="text" name="nom" value=""></td></tr>
<tr><td>Prénom : </td><td><input type="text" name="prenom" value=""></td></tr>
<tr><td>Pour :</td></tr>
<tr><td>Nombre d'adultes : </td><td><input type="text" name="nb_adultes" value=""></td></tr>
<tr><td>Nombre d'enfants : </td><td><input type="text" name="nb_enfants" value=""></td></tr>
<tr><td>Code du voyage* : </td><td><input type="text" name="codedevoy" value=""></td></tr>
<font size=1>* Voir dans le tableau des déstinations.</font>
<tr><td><input type="submit" name="valider" value="valider" id="btn"></td><td><input type="reset" name ="effacer" value="Effacer"></td></tr>
</form></table>
<?php
if (isset($erreur)) echo '<br/>',$erreur;
?>

</div>
<?php
include ("Pied_de_page.php");
?>


En même temps si vous voyez des erreurs, hésitez pas à m'en faire part, je débute en php et j'ai assez peu de connaissances en html, donc voilà, merci pour votre aide :)

Les login/mot_de_passe devraient être supprimé, donc voilà pourquoi je préfèrerais avoir nom et prénom comme 'pseudoidentifiant' et sinon codeclt est auto incrementé, ce qui me pose pas mal de soucis.

J'ai oublié de dire, le deuxième script ne marche pas, il n'affiche aucune erreur, mais n'enregistre rien dans la base non plus ; et les deux scripts associés, seul le script du premier fonctionne.



25 réponses

Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Dans ta 2ème page tu récupère bien les noms et prénoms?
//nom
$nom = $_POST["nomclt"] ;
//prenom
$prenom = $_POST["prenomclt"] ; 


Donc je ne comprend pas bien ce que tu veux faire? Si tu veux garder ces données tu crée une session ou tu passe tes données dans l'url (page.php?nom=$nom&prenom=&prenom).
0
Utilisateur anonyme
 
Excuse moi, merci de m'avoir répondu, vu que c'est assez urgent, ça soulage d'avoir des réponses.
0
Utilisateur anonyme
 
bah, en gros je veux que le nom et le prénom soient repris directement dans la base de données, par rapport à l'enregistrement de la première page, comme une session en gros, mais je ne sais pas comment faire une session.

Sinon, pour le deuxième script, je n'arrive pas à le faire fonctionner, je comprend pas... je vois vraiment pas où sont mes erreurs, ça fait rien du tout, j'ai testé avec des echo et ça marchait partout les echos en reprenant tout ce qui avait après le echo à chaque fois.

Je pense qu'une fois la deuxième page au point, le reste je pourrais me débrouiller.
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Pour récupérer de la base de donnée? En gros tu veux vérifier si les infos données dans le formulaire sont déjà contenues dans la base?

Pourquoi tu ne fais pas ton formulaire en un seul coup plutôt que d'en faire 2?
0
Utilisateur anonyme
 
Bah en faite je voulais le faire en un, mais j'arrive pas à faire les 2 INSERT INTO ( celui dans client et celui dans reservation)
donc j'ai voulu voir si en 2 ça allait, mais j'ai eu un autre problème, celui où il ne se passe rien du tout avec le script de la 2eme page.
de toute façon comme je l'ai dit plus haut, en un ou en deux ça me va, mais je dois avoir ces deux requêtes différentes, sachant que je ne peux pas modifier les tables (genre mettre tout sur la même table)

Partout où ils parlaient de deux requêtes dans le même script, ils disaient que c'était impossible, donc j'essaie avec deux séparés. Mais le 2eme ne fonctionne pas du tout et je ne comprend pas pourquoi...
0

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

Posez votre question
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Bien sûr que tu peux faire deux requêtes en un seul script :
$sql1="INSERT INTO ...";

$sql2="INSERT INTO ...";

mysql_query($sql1) or die(mysql_error());
mysql_query($sql2) or die(mysql_error());


Ca ne résout pas tout mais ça facilite les choses ; d'un coté tu gère ton formulaire, de l'autre tu récupère tes données et tu fais tes requêtes...
0
Utilisateur anonyme
 
J'avais déjà tenté, je les avais placé en dessous du premier pour chaque, et ça n'avait pas fonctionné, comment faut il les placer, à cause des 'If' je m'y perd -_-
mais je vais tenter quand même vite fait, voir si y'a moyen ; c'est sur que ça résout pas tout mais ça me fera avancer.
Merci encore de tes réponses :)
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Si tu n'as pas de problème avec ta première page ajoute les champs manquants du formulaire à la suite.
Puis pour la 2ème requête tu l'exécute juste après la première. Ça ne devrait pas te poser de problème. Si tu t'embrouille, le plus simple est de reprendre depuis le début surtout que ton code est bien commenté.
0
Utilisateur anonyme
 
Mhhh, bizarre, je viens de le faire en un script, mais cette fois c'est l'inverse qui se produit, script 1 qui marche pas et 2 qui marche sans message d'erreur...

Compliqué ce PHP hein o:p
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Essaie de faire après chaque requête un
 echo $sql;
Cela te permettra de tester ta requête directement sous mysql en récupérant ce qui s'affiche à l'écran...
0
Utilisateur anonyme
 
ça change rien du tout, rien ne s'affiche
0
Utilisateur anonyme
 
aucune erreurs ni quoi que ce soit
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
echo "a".$sql."a";


Si aa s'affiche à l'écran ça veut dire que $sql est vide et que donc tu a une erreur de syntaxe quelque part...
0
Utilisateur anonyme
 
Non décidément, aucune erreur de syntaxe apparemment...
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Ce qui veut dire qu'à l'écran tu as : aINSERT...a?


Si c'est le cas copie colle dans mysql et regarde si ta requête s'exécute correctement...
0
Utilisateur anonyme
 
Nonon rien s'affiche à l'écran mais je commence à me demander si ça viendrait pas du codeclt, vu que c'est un auto incrementé, peut être qu'il ne peut pas aller dans les deux à la fois...

à l'écran ça me ramène à la page d'accueil, et dans la base y'a que reservation qui a été rempli et pas client alors qu'avant c'était l'inverse...
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Enlève le action de ton <form>

Laisse juste
<form method=post>
0
Utilisateur anonyme
 
Toujours rien...lol
0
Utilisateur anonyme
 
peut etre que ça t'aiderait que je t'envoie le code modifié
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Oui ainsi que ta base(ou au moins les tables concernées) pour tester
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
C'est-à-dire? Tu as quoi à l'écran? Ton formulaire, une page blanche, une requête affichée, ta page d'accueil???
0
Utilisateur anonyme
 
j'ai la page d'accueil normal, sans message d'erreur ni rien, mais pourtant ça transfert pas dans la base de données (juste pour client, reservation ça marche)
0
Utilisateur anonyme
 
je t'envoie le code, t'y verra ptet plus clair :

<?php
// on teste si le visiteur a soumi le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
$base = mysql_connect ('127.0.0.1', 'root', '');
mysql_select_db ('voyage', $base);

//récupération des valeurs des champs
//civilité
$civ = $_POST["civ"] ;
//nom
$nom = $_POST["nomclt"] ;
//prenom
$prenom = $_POST["prenomclt"] ;
//adresse
$adresse = $_POST["adresseclt"] ;
//ville
$ville = $_POST["villeclt"] ;
//code postal
$cp = $_POST["CPclt"] ;
//code voyage
$codedevoy = $_POST["codedevoy"] or die('Erreur SQL !');
//nombre d'enfants
$nb_enfants = $_POST["nb_enfants"] or die('Erreur SQL !');
//nombre d'adultes
$nb_adultes = $_POST["nb_adultes"] or die('Erreur SQL !');
//création de la requête SQL:
$sql1 = "INSERT INTO client ( codeclt, nomclt, prenomclt, adresseclt, cpclt, villeclt, codeagent)
VALUES ( '', '$nom', '$prenom', '$adresse', '$cp', '$ville', '')" ;

$sql2 = ("INSERT INTO reservation (codedeclt, codedevoy, paye, nb_enfants, nb_adultes)
VALUES ( '', '$codedevoy', '', '$nb_enfants', '$nb_adultes') ");

// on recherche si ces nom et prénom sont déjà utilisé par un autre client
$sql1 = 'SELECT count(*) FROM client WHERE nomclt ="'.mysql_escape_string($_POST['nom']).'" and prenomclt ="'.mysql_escape_string($_POST['prenom']).'"';
$req = mysql_query($sql1) or die('Erreur SQL !'.$sql1.''.mysql_error());
$data = mysql_fetch_array($req);

if ($data[0] == 0) {
$sql1 = 'INSERT INTO client VALUES("", "'.mysql_escape_string(($_POST['nom'])).'"
, "'.mysql_escape_string($_POST['prenom']).'", "'.mysql_escape_string($_POST['adresse']).'", "'.mysql_escape_string($_POST['CP']).'"
, "'.mysql_escape_string($_POST['ville']).'", "")';
$sql2= 'INSERT INTO reservation VALUES("", "'.mysql_escape_string($_POST['codedevoy']).'", "",
"'.mysql_escape_string($_POST['nb_enfants']).'","'.mysql_escape_string(($_POST['nb_adultes'])).'")';
mysql_query($sql2) or die('Erreur SQL !'.$sql2.'<br/>'.mysql_error());
$_SESSION['login'] = $_POST['login'];
header('Location: Accueil.php');
exit();
}
else {
$erreur = 'Un membre possède déjà ces nom et prénom. Veuillez en choisir un autre.';
}
}
?>
<!-- début partie HTML -->

<?php
include ("Entete.php");
?>
<?php
include ("menu.php");
$menu = affiche_menu();
?>
<?php
echo $menu;
?>
<div id="corps">
<h1>Inscrivez-vous</h1>
<h2>Inscription à l'agence de voyage PARTIR</h2>
L'adhésion à l'espace membre du site de l'agence Partir vous permettra de réserver vos billets pour votre déstination.<br />
<table border = 0>
<form method="post">
<tr><td>Civilite :</td><td>
<input type="radio" name="civ" value="Mme">Mme
<input type="radio" name="civ" value="Mlle">Mlle
<input type="radio" name="civ" value="Mr">Mr
</td></tr>
<tr><td>Nom : </td><td><input type="text" name="nom" value=""></td></tr>
<tr><td>Prénom : </td><td><input type="text" name="prenom" value=""></td></tr>
<tr><td>Adresse : </td><td><input type="text" name="adresse" value="" size="25"></td></tr>
<tr><td>Ville : </td><td><input type="text" name="ville" value=""></td></tr>
<tr><td>Code Postal : </td><td><input type="text" name="CP" value="" size="5" maxlenght="5"></td></tr>
<tr><td>Pour :</td></tr>
<tr><td>Nombre d'adultes : </td><td><input type="text" name="nb_adultes" value=""></td></tr>
<tr><td>Nombre d'enfants : </td><td><input type="text" name="nb_enfants" value=""></td></tr>
<tr><td>Code du voyage* : </td><td><input type="text" name="codedevoy" value=""></td></tr>
<font size=1>* Voir dans le tableau des déstinations.</font>
<tr><td><input type="submit" name="inscription" value="Inscription" id="btn"></td><td><input type="reset" name ="effacer" value="Effacer"></td></tr>
</form></table>
<font size ="1">(Tous les champs sont obligatoires)</font>

<br/><br/>
</div>
<?php
include ("Pied_de_page.php");
?>
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Détails : quand tu as ?><?php tu peux enlever ça sert à rien
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
En principe tu ne devrait pas retourner sur ta page d'accueil c'est pour ça que le traitement ne s'effectue pas...
0
Utilisateur anonyme
 
sisi : header('Location: Accueil.php');
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Ah oui j'ai pas fais gaffe, vire le de ce que je t'ai rendu
0