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:
Js associé:
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>
check_email_exists.php:
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; }); });
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'; } ?>
Partager