Formulaire et preview

Eléphanteau du PHP | 19 Messages

19 mai 2011, 23:01

Bonjour,

Je suis en train de créer un site internet, j'aimerai y inclure un formulaire d'inscription à différentes activités à différents prix.
Donc les utilisateurs choisisent des activités sur des menus déroulants ou des boutons et au moment d'appuyer sur prévisualiser, on retrouve tout ce qu'il a tapé (par le biais d'un code php) et le montant de ses achats.
Mais à chaque fois que je fais ça, mon formulaire s'inscrit en dessous ma preview, je pense que c parceque la page se recharge donc le formulaire aussi, en plus il est vide donc au moment de l'envoi c'est du vide qui part dans ma bdd(mysql).
Donc g fais un fichier pr le form et un pr la preview et l'envoi mais là rien ne va. Il me dit en preview que rien n'a été rentré par l'utilisateur...
Pouvez vous m'aider?

Je ne compte pas trop utiliser du Java car ça peut poser soucis apparment si des utilisateurs ont désactiver leur java...

MErci à vous!!!

ViPHP
xTG
ViPHP | 7331 Messages

20 mai 2011, 08:01

Dans ton formulaire il faut vérifier que les informations n'existent pas en $_POST.
Exemple :
<input type="text" name="un_champs" value="<?php echo ( isSet($_POST['un_champs']) )? $_POST['un_champs'] : ''; ?>" />

Eléphanteau du PHP | 19 Messages

20 mai 2011, 08:41

Je ne compres po...

Je te mets les codes de mes 3 fichiers, car là depuis hier, j'ai réussit à envoyé les données à preview.php donc il me fait bien ma preview et après quand je l'envoi dans validation.php pour l'envoyer à mysql il me dit undefined index alors que c presque le même code que preview pr récupérer les variables et l'envoyer...

Mon code formulaire :
<form name="inscriptions" method="post" action="preview.php" enctype="multipart/form-data"> 

Docteur (nom et prénom) <input name="nom" type="text" size="43"/>
<p>Adresse <input name="adresse" type="text" size="60" /></p>
<p>Code Postal  <input name="cp" type="text" size="4" />  Localité  <input name="localite" type="text" size="38" /></p>
<p>Numéro dordre <input name="no" type="text" size="5" /> Téléphone <input name="tel" type="text" size="10" /> (Sans espace ni /)</p>
<p>E mail <input name="mail" type="text" size="40" /> </p>

<h2>Je m’inscris pour la/les activités suivantes : (cocher les cases devant les activités)</h2>

<h3>Les soirées conférences</h3>
<div class="choix">
  <label for="choix1">Jeudi 10 février : Conjoint-aidant et assistante vétérinaire : quel statut, quel contrat? </label>&nbsp;&nbsp;&nbsp;
   <select name="choix1" class="choix">
   <option value="choix11">Je ne participe pas à cette conférence</option>
   <option value="choix12">Conférence seule</option>
   <option value="choix13">Conférencee + Repas</option>

   </select>

</div>
<div class="choix">
  <label for="choix2">Jeudi 9 Juin : Pathologies courantes du lapin de compagnie</label>&nbsp;&nbsp;&nbsp;
   <select name="choix2" class="choix">
    <option value="choix21">Je ne participe pas à cette conférence</option>
   <option value="choix22">Conférence seule</option>
   <option value="choix23"> Conférencee + Repas</option>

   </select>
</div>
<div class="choix">
  <label for="choix3">Jeudi 15 Décembre : le syndrome obstructif chez les chiens brachicéphales : que faire?</label>&nbsp;&nbsp;&nbsp;
   <select name="choix3" class="choix">
   <option value="choix31">Je ne participe pas à cette conférence</option>
   <option value="choix32">Conférence seule</option>
   <option value="choix33"> Conférence + Repas</option>
   </select>
</div>
<h3>La journée conférence</h3>
<p>
  <label>
    <input type="radio" name="radio1" value="radio11" id="Radio1" checked="checked"/>
    Oui</label>

  <label>
    <input type="radio" name="radio1" value="radio12" id="Radio2" />
    Non</label>
  <br />
</p>
<h3> Je m'inscris aux tables rondes, je serai recontacté à ce sujet</h3>
<p>
  <label>
    <input type="radio" name="radio2" value="radio21" id="RadioT1" checked="checked"/>
    Oui</label>

  <label>
    <input type="radio" name="radio2" value="radio22" id="RadioT2" />
    Non</label>
  <br />
</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br  />
<p></p>
<input type="submit" name="previsualiser" value="Prévisualiser" />
</form> 
<form name="inscriptions" method="post" action="validation.php" enctype="multipart/form-data">
<input type="submit" name="valider" value="Valider" />
Mon code preview.php
<A href="javascript:history.back()"></A> 


<?php

	$nom=htmlentities($_POST['nom']);
	$adresse=htmlentities($_POST['adresse']);
	$cp=htmlentities($_POST['cp']);
	$localite=htmlentities($_POST['localite']);
	$no=htmlentities($_POST['no']);
	$tel=htmlentities($_POST['tel']);
	$mail=htmlentities($_POST['mail']);
	$choix1=htmlentities($_POST['choix1']);
	$choix2=htmlentities($_POST['choix2']);
	$choix3=htmlentities($_POST['choix3']);
	$radio1=htmlentities($_POST['radio1']);
	$radio2=htmlentities($_POST['radio2']);

	
if (empty($nom)){
echo 'Vous n\'avez pas saisi votre Nom.';
echo '<p><input type="submit" name="return" tabindex="3" value="  Retour  " onclick="history.back()"></p>';}
elseif((empty($adresse))or(empty($cp))or(empty($localite))){
echo'Vous n\'avez pas saisi votre adresse correctement.';
echo '<p><input type="submit" name="return" tabindex="3" value="  Retour  " onclick="history.back()"></p>';}
elseif(empty($no)){
echo'Vous n\'avez pas saisie votre numéro d\'ordre.';
echo '<p><input type="submit" name="return" tabindex="3" value="  Retour  " onclick="history.back()"></p>';}
elseif(empty($tel)){
echo'Vous n\'avez pas saisi votre numéro de téléphone.';
echo '<p><input type="submit" name="return" tabindex="3" value="  Retour  " onclick="history.back()"></p>';}
elseif(empty($mail)){
echo'Vous n\'avez pas saisi votre Email.';
echo '<p><input type="submit" name="return" tabindex="3" value="  Retour  " onclick="history.back()"></p>';}
//Si tout est ok
else
{
//Récupérer variable pour prévisualiser :
if (isset($_POST['previsualiser'])) {

    // j'ai cliqué sur « Prévisualiser »

	echo'<h2>Vos coordonnées personnelles :<br/></h2>
	     <h3>Dr '.$nom.'<br/>
         '.$adresse.'&nbsp;&nbsp;&nbsp;'.$cp.'&nbsp;'.$localite.'<br/>
	     Numéro d\'ordre : '.$no.'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>Téléphone :'.$tel.'<br/>
         Email : '.$mail.'<br/></h3>';
	echo '<h2>Vous avez choisi de vous inscrire à la Liégeoise aux activités suivantes :</h2>';

echo '<h3><u>Jeudi 10 février :</u><i> Conjoint-aidant et assistante vétérinaire : quel statut, quel contrat ?</i></h3>';
	if ($_POST['choix1']=="choix12"){
		$somme1=20;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe uniquement à la conférence, j\'ajoute 20€ à ma somme totale</h3><br/>';}
		elseif ($_POST['choix1']=="choix13"){
		$somme1=50;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe à la conférence et au repas, j\'ajoute 50€ à ma somme totale (dont 30€ d\'accompte)</h3><br/>';}
		else {
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je ne participe pas à cette conférence</h3><br/>';
		$somme1=0;}
		
echo '<h3><u>Jeudi 9 Juin :</u><i> Pathologies courantes du lapin de compagnie </i></h3>';
	if ($_POST['choix2']=="choix22"){
		$somme2=20;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe uniquement à la conférence, j\'ajoute 20€ à ma somme totale</h3><br/>';}
		elseif ($_POST['choix2']=="choix23"){
		$somme2=50;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe à la conférence et au repas, j\'ajoute 50€ à ma somme totale (dont 30€ d\'accompte)</h3><br/>';}
		else {
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je ne participe pas à cette conférence</h3><br/>';
		$somme2=0;}
		
echo '<h3><u>Jeudi 15 Décembre :</u><i> Le syndrome obstructif chez les chiens brachicéphales : que faire ?</i></h3>';	
	if ($_POST['choix3']=="choix32"){
		$somme3=20;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe uniquement à la conférence, j\'ajoute 20€ à ma somme totale</h3><br/>';}
		elseif ($_POST['choix3']=="choix33"){
		$somme3=50;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe à la conférence et au repas, j\'ajoute 50€ à ma somme totale (dont 30€ d\'accompte)</h3><br/>';}
		else {
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je ne participe pas à cette conférence</h3><br/>';
		$somme3=0;}

echo '<h3><u>Samedi 24 Septembre :</u>';
	if ($_POST['radio1']=="radio11"){
		$somme4=50;
		echo '<h3>Je m\'inscris à la journée conférence et je verse un acompte de 50 euros qui me seront remboursés si je paye par chèques-formation </h3><br/>';}
		else {
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je ne participe pas à cette conférence</h3><br/>';
		$somme4=0;}
	if ($_POST['radio2']=="radio21"){
    echo '<h3>Je m\'inscris aux tables rondes, je serai recontacté(e) à ce sujet</h3><br/>';}
	else {
	echo '<h3>Je ne m\'inscris pas aux tables rondes</h3>';}
	
$sommetotale=$somme1+$somme2+$somme3+$somme4;

	echo '<h3><font color=#009>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je verse donc '.$sommetotale.'€ sur le compte de la Liégeoise 143-0605987-32 .</font></h3>';


}}?>
<form name="inscriptions" method="post" action="validation.php" enctype="multipart/form-data">
<input type="submit" name="valider" value="Valider" />
</form>
Mon code validation.php
<?php
include("fonctions.php");

if (isset($_POST['valider'])) {
	$nom=htmlentities($_POST['nom']);
	$adresse=htmlentities($_POST['adresse']);
	$cp=htmlentities($_POST['cp']);
	$localite=htmlentities($_POST['localite']);
	$no=htmlentities($_POST['no']);
	$tel=htmlentities($_POST['tel']);
	$mail=htmlentities($_POST['mail']);
	$choix1=htmlentities($_POST['choix1']);
	$choix2=htmlentities($_POST['choix2']);
	$choix3=htmlentities($_POST['choix3']);
	$radio1=htmlentities($_POST['radio1']);
	$radio2=htmlentities($_POST['radio2']);

//On créée une variable date du jour grâce à la fonction date() de PHP
$today=date("y,m,d");

//On se connecte
connectInscriptions();

//On corrige les erreurs d'accents
mysql_query("SET NAMES UTF8"); 
                    
//On prépare la commande sql d'insertion
$sql = 'INSERT INTO utilisateurs VALUES("","'.$nom.'","'.$adresse.'","'.$cp.'","'.$localite.'","'.$no.'","'.$tel.'","'.$mail.'","'.$choix1.'","'.$choix2.'","'.$choix3.'","'.$radio1.'","'.$radio2.'","'.$today.'","'.$sommetotale.'")';
                    
/*on lance la commande (mysql_query) et au cas où, 
on rédige un petit message d'erreur si la requête ne passe pas (or die) 
(Message qui intègrera les causes d'erreur sql)*/
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); 
                    
// on ferme la connexion
mysql_close();

echo 'Votre inscription a bien été prise en compte';}
?>
Je ne comprends pas pk ça marche avec preview et pas validation?

Merci!!

Mammouth du PHP | 672 Messages

20 mai 2011, 10:22

il me dit undefined index
Normalement PHP te précise un peu le message - ligne et index concernés par exemple...

A priori, ça a un rapport avec ton $_POST :roll:
Première chose à faire : Afficher les données avec print_r ($_POST);

Ca devrait te donner quelques indications...

Sinon, aucun rapport, mais tu dis que tu ne veux pas de JavaScript, et pourtant tu fais <A href="javascript&#058;history.back()"></A> :shock:

Eléphanteau du PHP | 19 Messages

20 mai 2011, 10:38

Oui c'est vrai pr le JAvaS, juste pour le bouton retour , au pire les gens utiliseront le précédent du navigateur.
Mais je veux en utiliser le moins possible

J'essaie d'afficher et je te tiens au courant!

Eléphanteau du PHP | 19 Messages

20 mai 2011, 10:41

Il me dit Array ( [valider] => Valider ) :shock:

Eléphanteau du PHP | 19 Messages

20 mai 2011, 10:42

Et toujours mes undefined index

Eléphanteau du PHP | 19 Messages

20 mai 2011, 10:47

Par contre avec preview.php ça fonctionne:
Array ( [nom] => Dupont [adresse] => rue [cp] => 0000 [localite] => Liège [no] => 0000 [tel] => 00000000 [mail] => [email protected] [choix1] => choix13 [choix2] => choix22 [choix3] => choix31 [radio1] => radio11 [radio2] => radio21 [previsualiser] => Prévisualiser )

Mammouth du PHP | 672 Messages

20 mai 2011, 11:55

Oui c'est vrai pr le JAvaS, juste pour le bouton retour , au pire les gens utiliseront le précédent du navigateur.
Mais je veux en utiliser le moins possible
Tant qu'à utiliser du JS, autant l'utiliser à bon escient...
Utiliser du JS pour faire un retour en arrière, c'est mal (ça n'apporte pas grand chose, puisque comme tu le dis on peut utiliser le bouton du navigateur).
Par contre, l'utiliser pour afficher la "preview", c'est déjà plus intéressant...

Et sinon, tu as ta réponse à ton problème :
Quand tu passes par preview.php tu n'envoies pas la même chose que quand tu envoies directement. C'est pour ça que ton $_POST ne contient pas la même chose.
Et c'est pour ça qu'il te met des messages 'undefined index' #-o

Rappel :
La variable $_POST contient les champs envoyés par formulaire.
Ton formulaire dans preview.php :
<form name="inscriptions" method="post" action="validation.php" enctype="multipart/form-data">
<input type="submit" name="valider" value="Valider" />
</form>
Logiquement, tu ne reçois que $_POST['valider']...

Pour passer les données tu peux, par exemple, rajouter des champs cachés à ce formulaire, dans lesquels tu mets les valeurs récupéréers dans le formulaire (attention, il est possible de modifier ces valeurs, penses à contrôler...)
<form name="inscriptions" method="post" action="validation.php" enctype="multipart/form-data">
<input name="adresse" type="hidden" value="<?php
echo $_POST['name'];?>" />
<input type="submit" name="valider" value="Valider" />
</form>

Eléphanteau du PHP | 19 Messages

20 mai 2011, 12:30

Et effectivmeent c ce que j'ai fait!! :lol:
<form action="validation.php" method="POST"><input type="submit" value="Valider" name="valider">
<input type="hidden" value="nom" name="nom"> 
<input type="hidden" value="adresse" name="adresse"> 
<input type="hidden" value="cp" name="cp"> 
<input type="hidden" value="localite" name="localite"> 
<input type="hidden" value="no" name="no"> 
<input type="hidden" value="tel" name="tel"> 
<input type="hidden" value="mail" name="mail"> 
<input type="hidden" value="choix1" name="choix1"> 
<input type="hidden" value="choix2" name="choix2"> 
<input type="hidden" value="choix3" name="choix3"> 
<input type="hidden" value="radio1" name="radio1"> 
<input type="hidden" value="radio2" name="radio2"> 
<input type="hidden" value="sommetotale" name="sommetotale"> 
</form>
Mais maintenant j'ai un pb avec mes listes déroulantes ainsi que mes boutons radio et ma somm etotale
Dans mon sql, j'ai dans la colonne choix1 "choix1" il ne tient pas en compte le choix de l'utilisateur.....
Bouh!

Eléphanteau du PHP | 19 Messages

20 mai 2011, 12:31

Je pense que l'on n'a pas mis exactement la meme chose
Je tente ton code!

Eléphanteau du PHP | 19 Messages

20 mai 2011, 12:35

Le problème c que mon code est inclus dans du php pour ne pas que mon bouton valider s'affiche si tous les champs ne sont pas bien remplis (donc il est dans ma condition ds php)
Et avec ce code il me dit syntaxe error...

Mammouth du PHP | 672 Messages

20 mai 2011, 12:37

La solution la plus simple, à mon avis, c'est de passer par une session :
preview.php => $_SESSION = $_POST;
validation.php => au lieu d'utiliser $_POST utilise $_SESSION...

Eléphanteau du PHP | 19 Messages

22 mai 2011, 14:05

J'ai un problème de syntaxe je pense.
Dans preview, je dois mettre :

session_start();
$_SESSION['nom']=$_POST['nom']

Et dans validation :
$nom=$_SESSION['nom'];

Mais là même ma preview ne fonction plus...

Eléphanteau du PHP | 19 Messages

23 mai 2011, 10:49

Plus personne?