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
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
A voir également:
- Zone Membre PHP/SQL , Problème code
- Zone telechargement - Accueil - Outils
- Le code ascii - Guide
- Code puk bloqué - Guide
- Membre indisponible vinted - Guide
- Code telephone oublié - Guide
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
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.
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.
maka54
Messages postés
698
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
80
25 mai 2012 à 16:38
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 :
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
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
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
}
}
?>
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
}
}
?>
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
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
}
}
?>
<?
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
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
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.
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.
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
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
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