Bonjour,

Ça fait un bout de temps que je cherche à résoudre un problème:
Dans ma page "newsletter.php" ,l'utilisateur saisit les thématiques de ses newsletters.
Au submit, si tout est validé côtés serveur client, une popin s'ouvre pour l'informer
sans rechargement ni redirection.

A l'état actuel, les inputs hors type checkbox sont bien enregistrés dans la table.
Je voudrais demander une seule question précise: Comment enregistrer les valeurs des
cases cochées "nl_choices" ?
Je pense que le problème vient de leur définition dans le js (lignes 68 à 70).
Merci pour vos éclaircissements.

newsletter.php:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
	require("admin/config-db.php");
	mysql_connect($adresse,$nom,$motdepasse);
	mysql_select_db($database); 
	if(isset($_POST['action-submit'])){
		$valid=true;
 
		$nom=$_POST['nom'];
		$email=$_POST['email'];
		if(isset($_POST['choices'])){
			$choices=$_POST['choices'];
			$nl_choices=implode("," ,$choices);
			$msg_choices = "";
		}else {
			$choices = Array ();
			$valid=false;
			$msg_choices = "Veuillez choisir une neswletter au minimum"; 
		}
 
		$match_nom = preg_match('#^[a-zéèàùûêâôëA-Z0-9._\'\s-]{5,16}$#', $nom);
		if(!$match_nom ){
			echo "Veuillez choisir un nom de 5 à 16 caractères";
			$valid=false;
		}
 
		$query=mysql_query("SELECT email from newsletterusers where email='$email'") or die(mysql_error());
		$row=mysql_num_rows($query);
		if(empty($email)){
			echo "Veuillez renseigner votre adresse e-mail";
			$valid=false;
		}else if(! filter_var($email,FILTER_VALIDATE_EMAIL))  {
			echo "E-mail non valide. Veuillez recommencer";
			$valid=false;
		}else if($row>0){
			echo "Adresse mail déjà enregistrée";
			$valid=false;
		}else{
			echo "Pour valider votre inscription à la newsletter, un lien d'activation vous a été envoyé à votre adresse mail.";
 
		}
	}
?>
<form id="themes"  action="modules/insert_into_db.php" method="post" data-rel="popup_name" class="poplight">
	<input id="test1" type="checkbox" name="choices[]" value="Culture"
		<?php if($_POST && in_array('Culture',$choices)){ echo "checked";} ?>/>
	<input id="test2" type="checkbox" name="choices[]" value="Planète"
		<?php if($_POST && in_array('Planète',$choices)){ echo "checked";} ?>/>
	<input id="test3" type="checkbox" name="choices[]" value="Sciences"
		<?php if($_POST && in_array('Sciences',$choices)){ echo "checked";} ?>/>
 
	<input id="nom-inscr" name="nom" type="text" />
	<input id="email-inscr" name="email" type="text" />
 
	<button id="action-submit"name="action-submit" type="submit">JE M'INSCRIS</button>
	<div id="popup_name" class="popup_block">
		<h2>CONFIRMATION D'ENREGISTREMENT</h2>
		<p>Les données ont été correctement enregistrées.<br/>
		Vous allez recevoir un mail d'activation à : <strong id="emailtarget"></strong></p>
	</div>
</form>
Js associé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
$(function(){
	var formulaire = $("#themes");
	formulaire.on('submit',function(event)   {
		event.preventDefault();
		//check nom--------------------------------------------------------
		var erreur_name_div = formulaire.find("#error_name");
		var nom00 = formulaire.find("input[name=nom]");
		var nom = $.trim(nom00.val()); 
		var nom_regex = /^[a-zéèàùûêâôëA-Z0-9._\'\s-]{5,16}$/;
		if(nom == "" )	{
			erreur_name_div.html("Veuillez renseigner votre nom ");
			$("#nom-inscr").css("border-color","#cc3c23");
			return false;
		}else if(nom != "") {
			if (!nom_regex.test(nom))	{
				erreur_name_div.html("saisie de nom incorrecte");
				$("#nom-inscr").css("border-color","#cc3c23");
				return false;
			}						
		} 
		//check email--------------------------------------------------------
		var erreur_email_div = formulaire.find("#error_email");
		var mail = formulaire.find("input[name=email]");
		var email = $.trim(mail.val()); 
		var email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
		if(email == "")	{
			erreur_email_div.html("Veuillez renseigner une adresse mail");
			$("#email-inscr").css("border-color","#cc3c23");
			return false;
		}else if(email != "") {
			if (!email_regex.test(email))	{
				erreur_email_div.html("E-mail non valide. Veuillez recommencer");
				$("#email-inscr").css("border-color","#cc3c23");
				return false;
			}			
		} 
		var datastring ='email='+email; 
		$.ajax({
			type: "POST", 
			url: "check_email_exists.php", 
			data: datastring, 
			success: function(responseText) {
				if(responseText == 1) { 
					erreur_email_div.html("Adresse mail déjà enregistrée");
					$("#email-inscr").css("border-color","#cc3c23");
				}else if(responseText == '') { 
					erreur_email_div.html("");
					mail.val(''); 	
				}
			}
		});
		//check choices--------------------------------------------------------
		var boxesTicked = "";
		var erreur_checkbox_div = formulaire.find("#error_checkbox");
		for (i = document.getElementsByName('choices[]').length - 1; i >= 0; i--) {
			if (document.getElementsByName('choices[]')[i].checked) {
				boxesTicked = boxesTicked + document.getElementsByName('choices[]')[i].value + "\n";
			}
		}
		if (boxesTicked == "") {
			erreur_checkbox_div.html("<img src='images/alert.png'><p>Veuillez séléctionner une ou plusieurs newsletters pour continuer</p>");
			$("#error_checkbox").css("visibility","visible");
			return false;
		}else {
 
		}
		//Récupération des valeurs des checkbox------------------------------------------------------------------
		var nl_choices00=formulaire.find("input[name=choices[]]");
		var nl_choices11 = nl_choices00.val();
		var nl_choices = nl_choices11.join(,); 
 
		//insert in database-------------------------------------------------------------------
		var datastring2 = "nl_choices="+nl_choices+"&nom="+nom+"&email="+email;
 
		$.ajax({
			type: "POST", 
			url: "insert_into_db.php", 
			data: datastring2,
			//dataType : 'html',
			success: function(responseText2) {
				if(responseText2 == 1) { 
					return false;
				}else if(responseText2 == '') {
					return true;
				}
			}
		});
		//début popin -----------------------------------------------------------
		var popID = $(this).data('rel'); 
		var popWidth = $(this).data('width'); 
		document.getElementById("emailtarget").innerHTML = email;
		$('#' + popID).fadeIn("fast").css({ 'width': popWidth}).prepend('<a href="#" class="close"><img src="images/close_pop.png" class="btn_close" title="Fermer la fenêtre" alt="Fermer" /></a>');
		var popMargTop = ($('#' + popID).height() + 80) / 2;
		var popMargLeft = ($('#' + popID).width() + 80) / 2;
		$('#' + popID).css({ 
			'margin-top' : -popMargTop,
			'margin-left' : -popMargLeft
		});
		$('body').append('<div id="fade"></div>');    
		$('#fade').css({'filter' : 'alpha(opacity=70)'}).show();
 
	});
	//fermer au clic sur fond noir----------------------------------------------
	$('body').on('click', 'a.close, #fade', function() { 
		$('#fade , .popup_block').fadeOut("fast",function() {
			$('#fade, a.close').remove();  
		});
		return false;
	});
});
check_email_exists.php:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?php 
	$email=$_POST['email'];
	require("config-db.php");
	mysql_connect($adresse,$nom,$motdepasse);
	mysql_select_db($database); 
	$query = mysql_query("SELECT `email` FROM `newsletterusers` WHERE `email` = '$email'");
	if(mysql_num_rows($query) == 1) { 
		echo '1';
	} else {
		echo ''; 
	}
?>

insert_into_db.php:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php 
	require("config-db.php");
	mysql_connect($adresse,$nom,$motdepasse);
	mysql_select_db($database);
 
	if(isset($_POST['choices'])){
		$choices=$_POST['choices'];
		$nl_choices=implode("," ,$choices);
	}else {
		$choices = Array ();
	}
	$nom        = $_POST['nom'];
	$email      = $_POST['email'];
 
	srand((double)microtime()*1000000);       
	$string     = md5(rand(0,1000000)); 
	$thekey     = $string;
	if(mysql_query("INSERT into newsletterusers (nl_choices,nom,email,validkey) values('$nl_choices','$nom','$email','$thekey')")){
		echo '';
	} else {
		echo '1'; 
	}
?>