Zone Membre PHP/SQL , Problème code

Fermé
slim34120 Messages postés 3 Date d'inscription vendredi 25 mai 2012 Statut Membre Dernière intervention 27 mai 2012 - 25 mai 2012 à 15:12
donniecent Messages postés 19 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 1 juin 2012 - 30 mai 2012 à 23:32
Bonjour, alors voilà je suis en train de créer un site web dynamique , et je suis en train de m'occuper de la zone d'inscription en php et sql . J'ai crée une table MEMBRE(id,login,pass,pass_confirm) . Le problème c'est que mon programme en php ne rentre pas les infos dans ma table lorsque je clique sur valider . Si quelqu'un pourrez me dire quelles sont mes erreurs , ce serait cool . Merci d'avance .

______________________________________________________________________

Voici le code de ma page HTML :

<!DOCTYPE html>
<html lang="fr">
<html>
<head>
<title> HH4U l Inscription </title><!-- Titre qui nous indique que nous sommes sur la page d'inscripiton du site -->
<link rel="formulaire" type="text/css" href="formulaire.css" />
</head>
<body>
<FORM method="post" action="form.php" >
<fieldset>
<legend> Infos Générales </legend>

<p>Pseudo:<input type="text" name="login" placeholder="Choisissez un pseudo"></p>
<fieldset>
Mot de passe:<input type="password" name="pass" >
Confirmez le mot de passe<input type="password" name="pass_confirm" >
</fieldset>
<INPUT TYPE="SUBMIT" NAME="Valider" VALUE="Confirmer">
</FORM>
</body>
</html>

______________________________________________________________________


Voici le code de ma page PHP :

<?

session_start();

$BDD=mysql_connect("localhost","hh4u","");
mysql_select_db("MEMBRE,$BDD");

$login=$_POST['login'];
$pass=$_POST['pass'];
$pass_confirm=$POST['pass_confirm'];

// on teste la déclaration de nos variables
if ($_POST['login']==NULL && $_POST['pass']==NULL && $_POST['pass_confirm']==NULL)
{
echo "Veuillez remplir tous les champs";
}

else
{
//On verifie si le mot de passe et celui de la verification sont identiques
if($_POST['pass'] == $_POST['pass_confirm'])
{
$sql =("INSERT INTO MEMBRE VALUES ('$login','$pass','$pass_confirm')");
$sql = mysql_query($sql,$BDD);
echo"Vous êtes inscrit en tant que $login"; //affiche le résultat
}
else
{
echo "Veuillez taper 2 mots de passes identiques"; //demande de taper des mots de passes identiques
}
}


?>
A voir également:

6 réponses

Skeletyon Messages postés 1552 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 30 décembre 2013 156
25 mai 2012 à 15:22
Bonjour.

Déjà, vous testez si vos trois variables sont nulles. Donc si une seule est mal remplit, vous rentrez dans votre condition. Ce n'est pas bon.

Passez par la fonction isset($variable) et/ou empty au lieu de $variable == NULL, c'est plus propre, plus lisible et plus rapide. isset test l'existence de la variable, empty son contenu. Regardez la documentation :-)

Au lieu de mettre un && pour "et", mettez un OR pour "Ou".
Ainsi votre requête sera "Si variable login ou variable pass ou variable confirm_pass alors". On en revient sinon à mon premier point. Et pour moi vous ne rentrez jamais dans votre else de traitement, car si UNE seule de vos variables n'est pas null, vous n'aurez pas forcément toutes les variables à insérer.

Ensuite il est intéressant voir capital d'échapper vos requêtes dans un try.

Ainsi vous aurez un message clair si votre requête est mal exécutée.

Je vous invite aussi à Passer en "PDO", c'est du "PHP5", plus sécuritaire, plus simple alors que le PHP4 tend à ne plus être utilisé et soutenu. Vos constructions de requêtes en seront facilitées.

0
maka54 Messages postés 699 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
25 mai 2012 à 16:38
$sql =("INSERT INTO MEMBRE VALUES ('$login','$pass','$pass_confirm')");

il manque le champ id dans la requete pour que çà fonctionne (le problème vient du fait qu'il n'y a pas le nom des champs dans la requete, donc si il en manque, çà plante

la correction :

$sql =("INSERT INTO MEMBRE (login,pass,pass_confirm) VALUES ('$login','$pass','$pass_confirm')"); 


encore plus propre :


$sql =("INSERT INTO MEMBRE (login,pass,pass_confirm) VALUES ('".$login."','".$pass."','".$pass_confirm."')"); 


encore ENCORE plus propre :

comme l'a dit Skeletyon juste avant, utiliser PDO et les requête préparées


PS : pass_confirm ne sert à rien en base de données
0
slim34120 Messages postés 3 Date d'inscription vendredi 25 mai 2012 Statut Membre Dernière intervention 27 mai 2012
27 mai 2012 à 16:38
Merci pour vos reponses , je viens de modifier mais ma base de données ne remplit toujours pas lorsque je tape des valeurs dans les champs . Dois-je rajouter le "id" dans la requête ?

Voici le nouveau code .
_________________________________________________________

<?

session_start();

$BDD=mysql_connect("localhost","hh4u","");
mysql_select_db("MEMBRE,$BDD");

$login=$_POST['login'];
$pass=$_POST['pass'];
$pass_confirm=$POST['pass_confirm'];

// on teste la déclaration de nos variables
if ($_POST['login']==NULL OR $_POST['pass']==NULL OR $_POST['pass_confirm']==NULL)
{
echo "Veuillez remplir tous les champs";
}

else
{
//On verifie si le mot de passe et celui de la verification sont identiques
if($_POST['pass'] == $_POST['pass_confirm'])
{
$sql =("INSERT INTO MEMBRE (login,pass,pass_confirm) VALUES ('".$login."','".$pass."','".$pass_confirm."')");
$sql = mysql_query($sql,$BDD);
echo"Vous êtes inscrit en tant que $login"; //affiche le résultat
}
else
{
echo "Veuillez taper 2 mots de passes identiques"; //demande de taper des mots de passes identiques
}
}


?>
0
slim34120 Messages postés 3 Date d'inscription vendredi 25 mai 2012 Statut Membre Dernière intervention 27 mai 2012
27 mai 2012 à 16:50
Voici mon code avec le id , mais ça ne fonctionne toujours pas :/

<?

session_start();

$BDD=mysql_connect("localhost","hh4u","");
mysql_select_db("MEMBRE,$BDD");

$login=$_POST['login'];
$pass=$_POST['pass'];
$pass_confirm=$POST['pass_confirm'];

// on teste la déclaration de nos variables
if ($_POST['login']==NULL OR $_POST['pass']==NULL OR $_POST['pass_confirm']==NULL)
{
echo "Veuillez remplir tous les champs";
}

else
{
//On verifie si le mot de passe et celui de la verification sont identiques
if($_POST['pass'] == $_POST['pass_confirm'])
{
$sql =("INSERT INTO MEMBRE (id,login,pass,pass_confirm) VALUES ('".rand(100,999)."','".$login."','".$pass."','".$pass_confirm."')");
$sql = mysql_query($sql,$BDD);
echo"Vous êtes inscrit en tant que $login"; //affiche le résultat
}
else
{
echo "Veuillez taper 2 mots de passes identiques"; //demande de taper des mots de passes identiques
}
}


?>
0

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

Posez votre question
Skeletyon Messages postés 1552 Date d'inscription jeudi 20 novembre 2008 Statut Membre Dernière intervention 30 décembre 2013 156
28 mai 2012 à 11:02
Bonjour.

Pour moi l'id n'est pas obligatoire dans la requête Si et seulement si (oh ça me rappelle mes cours de maths grr), le champ est en auto_increment.

Si rien n'est inséré c'est que soit:
- votre requête est male construite,
- soit une de vos variables n'est pas présente,
- soit elle n'est pas dans le bon format.

Vérifiez que vous avez bien TOUTES vos variables.
Vérifiez que vous rentrez bien dans votre requête, échappez la avec un try catch.

Après, vérifiez aussi que vous ne voulez pas insérer du int dans un char ou inversement.

Essayer d'insérer une valeur à la fois, ça permet souvent de voir ou cela bloque.
0
donniecent Messages postés 19 Date d'inscription lundi 1 mars 2010 Statut Membre Dernière intervention 1 juin 2012 27
Modifié par donniecent le 30/05/2012 à 23:41
Bonsoir, je crois savoir d'où vient le problème, j'ai vu que vous aviez marqué :

1 - Pour votre connexion à la base de donnée, ceci :

mysql_select_db("MEMBRE,$BDD");

2 - Mais vous avez également écris cela pour insérer vos membres :

$sql =("INSERT INTO MEMBRE VALUES ('$login','$pass','$pass_confirm')");
$sql = mysql_query($sql,$BDD);

Cela signifie que votre basse de donnée s'appelle MEMBRE et que votre table (où vous stockez les membres s'appelle également MEMBRE

Généralement les gens appellent leur base de donnée (site, système, bdd mais pas MEMBRE). Donc vérifiez bien que vous n'avez pas fait une confusion entre base de données et table.

Admin de http://b2geek.com | A votre service.
b2geek . com | Site communautaire d'entraide domaine informatique, jeux vidéos, et bien plus
0