Problème de formulaire php/mysql [Fermé]

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

 
<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


5 réponses

Messages postés
186
Date d'inscription
mardi 13 avril 2010
Statut
Membre
Dernière intervention
23 mars 2016
13
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.
Messages postés
3647
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2020
971
Bonjour

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
C'est gentil d'avoir regardé, mais je ne pense pas que ce soit cela.
J'ai même testé, et ça ne change rien.
Mais merci quand même
Messages postés
3647
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2020
971
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
La page est bien appelé, elle existe. Quand je me connecte ( j'ai testé l'identification avec un membre que j'ai rentré dans ma BDD), je tombe bien sur cette page.
Messages postés
671
Date d'inscription
mardi 6 mars 2007
Statut
Membre
Dernière intervention
25 janvier 2011
283
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
--
Messages postés
3647
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2020
971
Non non, quand on utilise des double-quote ", le contenu est parsé pour en extraire les variables par le moteur php. Donc cette écriture est valide.
J'ai essayé tout ce que vous m'aviez dit, mais rien ne change.
Personne ne voit où est le problème??
Messages postés
3647
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2020
971
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
J'ai ce message d'erreur
Erreur : Query was empty
Requête :
Messages postés
3647
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2020
971
??
Relance ton script, parce que obtenir ça alors que tu définis $sql juste au dessus, c'est bizarre !
J'ai rajouté une chose dans mon code pour voir ce qui n'allait pas
<?php

	$sql="SELECT loginName FROM member WHERE loginName='$loginName'";
	$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error()."<br /> Requête : $sql");
	echo "$sql";
	$num=mysql_num_rows($result);
	if($num>0)
		{
		$message_new="$loginName existe déjà. Choisissez-en un autre.";
		include("login_form.inc");
		exit();
		}
?>

ce qui me donne:
SELECT loginName FROM member WHERE loginName=''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

aussi non, si je supprime echo"$sql";
j'ai:
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

Déjà, je n'ai plus query was empty
Messages postés
3647
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2020
971
Je suis désolé, mais là, je ne vois pas...
Enfin, il y a une chose qui est sûre, c'est que ton $loginName est vide, ce qui ne devrait pas être le cas.
Mais je ne vois pas pourquoi cela donnerait une telle erreur.

Et cette parenthèse, d'où sort-elle ? Je ne vois pas...
merci d'avoir passé du temps dessus.
Je vois que je ne suis pas la seule a chercher frénétiquement cette parenthèse.
Dès que j'ai du nouveau, je poste la solution.

ton header() doit etre placé avant toute production de code html
Messages postés
3647
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
23 octobre 2020
971
C'est un peu dur à voir à cause de l'indentation défectueuse, mais il me semble que c'est déjà le cas.