Bonjour,

Je suis entrain de fabriqué un module de news letter sur mon index.php.

Voici le code html du module :

		<form method="post" action="index.php" name="newsletter">
			<label form="email">Entrez votre mail :</label><br />
			<input type="email" name="email" value="exemple@domaine.fr" onFocus="if(this.value==this.defaultValue)value=''" onBlur="if(this.value=='')value=this.defaultValue"><br />
			
			<input type="submit" name="news" value="">
			
			<a href="index.php?desabo=1">
				<p>Vous souhaitez vous désabonner ?</p>
			</a>	
		</form>	


Voici la partie traitement PHP sur la même page pour la partie en GET:


// On vérifie qu'on est bien appuyé sur se désabonné
		if (isset($_GET['desabo']) && ($_GET['desabo']='1'))
		{			
			// On verifie que la variable $email n'est pas vide ou n'est pas égale à exemple@domaine.fr
			if(($email == "exemple@domaine.fr") || (empty($_POST['email']))) 
			{				
			$valid = false;			
			?>
				<script language='Javascript' type='text/Javascript'>		
					alert('email faux');
				</script>
			<?php					
			}
			
			if($valid)
			{	
			?>
				<script language='Javascript' type='text/Javascript'>				
					alert('envoi');	
				</script>
			<?php								
				$mj->listsRemoveContact($parametres);
				
				unset($email);	
			}		
		};		


Pour la partie POST (donc au submit):

// On vérifie que l'on a pas cliqué sur se désabonné
		if (!isset($_GET['desabo']))
		{	
			if (!empty($_POST) && !empty($_POST['email'])) 
			{ 
				// On vérifie que la variable $email n'est pas vide
				if (empty($_POST['email'])) 
				{			
					$valid = false;	
				}
				if($email == "exemple@domaine.fr")
				{
					$valid = false;		
				}
				if($valid)
				{			
					$mj->listsAddContact($parametres);
					
					unset($email);	
				}
			}
		} 


Mon problème, je ne parviens pas à récupéré la valeur du input donc le traitement ne marche pas dans le cas du clic sur le lien <a> pour se désabonné. Je ne sais pas comment procéder, j'ai tenté pas mal de choses mais qui se sont avérés inutiles...

Pourriez-vous m'éclairer ?

merci
Hello,


En cliquant sur le lien, tu envoies une requête en GET dont les paramètres sont dans l'URL.
Tu sors donc de la method POST de ton formulaire puisqu'il n'est jamais soumis.

Pour corriger le tir tu peux faire ça avec deux boutons :

<form method="post" action="index.php" name="newsletter">
			<label form="email">Entrez votre mail :</label><br />
			<input type="email" name="email" value="exemple@domaine.fr" onFocus="if(this.value==this.defaultValue)value=''" onBlur="if(this.value=='')value=this.defaultValue"><br />
			
			<input type="submit" name="subscribe" value="M'abonner">
			
				<p>Vous souhaitez vous désabonner ?<br />
 <input type="submit" name="unsubscribe" value="Me désabonner"></p>
		</form>	


puis côté serveur :

if (isset($_POST['unsubscribe']))
{			
	// ton code pour la désabo
}
elseif (isset($_POST['subscribe']))
{
	// ton code pour l'abo
}


De mémoire seul le bouton activé gère une entrée dans le tableau POST. Du coup tu peux vérifier quel bouton a été activé en vérifiant si son name a créé une clef.
Dans l'absolu le elseif fait du zèle, tu pourrais te limiter à un else, mais c'est pour marquer le coup Smiley langue

Attention à ton
if($valid)

Il faut déclarer la variable plus haut dans ton code.

Bonne continuation. Smiley smile
Modifié par Geoffrey C. (16 Nov 2012 - 12:35)
Merci beaucoup tout marche au poil.
J'avais déjà pensé à cette "obligation" de devoir utiliser que des boutons pour bien interagir avec l'envoie des données.

Mais du-coup j'ai fais ça:

   
boutonDesabo{
    background: none repeat scroll 0 0 transparent;
    border: 0 none;
    color: #9BD7FB;
    cursor: pointer;
    font-size: 12px;
    font-weight: normal;
    line-height: 100%;
    margin: 10px 0 0 40px;
    padding: 0;
    text-align: center;
    text-decoration: none;}


Sa a la même apparence que mon précédent lien et sa fonctionne niquel avec ta méthode. Merci ! Smiley biggrin