Problème de formulaire php/mysql

Fermé
pinkpooky88 - Modifié par pinkpooky88 le 8/06/2010 à 15:56
 pinkpooky88 - 9 juin 2010 à 17:02
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


A voir également:

5 réponses

justoo76 Messages postés 186 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 23 mars 2016 13
8 juin 2010 à 15:19
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.
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 juin 2010 à 15:27
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
0
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
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 juin 2010 à 15:34
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
0
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.
0
Matio Messages postés 671 Date d'inscription mardi 6 mars 2007 Statut Membre Dernière intervention 25 janvier 2011 299
8 juin 2010 à 15:36
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
--
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
8 juin 2010 à 16:00
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.
0
J'ai essayé tout ce que vous m'aviez dit, mais rien ne change.
0
Personne ne voit où est le problème??
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
9 juin 2010 à 14:01
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
0
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
<?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();
		} ?>
0
J'ai rectifié la ligne
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error());;
J'avais mis deux ;;
mais ce n'est pas ça le problème
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
9 juin 2010 à 15:35
Bonjour,

Pour y voir plus clair, rajoute aussi $sql pour voir la requête sql réellement exécutée :
$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error()."<br /> Requête : $sql");;
0
J'ai ce message d'erreur
Erreur : Query was empty
Requête :
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
9 juin 2010 à 16:29
??
Relance ton script, parce que obtenir ça alors que tu définis $sql juste au dessus, c'est bizarre !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lemgui le preux
9 juin 2010 à 14:08
ton header() doit etre placé avant toute production de code html
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
9 juin 2010 à 14:11
C'est un peu dur à voir à cause de l'indentation défectueuse, mais il me semble que c'est déjà le cas.
0