Rechercher : dans
Par :

Champ obligatoire dans formulaire

Dernière réponse le 29 mar 2007 à 16:13:32 poky, le 26 mar 2007 à 11:09:30 
 Signaler ce message aux modérateurs

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>

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « Champ obligatoire dans formulaire » dans :
Formulaires en ligne - Les champs de saisie VoirQuelles données saisir ? Comment dois-je saisir l'information L'organisation des champs de saisie Séparer les champs de saisie L'organisation des champs et des titres La longueur des champs Quelles données saisir ? Sur la plupart des...
Les formulaires HTML VoirIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains...

1

foobar47, le 26 mar 2007 à 11:24:32
  • +1

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.
la modestie cesse quand on commence à en parler 

Répondre à foobar47

3

nassdak, le 26 mar 2007 à 11:33:58

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 ;)

Répondre à nassdak

4

foobar47, le 26 mar 2007 à 11:43:41

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++

la modestie cesse quand on commence à en parler 

Répondre à foobar47

2

nassdak, le 26 mar 2007 à 11:31:07

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.

Répondre à nassdak

5

poky, le 26 mar 2007 à 11:59:20
  • +1

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

Répondre à poky

6

foobar47, le 26 mar 2007 à 12:15:56

De rien ;-)

N'hésite pas si besoin...

la modestie cesse quand on commence à en parler 

Répondre à foobar47

7

poky, le 26 mar 2007 à 14:03:37

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.";

?>

Répondre à poky

8

foobar47, le 26 mar 2007 à 14:16:36

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++
la modestie cesse quand on commence à en parler 

Répondre à foobar47

9

poky, le 26 mar 2007 à 14:30:46

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.";

?>

Répondre à poky

10

foobar47, le 26 mar 2007 à 14:36:50

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.

la modestie cesse quand on commence à en parler 

Répondre à foobar47

11

poky17, le 26 mar 2007 à 14:50:21

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.";

?>

Répondre à poky17

12

nassdak, le 26 mar 2007 à 15:06:37

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 :)

Répondre à nassdak

13

foobar47, le 26 mar 2007 à 15:08:56

Uniquement si c'est au soleil avec un bon pastis frais au pied d'un arbre... bon, heu je m'égare...

la modestie cesse quand on commence à en parler 

Répondre à foobar47

14

di_tunisian, le 26 mar 2007 à 15:25:08

Slt
svp tu peut m'aidé !!!!

Répondre à di_tunisian

16

foobar47, le 26 mar 2007 à 15:28:22

Ouvre un nouveau message svp ;-)

la modestie cesse quand on commence à en parler 

Répondre à foobar47

18

nassdak, le 26 mar 2007 à 15:32:16
  • +1

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...

Répondre à nassdak

19

foobar47, le 26 mar 2007 à 15:33:38

+1

la modestie cesse quand on commence à en parler 

Répondre à foobar47

15

poky17, le 26 mar 2007 à 15:27:41

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

Répondre à poky17

17

foobar47, le 26 mar 2007 à 15:29:09

Je recommence :

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

As-tu des WARNING ou autres messages ?

la modestie cesse quand on commence à en parler 

Répondre à foobar47

20

poky17, le 26 mar 2007 à 15:37:08

Aucun warning, je viens d'envoyer les fichiers sur ta boite Hotmail.
J'espère avoir bien fait ?
A plus
CN

Répondre à poky17

21

foobar47, le 26 mar 2007 à 16:03:43

Rien reçu pour le moment !!

la modestie cesse quand on commence à en parler 

Répondre à foobar47

22

poky17, le 26 mar 2007 à 16:21:19

Ah pourtant bien envoyé sur bourbon113@hotmail.com.
Tu veux que je les poste sur le forum directement ?

Répondre à poky17

23

foobar47, le 26 mar 2007 à 16:22:49

Les messages doivent être bloqués parcequ'ils contiennent du code PHP...

Poste les ici ;-)

la modestie cesse quand on commence à en parler 

Répondre à foobar47

24

poky17, le 26 mar 2007 à 16:24:14

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>

Répondre à poky17

25

poky17, le 26 mar 2007 à 16:25:40

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 );

?>

Répondre à poky17

26

nassdak, le 26 mar 2007 à 16:30:24

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

Répondre à nassdak

27

poky17, le 26 mar 2007 à 16:40:17

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.";





?>

Répondre à poky17

28

nassdak, le 26 mar 2007 à 16:42:58

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)

Répondre à nassdak

29

foobar47, le 26 mar 2007 à 16:57:59

Met des retours d'erreur au cas ou tes connexion seraient mauvaises, du style "or die"...

la modestie cesse quand on commence à en parler 

Répondre à foobar47

30

poky17, le 26 mar 2007 à 17:11:21

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

Répondre à poky17

31

nassdak, le 26 mar 2007 à 17:26:25

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)

Répondre à nassdak

32

foobar47, le 26 mar 2007 à 17:37:30

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++

la modestie cesse quand on commence à en parler 

Répondre à foobar47

33

poky17, le 26 mar 2007 à 19:28:13

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...

Répondre à poky17