Création
d'entreprise
Posez votre question Signaler

Champ obligatoire dans formulaire [Résolu]

poky - Dernière réponse le 11 juin 2011 à 15:54
Bonjour,
Petit problème avec un formulaire sous php. Alors plusieurs questions à vous poser.
1)J'ai remarqué que toutes les données du formulaire doivent être remplies pour qu'il soit validé.
Comment peut-on faire pour rendre certains champs obligatoires ou bien aucun champ onligatoire.
2) Mon fichier traitement.php (voir code plus bas) est celui qui traite les données. J'ai remarqué que quand il est validé, on arrive sur celui-ci et tout le monde peut voir en faisant "affichage" "source" mes codes de connexion à la base de données, ce qui est un peut gênant.
3) Dernière question : Est-ce possible d'éviter d'être envahi de données remplies automatiquement par des robots ou je ne sais quoi.
Voilà merci à tous pour cet excellent forum
Cordlt
CN
<?php
mysql_connect("sql.free.fr","nom base","mot passe");
mysql_selectdb("legarrit");
$requete = "insert into formulaire (civilite,
nom,
prenom,
adresse,
codepostal,
ville,
dep,
pays,
tel,
yes,
com,
email,
site)";
$requete .= " values ('$civilite',
'$nom',
'$prenom',
'$adresse',
$codepostal,
'$ville',
'$dep',
'$pays',
'$tel',
$yes ,
'$com',
'$email',
'$site')";
$resultat = mysql_query( $requete );
if(!$resultat) echo "Erreur lors de l'enregistrement des données!";
else echo "Votre demande a bien été prise en compte.";
?>
<br><p align="center"><b><font face="Verdana">Nous vous répondrons très prochainement.</font></b></p>
<br><p align="center"><b><font face="Verdana">Merci de votre visite et à très bientôt.</font></b></p>
Lire la suite 

Champ obligatoire dans formulaire »

44 réponses
Réponse
+1
moins plus
Salut,

Alors, dans l'ordre :

1) Tu as plusieures possibilités, soit tu utilises le javascript pour vérifier que tes variables sont saisies, du genre ça :
//CODE JAVASCRIPT à mettre dans un fichier à part script.js
function verification()
{
if (document.formulaire.nom.value == "")
 { 
   alert("Entrez votre nom !");  
   return false;   
 }
}

Puis dans ton code php :

<script LANGUAGE="JavaScript" src="../script.js"></script> 
<form method="post" name="formuliare" action="ajout_nord.php" onsubmit="return verification()" >

Là, c'est au format HTML, tu peux donc soit fermer les balises php avant et les ouvrir ensuite ou tout mettre en php avec des echo.

La seconde méthode consiste à utiliser le php.
Quand tu valides ton formulaire, si une variable est nulle, tu renvoies un message d'erreur

2) Je doute fortement que l'on puisse voir la chaine de connexion et regardant la source du fichier...
Cela étant, je te conseille de faire des inclusions de fichiers afin que tu n'ais pas à retaper cette chaine dans tous les fichiers :

#dans tous tes fichiers php, tu mets ça au début :
<?php
	include ("../config.php");
?>	

Puis, tu crées un nouveau fichier que tu nommes config.php dans lequel tu mets ta chaine de connexion :
<?php
mysql_connect("sql.free.fr","nom base","mot passe");
mysql_selectdb("legarrit"); 
?>

Je te conseille aussi de vérifier tes données avant de faire une requête SQL.
Vérifie qu'elles ne sont pas nulles, vérifies qu'elles correspondent au format attendu, genre, ne pas entrer des lettres alors qu'on attend des chiffres.

3)Oui c'est possible en mettant en place un système comme on en voit des dizaines de nos jours, c'est à dire un système d'image contenant des chiffres et des lettres que l'on doit saisir pour pouvoir continuer.
Cela étant, je n'ai jamais mis ce genre de solution en place pour le moment.


En éspèrant t'avoir aidé un minimum.

Bonne journée.
nassdak- 26 mars 2007 à 11:33
Désolé foobar47,

J'écrivais mon message quand t'as répondu ;)
J'ai juste à rajouter que si tu désactives le javascript de ton navigateur, ta fonction ne marche plus...
la vérification côté serveur devient donc obligatoire ;)
foobar47- 26 mars 2007 à 11:43
Tout à fait d'accord avec toi ;-)
C'est pour ça que j'ai proposé les 2 solutions.

Au pire, rien n'empêche de faire 2 fois la vérification.

A++
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

Merci à tous pour la rapidité de la réponse, plus vite que l'éclair.
Je vais donc travailler tout ça et bien sûr, je perds la boule, bien sûr que l'on ne voit pas mes indentifiants, j'ai vérifié.
Pour les captcha, on en voit partout, je pense qu'il faudra que je me penche sur le problème tôt ou tard mais je n'y connais rien.
Merci encore.
CN
foobar47- 26 mars 2007 à 12:15
De rien ;-)

N'hésite pas si besoin...
poky - 26 mars 2007 à 14:03
Bonjour,

J'ai finalement opté pour du php, le javascript n'étant pas mon truc.
J'ai donc forcé le formulaire à rendre des champs obligatoires.
Tout a l'air de fonctionner, s'il manque un champ, il le signale, si tout est ok, il valide.
MAIS problème, mes données ne s'affichent pas dans la base de données, on dirait qu'elles ne sont pas enregistrées.
J'ai bidouillé un peu le code php et il y a sûrmeent un pb quelque part.
D'autre part, chez Free, on ne peut pas récupèrer les données par mail ? Rien n'a changé de ce côté là ?
Cordlt et merci beaucoup.
traitement.php ci-joint, les données sont remplies bien sûr mais ici masquées par des XXXX.

<?php
mysql_connect("sql.free.fr","XXXX","XXXX");
mysql_selectdb("nom base");


$requete = "insert into formulaire (civilite,
nom,
prenom,
adresse,
codepostal,
ville,
dep,
pays,
tel,
yes,
com,
email,
site)";
$requete .= " values ('$civilite',
'$nom',
'$prenom',
'$adresse',
$codepostal,
'$ville',
'$dep',
'$pays',
'$tel',
$yes ,
'$com',
'$email',
'$site')";
$resultat = mysql_query( $requete );
// vérification des champs
if (empty($_POST['nom']))
$message .= "Veuillez indiquer votre nom<br/>";
if (empty($_POST['email']))
$message .= "Veuillez renseigner le champ email<br/>";
if (empty($_POST['tel']))
$message .= "Veuillez renseigner le champ téléphone<br/>";
if (empty($_POST['com']))
$message .= "Veuillez taper votre message<br/>";



if (strlen($message) > strlen($msg_erreur)) {

echo $message;

} else echo "Nous vous répondrons très prochainement, merci de votre visite et à très bientôt.";

?>
nounou85 - 11 juin 2011 à 15:54
bjr, moi j'ai presque le mm prob, sauf que moi les champs mon formulaire sont obligatoire et je voulais les rendre facultatifs. je porte à votre connaissance que le formulaire ce n'est pas moi qui l'avait fait , car là je suis entrain de continuer un travaille de qlq'un!!! et je ne sais pas qcq quil avait fait exactement pour rendre ces champs obligatoire , est ce que c'est du java script ou c'est de php!!!!
Ajouter un commentaire
Réponse
+0
moins plus
Salut!

1) Pour rendre certains champs obligatoires, il faut tout simplement vérifier que, lors de l'envoi du formulaire, ces champs soient bien remplis.

2)Tu es sur qu'en affichant la source tu arrives à voir le code php interprété?!? Faudrait que tu me présente ton navigateur, jsuis interresé ;) lol

3)Oui il est possible que des robots remplissent automatiquement ton formulaire. c'est pour ça qu'on utilise des "captcha" (voir http://fr.wikipedia.org/wiki/Captcha). Ce sont les images peu lisibles où tu dois recopier ce que tu vois dans une box.
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Est-ce que tes données étaient insérées avant qu'on modifie le code ?

Je te suggère de récupèrer les données avant de faire ta requête :

#tu mets ça au début de fichier
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];

#puis ton code...

Tu pourrais presque faire les tests dés cet instant là...
Tiens moi au courant.

A++
poky - 26 mars 2007 à 14:30
oui, les données étaient insérées avant de faire les modif.
Je viens de rajouter ce que tu m'as dit ça ne change rien.
Voici le code.
Merci
CN
<?php
mysql_connect("sql.free.fr","XXX","XXX");
mysql_selectdb("XXX");
$civilite = $_POST['civilite'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$codepostal = $_POST['codepostal'];
$ville = $_POST['ville'];
$dep = $_POST['dep'];
$pays = $_POST['pays'];
$tel= $_POST['tel'];
$yes = $_POST['yes'];
$com= $_POST['com'];
$email= $_POST['email'];
$site = $_POST['site'];


$requete = "insert into formulaire (civilite,
nom,
prenom,
adresse,
codepostal,
ville,
dep,
pays,
tel,
yes,
com,
email,
site)";
$requete .= " values ('$civilite',
'$nom',
'$prenom',
'$adresse',
$codepostal,
'$ville',
'$dep',
'$pays',
'$tel',
$yes ,
'$com',
'$email',
'$site')";
$resultat = mysql_query( $requete );
// vérification des champs
if (empty($_POST['nom']))
$message .= "Veuillez indiquer votre nom<br/>";
if (empty($_POST['email']))
$message .= "Veuillez renseigner le champ email<br/>";
if (empty($_POST['tel']))
$message .= "Veuillez renseigner le champ téléphone<br/>";
if (empty($_POST['com']))
$message .= "Veuillez taper votre message<br/>";



if (strlen($message) > strlen($msg_erreur)) {

echo $message;

} else echo "Nous vous répondrons très prochainement, merci de votre visite et à très bientôt.";

?>
Ajouter un commentaire
Réponse
+0
moins plus
Peux-tu ajouter des echo pour afficher les variables et voir si elles sont bien passées ?

Tu peux poster les 2 fichiers php pour voir si y'a pas une erreur avant svp.
poky17- 26 mars 2007 à 14:50
Peux-tu ajouter des echo pour afficher les variables et voir si elles sont bien passées ?
C'est du chinois pour moi... suis nulle en php...
Voici les 2 fichiers

reservation.php (formulaire)

<form method="post" action="traitement.php" id="reserver">
<p class="titre">Coordonnées</p>

<fieldset id="coordonnees">
<p id="civilite"><label>Civilité : </label>
<input type="radio" name="civilite" value="M." />M.
<input type="radio" name="civilite" value="Mlle" />Mlle
<input type="radio" name="civilite" value="Mme" />Mme
</p>
<label>Nom : </label>
<input type="text" name="nom" size="30" /><br />
<label>Prénom: </label>
<input type="text" name="prenom" size="30" /><br />
<label>Adresse : </label>
<input type="text" name="adresse" size="30" /><br />
<label>Code postal : </label>
<input type="text" name="codepostal" size="30" /><br />
<label>Ville : </label>
<input type="text" name="ville" size="30" /><br />
<label>Département : </label>
<input type="text" name="dep" size="30" /><br />
<label>N° de téléphone : </label>
<input type="text" name="tel" size="14" maxlength="14" value=""><br />
<label>e-mail : </label>
<input type="text" name="email" size="30" /><br />
<label>Site perso : </label>
<input type="text" name="site" size="30" /><br />
</fieldset>

<p class="titre">Infos</p>
<p id="civilite"><label>Connaissez-vous notre région ? </label>
<input type="radio" name="yes" value=1 />Oui.
<input type="radio" name="yes" value=2 />Non.
</p>

<p class="titre">Message</p>

<fieldset id="message">
<textarea name="com" rows="5" cols="40"></textarea>
</fieldset>
<p id="buttons">
<input type="submit" value="Envoyer" />
<input type="reset" value="Recommencer" />
</p>
</form>

et traitement.php

<?php
mysql_connect("sql.free.fr","XXX","XXX");
mysql_selectdb("XXX");

$civilite = $_POST['civilite'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$codepostal = $_POST['codepostal'];
$ville = $_POST['ville'];
$dep = $_POST['dep'];
$pays = $_POST['pays'];
$tel= $_POST['tel'];
$yes = $_POST['yes'];
$com= $_POST['com'];
$email= $_POST['email'];
$site = $_POST['site'];


$requete = "insert into formulaire (civilite,
nom,
prenom,
adresse,
codepostal,
ville,
dep,
pays,
tel,
yes,
com,
email,
site)";
$requete .= " values ('$civilite',
'$nom',
'$prenom',
'$adresse',
$codepostal,
'$ville',
'$dep',
'$pays',
'$tel',
$yes ,
'$com',
'$email',
'$site')";
$resultat = mysql_query( $requete );
// vérification des champs
if (empty($_POST['nom']))
$message .= "Veuillez indiquer votre nom<br/>";
if (empty($_POST['email']))
$message .= "Veuillez renseigner le champ email<br/>";
if (empty($_POST['tel']))
$message .= "Veuillez renseigner le champ téléphone<br/>";
if (empty($_POST['com']))
$message .= "Veuillez taper votre message<br/>";



if (strlen($message) > strlen($msg_erreur)) {

echo $message;

} else echo "Nous vous répondrons très prochainement, merci de votre visite et à très bientôt.";

?>
Ajouter un commentaire
Réponse
+0
moins plus
Oui fais comme foobar t'indique. Affiches le résultat de ta requête :
echo $requete

et poste la nous.
Et sinon la vérification des champs doient se faire avant la requete, sinon ça sert à rien ;)

Au fait, tu nous fera un prix pour des vacances dans ton gîte?lol :)
foobar47- 26 mars 2007 à 15:28
Ouvre un nouveau message svp ;-)
nassdakdi_tunisian - 26 mars 2007 à 15:32
di_tunisian on t'as répondu dans ton message, mais fais tu ce que t'on dit?
C'est pas cool de venir perturber les posts des autres, et t'inquiète pas, tout le monde réponds où il peut...
foobar47- 26 mars 2007 à 15:33
+1
Ajouter un commentaire
Réponse
+0
moins plus
Ah malheureusement, c'est pour des amis le site, je ne suis pas la propriétaire mais ça peut se négocier...
Le soleil, pas de problème, le Pastis aussi et il y a des arbres, alors c'est parfait...
Bon, eh ben je cale je ne comprends pas trop où placer echo.
Et c'est toujours le même résultat.
Merci
CN
Ajouter un commentaire
Réponse
+0
moins plus
Je recommence :

File moi tes fichiers PHP qu'on puisse y jetter un oeil !

As-tu des WARNING ou autres messages ?
Ajouter un commentaire
Réponse
+0
moins plus
Aucun warning, je viens d'envoyer les fichiers sur ta boite Hotmail.
J'espère avoir bien fait ?
A plus
CN
foobar47- 26 mars 2007 à 16:03
Rien reçu pour le moment !!
Ajouter un commentaire
Réponse
+0
moins plus
Ah pourtant bien envoyé sur bourbon113@hotmail.com.
Tu veux que je les poste sur le forum directement ?
Ajouter un commentaire
Réponse
+0
moins plus
Les messages doivent être bloqués parcequ'ils contiennent du code PHP...

Poste les ici ;-)
Ajouter un commentaire
Réponse
+0
moins plus
alors le fichier reservation.php (formulaire)

<form method="post" action="traitement.php" id="reserver">
<p class="titre">Coordonnées</p>

<fieldset id="coordonnees">
<p id="civilite"><label>Civilité : </label>
<input type="radio" name="civilite" value="M." />M.
<input type="radio" name="civilite" value="Mlle" />Mlle
<input type="radio" name="civilite" value="Mme" />Mme
</p>
<label>Nom : </label>
<input type="text" name="nom" size="30" /><br />
<label>Prénom: </label>
<input type="text" name="prenom" size="30" /><br />
<label>Adresse : </label>
<input type="text" name="adresse" size="30" /><br />
<label>Code postal : </label>
<input type="text" name="codepostal" size="30" /><br />
<label>Ville : </label>
<input type="text" name="ville" size="30" /><br />
<label>Département : </label>
<input type="text" name="dep" size="30" /><br />
<label>N° de téléphone : </label>
<input type="text" name="tel" size="14" maxlength="14" value=""><br />
<label>e-mail : </label>
<input type="text" name="email" size="30" /><br />
<label>Site perso : </label>
<input type="text" name="site" size="30" /><br />
</fieldset>

<p class="titre">Infos</p>
<p id="civilite"><label>Connaissez-vous notre région ? </label>
<input type="radio" name="yes" value=1 />Oui.
<input type="radio" name="yes" value=2 />Non.
</p>

<p class="titre">Message</p>

<fieldset id="message">
<textarea name="com" rows="5" cols="40"></textarea>
</fieldset>
<p id="buttons">
<input type="submit" value="Envoyer" />
<input type="reset" value="Recommencer" />
</p>
</form>
Ajouter un commentaire
Réponse
+0
moins plus
et le fichier traitement.php

<?php
mysql_connect("sql.free.fr","XXX","XXX");
mysql_selectdb("XXX");

// vérification des champs
if (empty($_POST['nom']))
$message .= "Veuillez indiquer votre nom<br/>";
if (empty($_POST['email']))
$message .= "Veuillez renseigner le champ email<br/>";
if (empty($_POST['tel']))
$message .= "Veuillez renseigner le champ téléphone<br/>";
if (empty($_POST['com']))
$message .= "Veuillez taper votre message<br/>";



if (strlen($message) > strlen($msg_erreur)) {

echo $message;

} else echo "Nous vous répondrons très prochainement, merci de votre visite et à très bientôt.";

$requete = "insert into formulaire (civilite,
nom,
prenom,
adresse,
codepostal,
ville,
dep,
pays,
tel,
yes,
com,
email,
site)";
$requete .= " values ('$civilite',
'$nom',
'$prenom',
'$adresse',
$codepostal,
'$ville',
'$dep',
'$pays',
'$tel',
$yes ,
'$com',
'$email',
'$site')";

$civilite = $_POST['civilite'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$codepostal = $_POST['codepostal'];
$ville = $_POST['ville'];
$dep = $_POST['dep'];
$pays = $_POST['pays'];
$tel= $_POST['tel'];
$yes = $_POST['yes'];
$com= $_POST['com'];
$email= $_POST['email'];
$site = $_POST['site'];

$resultat = mysql_query( $requete );

?>
nassdak- 26 mars 2007 à 16:30
C'est normal, tu récupères tes variables POST après la requête, donc dans ton cas, ça ne peut pas marcher. Mets les au début
Ajouter un commentaire
Réponse
+0
moins plus
même résultat en les mettant au début, je suis vraiment con et désolée de vous faire perdre votre temps...

Elles sont vraiment au début là ou alors c'est avant le mysql connect mais ça m'étonnerait.

<?php
mysql_connect("sql.free.fr","XXX","XXX");
mysql_selectdb("XXX");

$civilite = $_POST['civilite'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$codepostal = $_POST['codepostal'];
$ville = $_POST['ville'];
$dep = $_POST['dep'];
$pays = $_POST['pays'];
$tel= $_POST['tel'];
$yes = $_POST['yes'];
$com= $_POST['com'];
$email= $_POST['email'];
$site = $_POST['site'];

$resultat = mysql_query( $requete );

$requete = "insert into formulaire (civilite,
nom,
prenom,
adresse,
codepostal,
ville,
dep,
pays,
tel,
yes,
com,
email,
site)";
$requete .= " values ('$civilite',
'$nom',
'$prenom',
'$adresse',
$codepostal,
'$ville',
'$dep',
'$pays',
'$tel',
$yes ,
'$com',
'$email',
'$site')";



// vérification des champs
if (empty($_POST['nom']))
$message .= "Veuillez indiquer votre nom<br/>";
if (empty($_POST['email']))
$message .= "Veuillez renseigner le champ email<br/>";
if (empty($_POST['tel']))
$message .= "Veuillez renseigner le champ téléphone<br/>";
if (empty($_POST['com']))
$message .= "Veuillez taper votre message<br/>";



if (strlen($message) > strlen($msg_erreur)) {

echo $message;

} else echo "Nous vous répondrons très prochainement, merci de votre visite et à très bientôt.";





?>
nassdak- 26 mars 2007 à 16:42
Là elles sont bien placées. :)
Cependant
$resultat = mysql_query( $requete ); 

doit se trouver après l'écriture de la requête (on ne peut pas executer une requête qui n'existe pas)
Ajouter un commentaire
Réponse
+0
moins plus
Met des retours d'erreur au cas ou tes connexion seraient mauvaises, du style "or die"...
Ajouter un commentaire
Réponse
+0
moins plus
Aucun changement après cette modification.
Puis-je en savoir plus sur les retours d'erreur ?
Vous allez être tranquille je dois m'absenter mais je reviens ce soir et je ne me couche pas tant que le pb n'est pas résolu.
Merci encore
Ajouter un commentaire
Réponse
+0
moins plus
Moi je ne pourrais pas t'aider ce soir...je suis là que dans la journée. Mais bon foobar t'aidera (c'est ça l'esprit du nord ;) )

- Sinon as-tu vérifier que les champs dans ta base de données s'apellent bien comme tu les a écrit?

- Deuxieme chose: lors de tes tests, as-tu remplis des champs avec des apostrophes??? (exemple : adresse=rue de l'eglise)
Ajouter un commentaire
Réponse
+0
moins plus
Heu, pas ce soir, l'esprit du nord va se mettre des pinthes dans... non j'arrête !
Pas ce soir, désolé !
Ca doit être un truc tout con, comme d'habitude en PHP, une quote de trop, une quote mal placée, une virgule oubliée, une connerie quoi !!... :-|

J'essaie de regarder ton code et je te dis quoi...

Au fait, tu utilises quelle version de PHP et de MySQL ?
Sous Linux ? Sous windows ?

A++
Ajouter un commentaire
Réponse
+0
moins plus
Alors y'a du nouveau, je viens de faire une découverte si on rempli tous les champs du formulaire, ça marche nickel, les données sont enregistrées.
Si on remplit que celles censées être obligatoires car vérifiées, ça ne les enregistre pas, peut-être que ça va vous éclairer.
MErci et bonne soirée...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
As tu encore ton problème ou est-ce-que c'est réglé?
foobar47- 27 mars 2007 à 11:38
Il a du s'endormir sur son clavier cette nuit...
nassdak- 27 mars 2007 à 11:41
oué ça doit être ça! Tant pis....
Ajouter un commentaire
Ce document intitulé « Champ obligatoire dans formulaire » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Champ obligatoire dans formulaire - page 2