Problème de formulaire php/mysql
pinkpooky88
-
pinkpooky88 -
pinkpooky88 -
Bonjour,
voila, je dois réaliser un site pour mon stage de fin d'année. Je dois avouer que malgré les cours de base en php et mysql, je reste au niveau de débutante.
J'ai quand même fait le site, qui fonctionne quasiment bien. La pagination fonctionne, l'internaute, voit toutes les pages correctement, il n'y a pas de problème.
Mon souci, c'est que j'ai créé une partie identification/enregistrez-vous.
J'ai testé la partie identification en entrant dans ma Base de données un identifiant et un mot de base. Jusque là ça fonctionne. Mais quand j'essaye de tester la partie enregistrez-vous, je rentre donc tous les champs, je clique sur envoyer, et rien ne se passe, ma base de données ne change pas, et je ne reçois pas d'email me disant que je me suis enregistrer sur le site.
Je vous montre mon code, que j'ai relu plusieurs fois, mais je n'arrive pas à voir ce qui est faux où ce qui me manque.
voici le fichier php.
<code ><?php
session_start();
include("inf.php");//on définit la base de données, identifiant
switch (@$_POST['do'])
{
case "login":
$cxn=mysql_connect(SERVER,LOGIN,MDP) or die ('Erreur : '.mysql_error());
mysql_select_db(BDD,$cxn) or die("Impossible d'ouvrir la base de données ");
$sql="SELECT loginName FROM member WHERE loginName='".mysql_real_escape_string($_POST[fusername])."'
AND password='".mysql_real_escape_string($_POST[fpassword])."'";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
$num=mysql_num_rows($result);
if($num>0) // mot de passe OK
{
$_SESSION['auth']="yes";
$logname=$_POST['fusername'];
$_SESSION['logname']=$logname;
$today=date("y-m-d h:i:s");
$sql="INSERT INTO Login(loginName,loginTime) VALUES ('$logname', '$today')";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
header("Location: Nouveau_membre.php");
}
else // mot de passe incorrect
{
$message="Le nom de Login '$_POST[fusername]' existe, mais le mot de passe ne correspond pas! Réessayez.<br>";
include("login_form.inc");
}
if($num==0)//Nom de longin introuvable
{
$message="Le nom de Login que vous avez saisi n'existe pas. Essayez une nouvelle fois.<br>";
include("login_form.inc");
}
break;
case"news":
/*Recherche de champs vides.*/
foreach ($_POST as $field=>$value)
{
if($field!="fax")
{
if($value=="")
{
$blanks[]=$field;
}
}
}
if(isset($blanks))
{
$message_new="Champs non saisis. Veuillez les renseigner:";
foreach($blanks as $value)
{
$message_new.="$value,";
}
extract($_POST);
include("login_form.inc");
exit();
}
/*Validation des données*/
foreach($_POST as $field=>$value)
{
if(!empty($value))
{
if(ereg("name",$field) and !ereg("login",$field))
{
if(!ereg("^[A-Za-z' -] {1,50} $",$value))
{
$errors[]="$value n'est pas un nom valide.";
}
}
if(ereg("street",$field) or ereg("addr",$field) or ereg("city",$field))
{
if(!ereg("^[A-Za-z0-9., '-]{1,50}$",$value))
{
$errors[]="$value est incorrect.";
}
}
if(ereg("state",$field))
{
if(!ereg("[A-Za-z]{2}",$value))
{
$errors[]="$value est refusée pour state.";
}
}
if(ereg("email",$field))
{
if(!ereg("^.+@.+\\..+$" ,$value))
{
$errors[]="$value est refusé comme email.";
}
}
/* if(ereg("zip",$field))
{
if(!ereg("^[0-9]{5,5}(\-[0-9]{4,4})?$",$value))
{
$errors[]="$value n'est pas un zipcode autorisé.";
}
}
if(ereg("phone",$field) or eregi7("fax",$field))
{
if(!ereg("^[0-9)(xX -]{7,20} $",$value))
{
$errors[]="$value n'est âs un numéro de tél.";
}
}
*/
}//fin de if empty
}//fin de foreach
if(@is_array($errors))
{
$message_new="";
foreach($errors as $value)
{
$message_new.=$value."Réessayez.<br/>";
}
extract($_POST);
include("login_form.inc");
exit();
}
/*Nettoyage des données*/
$cxn=mysql_connect(SERVER,LOGIN,MDP);
mysql_select_db(BDD,$cxn) or die ('Erreur : '.mysql_error());
foreach($_POST as $field =>$value)
{
if($field !="Button" and $field !="do")
{
if($field=="password")
{
$password=strip_tags(trim($value));
}
else
{
$fields[]=$field;
$value=strip_tags(trim($value));
$values[]=mysql_real_escape_string($value,$cxn);
$field=$value;
}
}
}
/*Le nom de login existe-t-il déjà?*/
$sql="SELECT loginName FROM member WHERE loginName='$loginName'";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());;
$num=mysql_num_rows($result);
if($num>0)
{
$message_new="$loginName existe déjà. Choisissez-en un autre.";
include("login_form.inc");
exit();
}
/*Ajout du nouveau membre dans la base.*/
else
{
$today=date("Y-m-d");
$fields_str=implode(",",$fields);
$values_str=implode('","',$values);
$fields_str .=",createDate";
$values_str .='"'.",".'"'.$today;
$fields_str .=",password";
$values_str .='"'.","."md5"."('".$password."')";
$sql="INSERT INTO member";
$sql .="(".$fields_str .")";
$sql .="VALUES";
$sql .="(".'"'.$value_str . ")";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
$_SESSION['auth']="yes";
$_SESSION['logname']=$loginName;
/*Envoyer un emai au nouveau membre*/
$emess="Un nouveau compte de membre vient d'être créé.";
$emess .="Votre identifiant et votre mot de passe sont:";
$emess .="\n\n\t$loginName\n\t$password\n\n";
$emess .="Nous apprécions l'intérêt que vous portez à notre librairie.\n\n";
$emess .="Si vous avez des questions à poser, vous pouvez envoyer,";
$emess .="un e-mail à contact@honyamanga.fr";//adresse a changer ou modifier
$ehead="From: member-desk@honyamanga.fr\r\n";// adresse a changer
$subj="Votre nouveau compte à la librairie.";
$mailsnd=mail("$email","$subj","$emess","$ehead");
header("Location: Nouveau_membre.php");
}
break;
default:
include("login_form.inc");
}
?>
</code>
et voici le code de login_form.inc ( la ou on rentre les données)
J'aurais vraiment besoin d'un coup de main, ou d'un regard d un expert
voila, je dois réaliser un site pour mon stage de fin d'année. Je dois avouer que malgré les cours de base en php et mysql, je reste au niveau de débutante.
J'ai quand même fait le site, qui fonctionne quasiment bien. La pagination fonctionne, l'internaute, voit toutes les pages correctement, il n'y a pas de problème.
Mon souci, c'est que j'ai créé une partie identification/enregistrez-vous.
J'ai testé la partie identification en entrant dans ma Base de données un identifiant et un mot de base. Jusque là ça fonctionne. Mais quand j'essaye de tester la partie enregistrez-vous, je rentre donc tous les champs, je clique sur envoyer, et rien ne se passe, ma base de données ne change pas, et je ne reçois pas d'email me disant que je me suis enregistrer sur le site.
Je vous montre mon code, que j'ai relu plusieurs fois, mais je n'arrive pas à voir ce qui est faux où ce qui me manque.
voici le fichier php.
<code ><?php
session_start();
include("inf.php");//on définit la base de données, identifiant
switch (@$_POST['do'])
{
case "login":
$cxn=mysql_connect(SERVER,LOGIN,MDP) or die ('Erreur : '.mysql_error());
mysql_select_db(BDD,$cxn) or die("Impossible d'ouvrir la base de données ");
$sql="SELECT loginName FROM member WHERE loginName='".mysql_real_escape_string($_POST[fusername])."'
AND password='".mysql_real_escape_string($_POST[fpassword])."'";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
$num=mysql_num_rows($result);
if($num>0) // mot de passe OK
{
$_SESSION['auth']="yes";
$logname=$_POST['fusername'];
$_SESSION['logname']=$logname;
$today=date("y-m-d h:i:s");
$sql="INSERT INTO Login(loginName,loginTime) VALUES ('$logname', '$today')";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
header("Location: Nouveau_membre.php");
}
else // mot de passe incorrect
{
$message="Le nom de Login '$_POST[fusername]' existe, mais le mot de passe ne correspond pas! Réessayez.<br>";
include("login_form.inc");
}
if($num==0)//Nom de longin introuvable
{
$message="Le nom de Login que vous avez saisi n'existe pas. Essayez une nouvelle fois.<br>";
include("login_form.inc");
}
break;
case"news":
/*Recherche de champs vides.*/
foreach ($_POST as $field=>$value)
{
if($field!="fax")
{
if($value=="")
{
$blanks[]=$field;
}
}
}
if(isset($blanks))
{
$message_new="Champs non saisis. Veuillez les renseigner:";
foreach($blanks as $value)
{
$message_new.="$value,";
}
extract($_POST);
include("login_form.inc");
exit();
}
/*Validation des données*/
foreach($_POST as $field=>$value)
{
if(!empty($value))
{
if(ereg("name",$field) and !ereg("login",$field))
{
if(!ereg("^[A-Za-z' -] {1,50} $",$value))
{
$errors[]="$value n'est pas un nom valide.";
}
}
if(ereg("street",$field) or ereg("addr",$field) or ereg("city",$field))
{
if(!ereg("^[A-Za-z0-9., '-]{1,50}$",$value))
{
$errors[]="$value est incorrect.";
}
}
if(ereg("state",$field))
{
if(!ereg("[A-Za-z]{2}",$value))
{
$errors[]="$value est refusée pour state.";
}
}
if(ereg("email",$field))
{
if(!ereg("^.+@.+\\..+$" ,$value))
{
$errors[]="$value est refusé comme email.";
}
}
/* if(ereg("zip",$field))
{
if(!ereg("^[0-9]{5,5}(\-[0-9]{4,4})?$",$value))
{
$errors[]="$value n'est pas un zipcode autorisé.";
}
}
if(ereg("phone",$field) or eregi7("fax",$field))
{
if(!ereg("^[0-9)(xX -]{7,20} $",$value))
{
$errors[]="$value n'est âs un numéro de tél.";
}
}
*/
}//fin de if empty
}//fin de foreach
if(@is_array($errors))
{
$message_new="";
foreach($errors as $value)
{
$message_new.=$value."Réessayez.<br/>";
}
extract($_POST);
include("login_form.inc");
exit();
}
/*Nettoyage des données*/
$cxn=mysql_connect(SERVER,LOGIN,MDP);
mysql_select_db(BDD,$cxn) or die ('Erreur : '.mysql_error());
foreach($_POST as $field =>$value)
{
if($field !="Button" and $field !="do")
{
if($field=="password")
{
$password=strip_tags(trim($value));
}
else
{
$fields[]=$field;
$value=strip_tags(trim($value));
$values[]=mysql_real_escape_string($value,$cxn);
$field=$value;
}
}
}
/*Le nom de login existe-t-il déjà?*/
$sql="SELECT loginName FROM member WHERE loginName='$loginName'";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());;
$num=mysql_num_rows($result);
if($num>0)
{
$message_new="$loginName existe déjà. Choisissez-en un autre.";
include("login_form.inc");
exit();
}
/*Ajout du nouveau membre dans la base.*/
else
{
$today=date("Y-m-d");
$fields_str=implode(",",$fields);
$values_str=implode('","',$values);
$fields_str .=",createDate";
$values_str .='"'.",".'"'.$today;
$fields_str .=",password";
$values_str .='"'.","."md5"."('".$password."')";
$sql="INSERT INTO member";
$sql .="(".$fields_str .")";
$sql .="VALUES";
$sql .="(".'"'.$value_str . ")";
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());
$_SESSION['auth']="yes";
$_SESSION['logname']=$loginName;
/*Envoyer un emai au nouveau membre*/
$emess="Un nouveau compte de membre vient d'être créé.";
$emess .="Votre identifiant et votre mot de passe sont:";
$emess .="\n\n\t$loginName\n\t$password\n\n";
$emess .="Nous apprécions l'intérêt que vous portez à notre librairie.\n\n";
$emess .="Si vous avez des questions à poser, vous pouvez envoyer,";
$emess .="un e-mail à contact@honyamanga.fr";//adresse a changer ou modifier
$ehead="From: member-desk@honyamanga.fr\r\n";// adresse a changer
$subj="Votre nouveau compte à la librairie.";
$mailsnd=mail("$email","$subj","$emess","$ehead");
header("Location: Nouveau_membre.php");
}
break;
default:
include("login_form.inc");
}
?>
</code>
et voici le code de login_form.inc ( la ou on rentre les données)
<html> <head> <title> Page d'accueil des membres et futurs membres</title> <link rel="shortcut icon" type="image/png" href="favicon.png" /> <LINK type="text/css" rel="stylesheet" href="styles.css"> </head> <body bgcolor="#9FB6CD"> <center> <div id="conteneur"> <table border="0" cellpadding="3" cellspacing="0" width="800"> <tr> <td><a href="index.html"onMouseOver="document.img_8.src='indexbis2.png';" onMouseOut="document.img_8.src='indexbis.png';"> <img class="img" name="img_" src="indexbis.png"> </a></td> </tr> <tr align="center"style="background-image: url(fondbannbis.png)" height="256" width="800"> <td colspan="3" valign="bottom"> <img src="Logoidentification.png"> </td> </tr> <tr align="center"style="background-image: url(fondid.png)" height="507"> <td width="35%" valign="top" class="bold-large">Êtes-vous déja membre? <!--pour le login des nouveaux membres--> <form action="login.php" method="POST"> <table border="0"> <?php if(isset($message)) { echo"<tr> <td style='color:red' colspan='2'>$message<br/></td> </tr>"; } ?> <tr> <td class="bold-right">Identifiant</td> <td><input type="text" name="fusername" size="20"></td> </tr> <tr> <td class="bold-right"> Mot de passe</td> <td><input type="password" name="fpassword" size="20"></td> </tr> <input type="hidden" name="do" value="login"> <tr> <td style="text-align:center" colspan="2"><br/> <input type="submit" name="log" value="Identifiez-vous"></td> </tr> </table> </form> </td> <td style="width:1; background-color:gray"></td> <td style="width:65%" valign="top"> <p><span class="bold-large"> Pas encore Membre?</span></p> <p style="text-align:left">Des offres spéciales, une lettre d'informations, des annonces sur les nouveaux mangas et plus encore... Renseignez le formulaire ci-apr ès et devenez membre de notre librairie. C'est facile et c'est gratuit!</p> <!--formulaire à renseigner par les nouveaux membres--> <form action="login.php" method="POST"> <table border="0" width="100%"> <?php if(isset($message_new)) { echo"<tr> <td style='color:red;font-weight:bold'> <p>$message_new</p></td> </tr>"; } ?> <tr> <td class="bold-right">ID Membre</td> <td><input type="text" name="loginName" value="<?php echo @$loginName ?>" size="20" maxlength="20"></td> </tr> <tr> <td class="bold-right"> Mot de passe</td> <td><input type="password" name="password" value="<?php echo @$password ?>" size="10" maxlength="8"></td> </tr> <tr> <td class="bold-right"> Prénom</td> <td><input type="text" name="firstName" value="<?php echo @$firstName ?>" size="40" maxlength="40"></td> </tr> <tr> <td class="bold-right"> Nom</td> <td><input type="text" name="lastName" value="<?php echo @$lastname ?>" size="40" maxlength="40"></td> </tr> <tr> <td class="bold-right">Rue</td> <td><input type="text" name="street" value="<?php echo @$street ?>" size="50" maxlength="50"></td> </tr> <tr> <td class="bold-right"> Ville</td> <td><input type="text" name="city" value="<?php echo @$city ?>" size="40" maxlenth="40"></td> </tr> <tr> <td class="bold-right">Code Postal</td> <td><input type="text" name="zip" value="<?php echo @$zip ?>" size="10" maxsize="10"></td> </tr> <tr> <td class="bold-right"> Téléphone</td> <td><input type="text" name="phone" value="<?php echo @$phone ?>" size="15" maxlength="15"> <b>Fax</b> <input type="text" name="fax" value="<?php echo @$fax ?>" size="15" maxlength="15"> </td> </tr> <tr> <td class="bold-right"> Adresse E-mail </td> <td><input type="text" name="email" value="<?php echo @$email ?>" size="55" maxlength="67"></td> </tr> <input type="hidden" name="do" value="new"> <tr> <td> </td> <td style="text-align:center"> <input type="submit" value="Enregistrez-vous"></td> </tr> </table> </form> </td> </tr> <tr align="center"style="background-image: url(fondrestebis.png)" height="217"> <td colspan="3" class="commentaire"> Nous apprécierions vos commentaires et suggestions. Vous pouvez les adresses à <a href="mailto:honyamanga@orange.fr">honyamanga@orange.fr</a><br></td> </tr> <tr> <td align="center"><A HREF='javascript:popup("mentions legalesconnexion.html")'class="type1">Mentions légales</A>- <A HREF='javascript:popop("credit.html")'class="type1">Crédit</A></td> </tr> </table> </div> </center> </body> </html>
J'aurais vraiment besoin d'un coup de main, ou d'un regard d un expert
A voir également:
- Problème de formulaire php/mysql
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
5 réponses
Bonjour,
Es-tu sûr de ta syntaxe concernant les fonction mysql ?
Par exemple tu met : $result=mysql_query($sql,$cxn) ;
Je pense que tu devrai plutôt mettre $result=mysql_query($sql) ;
Un seul paramètre...
C'est ce que j'ai fait et mon inscription fonctionne très bien.
Es-tu sûr de ta syntaxe concernant les fonction mysql ?
Par exemple tu met : $result=mysql_query($sql,$cxn) ;
Je pense que tu devrai plutôt mettre $result=mysql_query($sql) ;
Un seul paramètre...
C'est ce que j'ai fait et mon inscription fonctionne très bien.
Bonjour,
Après ton INSERT INTO members, il y a cette ligne :
header("Location: Nouveau_membre.php");
Est-elle appelée correctement ? Te retrouves-tu bien sur cette page ?
Par ailleurs, par pitié, quand tu colles un gros bout de code, utilise la balise < code> pour garder l'indentation... Sinon c'est illisible. Si tu pouvais éditer ton message d'origine, je pourrais regarder un peu plus en détail ;)
Xavier
Après ton INSERT INTO members, il y a cette ligne :
header("Location: Nouveau_membre.php");
Est-elle appelée correctement ? Te retrouves-tu bien sur cette page ?
Par ailleurs, par pitié, quand tu colles un gros bout de code, utilise la balise < code> pour garder l'indentation... Sinon c'est illisible. Si tu pouvais éditer ton message d'origine, je pourrais regarder un peu plus en détail ;)
Xavier
Ca fait très longtemps que je n'ai pas tripoté de php mais :
$errors[]="$value n'est pas un nom valide.";
ce serait pas plutôt ça
$errors[]=$value. "n'est pas un nom valide.";
bref une histoire de guillemets enfin c'est juste une idée
--
$errors[]="$value n'est pas un nom valide.";
ce serait pas plutôt ça
$errors[]=$value. "n'est pas un nom valide.";
bref une histoire de guillemets enfin c'est juste une idée
--
Bonjour,
Voilà, je m'en sors mieux avec le code indenté :)
Alors, dans ton formulaire, tu as :
<input type="hidden" name="do" value="new">
Mais dans tonc ode php, tu as :
case"news":
Cela ne correspond pas :)
Voilà voilà !
Xavier
Voilà, je m'en sors mieux avec le code indenté :)
Alors, dans ton formulaire, tu as :
<input type="hidden" name="do" value="new">
Mais dans tonc ode php, tu as :
case"news":
Cela ne correspond pas :)
Voilà voilà !
Xavier
Merci beaucoup.
C'est souvent des petites erreurs, mais un oeil extérieur est toujours plus efficace
Bon maintenant j'ai cette ligne d'erreur
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '")' at line 1
c'est dans login.php,
je présume que c'est vers ces lignes
C'est souvent des petites erreurs, mais un oeil extérieur est toujours plus efficace
Bon maintenant j'ai cette ligne d'erreur
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '")' at line 1
c'est dans login.php,
je présume que c'est vers ces lignes
<?php $cxn=mysql_connect(SERVER,LOGIN,MDP); mysql_select_db(BDD,$cxn) or die ('Erreur : '.mysql_error()); foreach($_POST as $field =>$value) { if($field !="Button" and $field !="do") { if($field=="password") { $password=strip_tags(trim($value)); } else { $fields[]=$field; $value=strip_tags(trim($value)); $values[]=mysql_real_escape_string($value,$cxn); $field=$value; } } } /*Le nom de login existe-t-il déjà?*/ $sql="SELECT loginName FROM member WHERE loginName='$loginName'"; $result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());; $num=mysql_num_rows($result); if($num>0) { $message_new="$loginName existe déjà. Choisissez-en un autre."; include("login_form.inc"); exit(); } ?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il n'y a pas de soucis à indiquer la connexion utilisée pour réaliser une requête. La fonction mysql_query() peut très bien accepter deux paramètres, ça permet de gérer des requêtes sur plusieurs bases de données.
Xavier
J'ai même testé, et ça ne change rien.
Mais merci quand même