Posez votre question Signaler

Création d'un espace membre (inscription.php) [Résolu]

Eléa7 - Dernière réponse le 9 juin 2009 à 14:10
Bonjour,
Voila , je suis en train de créer un espace membre en php .
voici le script du formulaire d'inscription d'un utilisateur:
<?php
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
	// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
	if ((isset($_POST['account_name']) && !empty($_POST['account_name'])) && (isset($_POST['account_pwd']) && !empty($_POST['account_pwd'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
		// on teste les deux mots de passe
		if ($_POST['account_pwd'] != $_POST['pass_confirm']) {
			$erreur = 'Les 2 mots de passe sont différents.';
		}
		else {
			$base = mysql_connect ('localhost', 'root', 'password');
			mysql_select_db ('AWare', $base);

			// on recherche si ce login est déjà utilisé par un autre membre
			$sql = 'SELECT count(*) FROM egw_agw_accounts WHERE account_name="'.mysql_escape_string($_POST['account_name']).'"';
			$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
			$data = mysql_fetch_array($req);

			if ($data[0] == 0) {
				$sql = 'INSERT INTO egw_agw_accounts VALUES("","'.mysql_escape_string($_POST['account_name']).'", "'.md5(mysql_escape_string($_POST['account_pwd'])).'")';
				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

				session_start();
				$_SESSION['account_name'] = $_POST['account_name'];
				header('Location: membre.php');
				exit();
			}
			else {
				$erreur = 'Un membre possède déjà ce login.';
			}
		}
	}
	else {
		$erreur = 'Au moins un des champs est vide.';
	}
}
?>
<html>
<head>
<title>Inscription</title>
</head>

<body>
Inscription à l'espace membre :<br />
<form action="inscription.php" method="post">
Votre identifiant : <input type="text" name="account_name" value="<?php if (isset($_POST['account_name'])) echo htmlentities(trim($_POST['account_name'])); ?>"><br />
Votre mot de passe : <input type="password" name="account_pwd" value="<?php if (isset($_POST['account_pwd'])) echo htmlentities(trim($_POST['account_pwd'])); ?>"><br />
Confirmation du mot de passe : <input type="password" name="pass_confirm" value="<?php if (isset($_POST['pass_confirm'])) echo htmlentities(trim($_POST['pass_confirm'])); ?>"><br />
<input type="submit" name="inscription" value="Inscription">
</form>
<?php
if (isset($erreur)) echo '<br />',$erreur;
?>
</body>
</html>

Et voici ce qui s'affiche après un essai d'inscription d'utilisateur:
Column count doesn't match value count at row 1

Que signifie cette erreur?
Merci beaucoup
Lire la suite 

Création d'un espace membre (inscription.php) »

4 réponses
Réponse
+0
moins plus
Salut

Sa signifie qu'au moment de l'insert tu essai d'inserer plus de champs (ou pas assez) que ce qu'il a de colonne dans ta table egw_agw_accounts
Ajouter un commentaire
Réponse
+0
moins plus
Merci,

En effet je pense que tu as raison, j'ai donc corriger .

Dans mon INSERT voici ce que j'ai donc effectué à lma place:

sql = 'INSERT INTO egw_agw_accounts (account_id,account_name,account_pwd) VALUES("","'.mysql_escape_string($_POST['account_name']).'", "'.md5(mysql_escape_string($_POST['account_pwd'])).'")'



cette fois j'ai le message d'érreur suivant:
Parse error: syntax error, unexpected '=' in /var/www/AWare/Espace_membre/inscription.php on line 20


je ne comprends pas ce que le "=" peut bien apporter comme soucis.
Eléa7 - 9 juin 2009 à 14:09
oulala ...


mouep... m'en vais m'acheter des lunettes... "$sql" et non pas "sql" !
Ajouter un commentaire
Réponse
+0
moins plus
Ha oui en effet sa peut poser probleme ^^
Ajouter un commentaire
Ce document intitulé « création d'un espace membre (inscription.php) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?