rss
Champ obligatoire dans formulaire
par poky
 Fil de Discussions
Statut : Résolu
lundi 26 mars 2007 à 11:09:30
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
Répondre à poky  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 11:24:32 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par nassdak, le lundi 26 mars 2007 à 11:33:58 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 11:43:41 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par nassdak, le lundi 26 mars 2007 à 11:31:07 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par poky, le lundi 26 mars 2007 à 11:59:20 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 12:15:56 Fil de Discussions
De rien ;-)

N'hésite pas si besoin...
la modestie cesse quand on commence à en parler 
Répondre à foobar47

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par poky, le lundi 26 mars 2007 à 14:03:37 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 14:16:36 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par poky, le lundi 26 mars 2007 à 14:30:46 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 14:36:50 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par poky17, le lundi 26 mars 2007 à 14:50:21 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par nassdak, le lundi 26 mars 2007 à 15:06:37 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 15:08:56 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par di_tunisian, le lundi 26 mars 2007 à 15:25:08 Fil de Discussions
slt
svp tu peut m'aidé !!!!
Répondre à di_tunisian

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 15:28:22 Fil de Discussions
Ouvre un nouveau message svp ;-)
la modestie cesse quand on commence à en parler 
Répondre à foobar47

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par nassdak, le lundi 26 mars 2007 à 15:32:16 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 15:33:38 Fil de Discussions
+1
la modestie cesse quand on commence à en parler 
Répondre à foobar47

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par poky17, le lundi 26 mars 2007 à 15:27:41 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 15:29:09 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par poky17, le lundi 26 mars 2007 à 15:37:08 Fil de Discussions
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par foobar47, le lundi 26 mars 2007 à 16:03:43 Fil de Discussions
Rien reçu pour le moment !!
la modestie cesse quand on commence à en parler 
Répondre à foobar47

22