Formulaire inscription php mysql

Fermé
pinkpooky88 - 11 juin 2010 à 15:15
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 11 juin 2010 à 17:28
Bonjour,
j'ai vraiment besoin de votre aide.
j'ai un souci avec mon code pour s'inscrire

<?php
	/*Programme: Login.php
		Description: Programme de login pour la section à accès réservé de la boutique.
			Il propose 2 options: s'identifier
								  créer un nouveau compte.*/
	
	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 ('Erreur : '.mysql_error());
		$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");
			}
		mysql_close();
		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é.";
						}
					}
				
	
			}//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";
	$result=mysql_query($sql,$cxn) or die ('Erreur : '.mysql_error()."<br /> Requête : $sql");
	$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");
	}
?>


aucun problème pour s'identifier, mais quand je veux tester la partie s'enregistrer, j'ai cette ligne de code:
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

j'ai vraiment besoin d'aide, car la je craque, je vois vraiment pas ou est la faute


A voir également:

1 réponse

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
Modifié par avion-f16 le 11/06/2010 à 15:26
$sql="SELECT loginName FROM member WHERE loginName";
Ta requête n'est pas complète.

$sql .="(".'"'.$value_str . ")";
Tu oublies de fermer le guillemet double qui contient $value_str.
$sql .='("'.$value_str.'")';

Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
0
pinkpooky88
11 juin 2010 à 15:45
Merci beaucoup pour ton aide.

Pour le
$sql="SELECT loginName FROM member WHERE loginName";
j'avais effectivement oublié le ='$loginName'

Je n'ai plus l'erreur de synthax maintenant
mais celle ci
Erreur : Column count doesn't match value count at row 1
c'est une erreur de de nombre de variable, non?
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
11 juin 2010 à 15:55
Tu indiques un champ qui n'existe pas.
0
pinkpooky88
11 juin 2010 à 16:02
J'ai remodifié le code.
En effet, j'avais oublié un s à $values_str.

revoici le code

<?php
$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 .='("'.$values_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");  ?>


et cette fois, j'ai cette 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 '"loginName,firstName,lastName,street,city,zip,phone,fax,email,createDate,passwor' at line 1
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
11 juin 2010 à 17:28
Utilise la variable spéciale __LINE__ dans tes "or die" pour afficher le numéro de ligne réel dans le script.
0