problèmes de formulaires

Eléphanteau du PHP | 19 Messages

14 juin 2005, 17:17

bonjour tout le monde.
j 'ai 2 formulaires "connexion.html" et"formulaire.html".
sur le premier, j'ai deux champs "login" et "mot de passe".je fait un lien vers le page "formulaire.html" lorsque l'on click sur le lien mot de passe oublié?.
sur le formulaire "formulaire.html", j'ai un champ "indiquer votre adresse mail".
ce que je veux c'est que lorsque je saisie une adresse ne correspondant pas au login du formulaire "connexion.html", un message d'erreur soit envoyé disant "l'adresse ne correspond pas au login saisi".
dans le cas contraire ça marchera.
j'espere que j étais assez clair.
merci d'avance. :wink:

voici mon code du mail.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$id=$_POST['id'];
$mail=$_POST['mail'];

// connexion à la base de donnée
$connexion = mysql_connect("localhost","root") or die("erreur");
mysql_select_db("Client",$connexion);

$valid = "^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\.[a-z]{2,4}$";
if (empty($_POST['mail'])==true)
{
   echo "<i><b>vous devez indiquer l'adresse mail correspondant à votre compte</i></b>";
}
else
{
    if (($mail) && !(eregi($valid, $mail)))
	{
	print "<i><b>L'adresse électronique saisie est invalide.</i></b>\n"; 
	}
	else
	   { 
         // on crée la requête SQL, pour ensuite l'envoyer   
         $requete = "SELECT numclient FROM client WHERE mail ='".$mail."' AND id = '".$id."' ";   
         $result = mysql_query($requete,$connexion) or die('Erreur SQL !'.$requete.''.mysql_error());
		 
         if (mysql_fetch_row($result))
	      { 
		  //envoi du mail;
          } 
		else 
	         {   
             echo "<i><b>Erreur!: cette adresse ne correspond pas à votre Login ou n'existe pas dans la base</i></b>"; 
             }  
	  }
}
?> 
</body>
</html>


Mammouth du PHP | 19672 Messages

14 juin 2005, 17:20

Jusque là, ça va, j'ai bien compris ce que tu veux faire: en revanche, tu ne dis pas ce qui ne fonctionne pas ou si tu as une erreur ou quelque chose de ce genre .... :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 juin 2005, 17:22

il faut que tu teste si ta requete à retourné un resultat ou non.

si elle a retourné un résultat, c'ets ok, sinon c'ets faux :
if (mysql_result($result,0 ,0) >= 1)
{
  //envoi du mail;
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 19 Messages

14 juin 2005, 17:25

merci
en fait le problème c'est que même quand l'adresse saisie correspond bien au champ "login" du formulaire "connexion.html" j'ai ce message
Notice: Undefined index: id in c:\program files\easyphp1-8\www\php\mail.php on line 10
vous devez indiquer l'adresse mail correspondant à votre compte

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 juin 2005, 17:27

C'est que tu n'as pas de <input name='id'> dans ton 1er formulaire

Le message d'erreur signifie qu'il ne trouve pas la variable "id" dans les POST
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

14 juin 2005, 17:29

Il semble que tu as un champ id qui n'est pas transmis dans $_POST['id'] : est-ce que ce champ existe bien dans ton formulaire ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

14 juin 2005, 17:31

C'est que tu n'as pas de <input name='id'> dans ton 1er formulaire

Le message d'erreur signifie qu'il ne trouve pas la variable "id" dans les POST
oui exactement.j ai pas de <input"....>. sinon j aurai un autre champ dans "formulaire.html".en fait je veux avoir seulement un seul champ "indiquer votre mail".

Mammouth du PHP | 19672 Messages

14 juin 2005, 17:33

Pas très logique: tu veux faire une requête avec une clause sur deux champs en envoyant de valeur que pour un seul champ: ce ne sera jamais bon... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 juin 2005, 17:39

Si tu veux passer l'identifiant sans voir un champ, tu peux faire

Code : Tout sélectionner

<input type="hidden" nameu="id" value="<?= $id ?>">
Mais il faut que tu connaisses la valeur de id dans le 1er formulaire

Et comme le dit Cyrano, si tu ne fait pas ça, tu ne pourras pas utiliser $_POST["id"]
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 19 Messages

15 juin 2005, 16:17

merci pour vos reponses.
mais le probleme si que je n'arrive pas a connaitre la valeur de l id du 1er formulaire. en fait meme si l'adresse saisie dans le 2e formulaire correspond au login saisi dans le 1er formulaire j'ai ce message
Erreur!: cette adresse ne correspond pas à votre Login ou n'existe pas dans la base