JeuWeb - Crée ton jeu par navigateur
[Résolu] Encore moi ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Encore moi ? (/showthread.php?tid=5350)



[Résolu] Encore moi ? - guortates - 02-04-2011

Je sais que je demande beaucoup d'aide mais bon je débute.
Alors voilà mon 2ème problème :
Voici le code (inscription.php)


<?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['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
// on teste les deux mots de passe
if ($_POST['pass'] != $_POST['pass_confirm']) {
$erreur = 'Les 2 mots de passe sont différents.';
}
else {
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('neocrea', $base);

// on recherche si ce login est déjà utilisé par un autre membre
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'"';
$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 membre VALUES("", "'.mysql_escape_string($_POST['login']).'", "'.mysql_escape_string(md5($_POST['pass'])).'")';
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

session_start();
$_SESSION['login'] = $_POST['login'];
header('Location: index.php');
exit();
}
else {
$erreur = 'Ce login est déjà utilisé.';
}
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Inscription à Neocrea</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<html>
<head>
<title>Inscription</title>
</head>

<body>
Inscription à l'espace membre :<br />
<form action="inscription.php" method="post">
Login : <input type="text" name="login" value="<?php if (isset($_POST['login'])) echo htmlentities(trim($_POST['login'])); ?>"><br />
Mot de passe : <input type="password" name="pass" value="<?php if (isset($_POST['pass'])) echo htmlentities(trim($_POST['pass'])); ?>"><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 l'erreur SQL :

Erreur SQL !INSERT INTO membre VALUES("", "srfd", "0cc175b9c0f1b6a831c399e269772661")
Column count doesn't match value count at row 1


J'avais mis à l'inscription les données suivante : Pseudo : srfd
Mdp : a

Merci d'avance pour votre aide.


RE: Encore moi ? - niahoo - 02-04-2011

quel beau code illisible !

Tu peux utiliser la balise
Code :
[code]mettre ton code ici[/code]
pour nous montrer du code

sinon l'erreur "Column count doesn't match value count at row 1" signifie que le nombre de valeurs dans ta requête ne correspond pas au nombre de colones dans ta table.

Mais je suppose que ça tu le sais et que tu n'es pas venu ici sans avoir fait l'effort de rechercher ce message d'erreur sur google et dans la documentation de mysql.


RE: Encore moi ? - guortates - 02-04-2011

euhhConfusediffle:Confusediffle:Confusediffle:Confusediffle:


RE: Encore moi ? - Asphodèles - 03-04-2011

Revois la syntaxe d'une commande INSERT. L'erreur doit sérieusement te mettre sur la piste : tu n'as pas donné autant d'infos que ta requête en demande. Tu lui as donné "" (c'est sensé être quoi, ça ? tu devrais plutôt mettre un champ par défaut), le pseudo et le mdp. Est-ce que ce sont toutes les infos qui sont enregistrées dans ta table ?

Si tu ne veux renseigner que certains champs de ta table il y a une syntaxe pour ça (je devrais te laisser chercher par toi même, mais je suis trop bon) :
INSERT INTO 'database'.'table' ('login','mdp') VALUES ('sdgf','azrrydfrfhn,dl054sdgh');

Comme ça tu laisses ton sgbdr remplir les champs que tu ne renseigne pas. Comme par exemple le champ id qui sera un auto-increment, j'imagine, ou bien les champs qui ont une valeur par défaut.



RE: Encore moi ? - guortates - 05-04-2011

Merci, je me suis en fait rendu compte qu'il y avait le champs "monde" dans la table membre que je n'ai pas renseigné. Merci beaucoup !