Bonsoir,
J'ai un petit problème avec une case à cocher, celle de la newsletter.
Si l'internaute veut s'inscrire à la newsletter, il doit cocher la case qui va avec.
Voici un extrait du formulaire :
Code :
- <p align="left" style="margin-left:70px"><input type="checkbox" name="newsletter" id="newsletter"
- value="oui" <?php echo getNewsletter('oui'); ?> checked="checked" />
- Je souhaite recevoir par e-mail la Newsletter.<br/></p>
|
Si l'internaute coche cette case, la valeur "oui" est inscrite dans la base de donnée.
Donc quand il la coche, je n'ai aucun problème, la valeur "oui" est bien inscrite dans la base.
Par contre, s'il ne souhaite pas s'inscrire à la newsletter et qu'il décoche la case, voilà mon problème !! Lors de la validation, je suis directement redirectioner vers ma page index.php, et bien sur aucun enregistrement n'est effectué dans la base.
Donc en gros, ça marche quand il coche, mais ça bug quand il décoche !
Voici ma fonction getNewsletter, appelé dans le formulaire :
Code :
- function getNewsletter($newsletter)
- {
- $default = '';
- if (isset($_POST['newsletter_info']) and $_POST['newsletter_info'] == '')
- {
- $_POST['form_newsletter'] == $newsletter
- {
- $default='checked="checked"';
- }
- }
- return $default;
- }
|
Un extrait de ma page de traitement :
Code :
- // Newsletter
- if(isset($_POST['newsletter']))
- {
- $newsletter = trim($_POST['newsletter']);
- $newsletter_result = checkNewsletter($newsletter);
- if($newsletter_result == 'newsletterfalse')
- {
- $_SESSION['newsletter_info'] = '<span class="erreur">Erreur validation newsletter.</span><br/>';
- $_SESSION['form_newsletter'] = '';
- $_SESSION['erreurs']++;
- }
- else if($newsletter_result == 'ok')
- {
- $_SESSION['newsletter_info'] = '';
- $_SESSION['form_newsletter'] = $newsletter;
- }
- }
- else
- {
- header('Location: ../index.php');
- exit();
- }
|
Et enfin la fonction checkNewsletter appelée dans la page de traitement :
Code :
- function checkNewsletter($newsletter)
- {
- if(!preg_match('#^(oui)*$#', $newsletter)) return 'newsletterfalse';
- else return 'ok';
- }
|
Merci d'avance pour votre aide !