Pb de recupération de variable

Résolu/Fermé
Aeyrin Messages postés 70 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2014 - 4 janv. 2012 à 13:21
Aeyrin Messages postés 70 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2014 - 5 janv. 2012 à 11:47
Bonjour,

j'ai un formulaire d'inscription à remplir et je dois vérifier dans la BDD que l'adresse mail et le pseudo saisies ne sont pas déjà existant, jusque là pas de problème.
la vérification se fait sur une page où on doit accepter les CGV avec un checkbox. Si celui ci n'est pas coché, on script JavaScript est appelé pour le signaler. Seulement, après affichage de ce message, je perds mes variables (mail, pseudo et mot de passe).
J'ai tenté de les insérer directement dans la BDD seulement après le message il m'affiche "pseudo déjà existant" (ce qui est logique). J'ai donc essayé de "gruger" un peu en passant par des variables de session (je sais que ce n'est pas propre mais je n'ai plus d'idée) mais encore une fois, et là je ne sais pas pourquoi, après affichage du message, je perds ma variable de session.

je vous mets mon code si vous avez une idée pour me dépanner ça serait vraiment très sympathique parce que je deviens folle:
<?php session_start(); ?>
<html>
	<head>...</head>

<?php include("connect.php"); ?>

<script type="text/javascript">
/*Vérifie si les CGV ont été acceptées*/
function gid(element)
{
	return document.getElementById(element);
}

function verif_condition()
{
	if(gid('condition').checked==true)
	{
	    document.forms['formulaire'].action='paiement_inscr.php';
		gid('formulaire').submit();
	}
	else if(gid('condition').checked==false)
	{
		alert('Vous devez accepter les termes de conditions générales de vente');
		return false;
	}
}
</script>
	
	<body>
		
		<?php 
		include("header.php"); 
		include("menu.php");
		include("gauche.php");
		?>


	<div id="corps">
		<?php
		/*Coordonnées du formulaire d'inscription*/
		$email=htmlspecialchars($_POST['mail']);		
		$pseudo=htmlspecialchars($_POST['pseudo']);
		$pass=htmlspecialchars($_POST['pass']);
		$news=$_POST['news'];
		
		/*Vérification de l'existance*/
		$query_donnes="SELECT COUNT(*) 
			FROM adherent 
			WHERE pseudo='".$pseudo."' 
			OR mail_adh='".$mail."';";
		$result_donnes=mysql_query($query_donnes,$connect);
		$nb=mysql_result($result_donnes,$result_donnes["pseudo"]);
		
		echo $_SESSION['email']=$email;
		
		if($nb!=0){
			echo '<p>Pseudo déjà pris ou adresse mail déjà existante</p>
			<a href="javascript:history.go(-1)">Retour</a>';
		}
		else if ($nb==0){
			echo "ok";
		}
		?>	
			<!--Choix de l'abonnement-->
			<p>Pour vous inscrire, vous devez souscrire à une de nos offres :</p>
			<form method="post" name="formulaire">
				...
				<!--CGV-->
				<input type="checkbox" name='condition' id='condition' />
					Veuillez accepter les <a href="cga.pdf" target="_blank">Conditions Générales d'Utilisation</a>
					<br/>			
				<input type="submit" value="Valider" name="valid" onClick="verif_condition();" />
			</form>	
	</div>

	<?php include('footer.php'); ?>	

	</body>
</html>


Merci d'avance

2 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 4/01/2012 à 18:50
je t'ai un peu modifié ton code et mis un principe de ré-affichage des valeurs déjà saisies

<html> 
 <head>...</head> 

<?php include("connect.php"); ?> 

<script type="text/javascript"> 
/*Vérifie si les CGV ont été acceptées*/ 
function verif_condition(element1) 
{ 
 var obj1=document.getElementById(element1); 
 if obj1.checked == false){ 
  alert('Vous devez accepter les termes de conditions générales de vente'); 
  return false; //ce qui bloque l'envoi du form 
 }else{ 
  document.forms['formulaire'].action='paiement_inscr.php'; 
  return true; //ce qui autorise l'envoi du from 
 } 
} 
</script> 
  
 <body> 
   
  <?php  
  include("header.php");  
  include("menu.php"); 
  include("gauche.php"); 
  ?> 


 <div id="corps"> 
  <?php 
 //init des variables à vide 
  $email="";   
  $pseudo=""; 
  $pass=""; 
  $news=""; 
  $cgv=""; 
  $affiche_form=true; 
 //il ne faut faire le traitement de la verif exitence email que quand le bouton valid a été cliqué 
 if(isset($_POST['valid'])){ 
  /*Coordonnées du formulaire d'inscription*/ 
  $email=mysql_realescape_string($_POST['mail']);   
  $pseudo=mysql_realescape_string($_POST['pseudo']); 
  $pass=mysql_realescape_string($_POST['pass']); 
  $news=mysql_realescape_string($_POST['news']); 
  $cgv=$_POST['condition']; 
   
  /*Vérification de l'existance*/ 
  $query_donnes="SELECT COUNT(*)  FROM adherent WHERE pseudo='".$pseudo."' OR mail_adh='".$mail."';"; 
  $result_donnes=mysql_query($query_donnes,$connect); 
  $nb=mysql_result($result_donnes,$result_donnes["pseudo"]); 
  if($nb!=0){ 
   $affiche_form=true; 
   echo '<p>Pseudo déjà pris ou adresse mail déjà existante</p>'; 
    
  } 
  else if ($nb==0){ 
   $affiche_form=false; //on ne réaffiche pas le formulaire 
   //et la tu enregistre dans ta BDD 
  } 
 }  
   
  ?>  
   <!--Choix de l'abonnement--> 
<?php 
  //affichage du formulaire 
  if($affiche_form ==true){ 

?>    
   <p>Pour vous inscrire, vous devez souscrire à une de nos offres :</p> 
   <form method="post" name="formulaire" action="" onsubmit="return verif_condition('condition');" > 
    <input type="text"  name="email"  value="<?php echo $email; ?>" /> 
    <!-- même principe pour les autres champs --> 
    ... 
    <!--CGV--> 
    <input type="checkbox" name='condition' id='condition' value="oui" <?php if($cgv=="oui") echo "checked"; ?>/> 
     Veuillez accepter les <a href="cga.pdf" target="_blank">Conditions Générales d'Utilisation</a> 
     <br/>    
    <input type="submit" value="Valider" name="valid" /> 
   </form>  
    
<?php 
  } 
?>    
 </div> 

 <?php include('footer.php'); ?>  

 </body> 
</html>
0
Aeyrin Messages postés 70 Date d'inscription vendredi 11 avril 2008 Statut Membre Dernière intervention 27 mai 2014 2
5 janv. 2012 à 11:47
Deja merci pour la reponse.

Je ne m'etais peut etre pas bien fait comprendre, mes variables venaient de la page préédente et je devais les garder jusqu'à la page suiavnte (donc sur 3 pages en gros).

Une solution a été trouvé, j'ai changer le javascript par:
function ChangeStatut(formulaire) {
	if(formulaire.regagree.checked == true) {
		formulaire.validation.disabled = false 
	}
	if(formulaire.regagree.checked == false) {
		formulaire.validation.disabled = true 
	}
}


ce qui permet de bloqué le bouton tant que le checkbox n'est pas coché.

Encore merci
0