Zone Membre PHP/SQL , Problème code
slim34120
Messages postés
3
Statut
Membre
-
donniecent Messages postés 22 Statut Membre -
donniecent Messages postés 22 Statut Membre -
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
}
}
?>
______________________________________________________________________
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:
- Zone Membre PHP/SQL , Problème code
- Code ascii - Guide
- Alternative zone telechargement - Accueil - Outils
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
6 réponses
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.
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.
$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 :
encore plus propre :
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
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
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
}
}
?>
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
}
}
?>
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
}
}
?>
<?
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
}
}
?>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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
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