Condition case à cocher dans formulaire

Nouveau WRInaute
bonjour,
j'ai un formulaire avec une case à cocher a la fin pour l'inscription à la newsletter. case à cocher =mailling valeur checkbox.

ce formulaire est régi par un vérif.php sur lequel je voudrai ajouter la condition si newsletter coché, then insert into ....

Le problème, c'est que je ne connais pas la syntaxe de la condition.
 
WRInaute accro
tu passes simplement la variable dans la case à cocher, et ensuite tu récupères la variable derrière... je vois pas où est le pb

ps : pour info, la case doit etre décochée d'origine
 
WRInaute accro
si la case est cochée ou if (exists($_POST['tavariable'])) ou if (!empty($_POST[])) tu insères 1 dans le champ de ta table, autrement 0 par défaut ^^

t'as plein de choix
 
WRInaute occasionnel
imaginons que ta checkbox soit comme suit :

<input type="checkbox" name="maCheckbox" value="1" />

dans le tag <form... de ton formulaire, rajoutes un : onsubmit="if(!this.maCheckbox.checked) {alert('vous devez cocher maCheckbox pour bénéficier de mon merveilleux service indispensable');return false;}"

ça empechera la soumission du formulaire, coté client, ça évites un aller retour serveur.
 
WRInaute accro
Pour une newsletters, laisse la cocher et garde le meme test:
if decoché { insert 0 } else { insert 1 }
 
Nouveau WRInaute
merci de vos réponses, :)
donc si j'ai bien tout saisi, mon code devrait donner :
Code:
$connect = mysql_connect(DB_SERVER, DB_SERVER_USERNAME,
DB_SERVER_PASSWORD)
or die('Impossible de se connecter : ' . mysql_error());
// sélection de la base de données
mysql_select_db(DB_DATABASE, $connect);
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$adresse = $_POST['adresse'];
$tel = $_POST['tel'];
$mail = $_POST['mail'];
$point = strpos($email,".");
$aroba = strpos($email,"@");

if($point=='')
{
echo "votre email doit comporter un <b>'.'</b>";
}
elseif($aroba=='')
{
echo "Votre email doit comporter un <b>'@'</b>";
}
else
{
echo "Votre email est: '<a href=\"mailto:"."$email"."\"><b>$email</b></a>'";
} 
$message = $_POST['message'];
print("<center><font color='FF0000'><font size='5'>Bonjour $prenom, merci de votre message.</font></font></center>");
onsubmit="if(!this.mailling.checked) {
$sql = "INSERT INTO contact VALUES ('', '".$nom."', '".$prenom."', '".$adresse."', '".$tel."', '".$mail."', '".$message."', now())";
 ;return false;}"
 $res = mysql_query($sql);
 if ($res) {
    echo $msg_ok;
  } else {
    echo mysql_error();
  }

?>

:?:
 
WRInaute discret
Je ne vois pas trop l'utilité du javascript (qui risque en plus de créer des erreurs sur ton script actuel).
Tu envoies tes variables en POST.
Tu testes la validité de tes variables en mettant les messages d'erreur dans une variable $erreur par exemple que tu définis en $erreur = "" au début.
Pour la newsletter (case à cocher), tu fais un truc du genre :
Code:
if(!isset($_POST['newsletter']) || ($_POST['newsletter'] != 1)) $erreur = "Vous devez accepter de recevoir notre newsletter";
Ensuite :
Code:
if(!$erreur != "") echo $erreur;
else mysql_query("insert into ...");

Autre point :
Tu peux vérifier l'adresse email à partir d'une expression régulière :
Code:
if(!ereg("^[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+\.[a-zA-Z]{2,4}$",$_POST['email'])) $erreur = "Le format de l'adresse email est invalide"
 
Nouveau WRInaute
ok, je comprends mieux.

j'ai donc modifié le code pour
Code:
mysql_select_db(DB_DATABASE, $connect);
$destinataire="contact@allhambra-communication.com";
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$adresse = $_POST['adresse'];
$tel = $_POST['tel'];
if(!ereg(^[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+\.[a-zA-Z]{2,4}$,$_POST['mail'])) $erreur = "Le format de l'adresse email est invalide"
if(!$erreur != "") $mail = $_POST['mail'];
echo"Votre email est: '<a href=\"mailto:"."$email"."\"><b>$email</b></a>'";
$message = $_POST['message'];
if(!isset($_POST['mailling']) ; ($_POST['mailling'] != 1) $erreur = "Vous devez accepter de recevoir notre newsletter";
if(!$erreur != "") echo $erreur print("<center><font color='FF0000'><font size='5'>Bonjour $prenom, merci de votre message.</font></font></center>");
else mysql_query("INSERT INTO contact VALUES ('', '".$nom."', '".$prenom."', '".$adresse."', '".$tel."', '".$mail."', '".$message."', now());
"
 $res = mysql_query($sql);
 if ($res) {
    echo $msg_ok;
  } else {
    echo mysql_error();
  }

?>

et du coup j'ai un message d'erreur stupide
Parse error: syntax error, unexpected '^', expecting ')' in /mnt/139/sdc/8/3/allhambra/Peter span design/verif.php on line 24

la ligne 24 étant tout simplement
Code:
$tel = $_POST['tel'];

je suis plus que perplexe :roll:
 
WRInaute discret
En fait il te manque les guillemets dans ton expression régulière de test de l'adresse email :
if(!ereg("^[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+\.[a-zA-Z]{2,4}$",$_POST['mail'])) $erreur = "Le format de l'adresse email est invalide"
 
Nouveau WRInaute
ben l'optique, ce n'est pas de les obliger a accepter le mailing, mais juste de pourvoir incrémenter dans ma BDD ceux qui souhaitent la recevoir.
donc par défaut la case est décochée.

pour les guillemets, je remets ça de suite en espérant ne pas avoir d'erreur.

Merci à tous de votre participation
 
Nouveau WRInaute
bon aprés retouche, le code donne
Code:
mysql_select_db(DB_DATABASE, $connect);
$destinataire="moi@monfai.com";
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$adresse = $_POST['adresse'];
$tel = $_POST['tel'];
$message = $_POST['message'];
if(!ereg("^[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+@[0-9a-zA-Z]{1}[0-9a-zA-Z_\.\-]+\.[a-zA-Z]{2,4}$",
$_POST['mail'])) $erreur = "Le format de l'adresse email est invalide"
if(!isset($_POST['mailling']) ; ($_POST['mailling'] != 1) $erreur = "Si vous devez ne cochez pas la case, vous ne recevrez pas notre newsletter";
if(!$erreur != "") echo $erreur print("<center><font color='FF0000'><font size='5'>Bonjour $prenom, merci de votre message.</font></font></center>");
else mysql_query("INSERT INTO contact VALUES ('', '".$nom."', '".$prenom."', '".$adresse."', '".$tel."', '".$mail."', '".$message."', now());
"$res = mysql_query($sql); if ($res) {echo $msg_ok;} else {echo mysql_error();}
?>

avec un beau Parse error: syntax error, unexpected T_IF in /mnt/139/sdc/8/3/allhambra/Peter span design/verif.php on line 27 !

La ligne 27 étant :
if(!isset($_POST['mailling']) ; ($_POST['mailling'] != 1) $erreur = "Si vous devez ne cochez pas la case, vous ne recevrez pas notre newsletter";
 
WRInaute accro
Code:
if(!isset($_POST['mailling']) ; ($_POST['mailling'] != 1) $erreur = "Si vous devez ne cochez pas la case, vous ne recevrez pas notre newsletter";

C'est pas ca plutot

Code:
if(!isset($_POST['mailling']) ; ($_POST['mailling'] != 1) ; $erreur = "Si vous devez ne cochez pas la case, vous ne recevrez pas notre newsletter";
 
WRInaute discret
finstreet a dit:
Code:
if(!isset($_POST['mailling']) ; ($_POST['mailling'] != 1) $erreur = "Si vous devez ne cochez pas la case, vous ne recevrez pas notre newsletter";

C'est pas ca plutot

Code:
if(!isset($_POST['mailling']) ; ($_POST['mailling'] != 1) ; $erreur = "Si vous devez ne cochez pas la case, vous ne recevrez pas notre newsletter";

Je dirais plutôt problème de caractère de condition et parenthèse :
if(!isset($_POST['mailling']) || ($_POST['mailling'] != 1)) $erreur = "Si vous ne cochez pas la case, vous ne recevrez pas notre newsletter";
 
Nouveau WRInaute
if(!isset($_POST['mailling']) || ($_POST['mailling'] != 1)) $erreur = "Si vous ne cochez pas la case, vous ne recevrez pas notre newsletter";

même rédigé commeça, j'ai toujours ce satané message :?
Parse error: syntax error, unexpected T_IF in /mnt/139/sdc/8/3/allhambra/verif.php on line 27
 
WRInaute discret
catseyes a dit:
if(!isset($_POST['mailling']) || ($_POST['mailling'] != 1)) $erreur = "Si vous ne cochez pas la case, vous ne recevrez pas notre newsletter";

même rédigé commeça, j'ai toujours ce satané message :?
Parse error: syntax error, unexpected T_IF in /mnt/139/sdc/8/3/allhambra/verif.php on line 27

Je viens de constater que la ligne précédente ne se tremine pas par ;. Ca devrait résoudre ton problème.
 
Discussions similaires
Haut