Problème requête SQL et formulaire
Résolu/Fermé
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
-
3 juin 2009 à 00:30
cayoul Messages postés 17 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 8 mars 2011 - 4 juin 2009 à 12:08
cayoul Messages postés 17 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 8 mars 2011 - 4 juin 2009 à 12:08
A voir également:
- Problème requête SQL et formulaire
- Requête sql pix - Forum Python
- Blob sql ✓ - Forum Webmastering
- Récupération serveur sql - Télécharger - Gestion de données
- Formulaire de réclamation facebook - Guide
- Récupérer compte hotmail sans formulaire ✓ - Forum Hotmail / Outlook.com
23 réponses
Salut,
qu'est-ce que ça fait exactement lorsque tu valides ?
comment sais-tu que ca ne se connecte pas à ta base de données ?
qu'est-ce que ça fait exactement lorsque tu valides ?
comment sais-tu que ca ne se connecte pas à ta base de données ?
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
3 juin 2009 à 12:49
3 juin 2009 à 12:49
Merci de vos aides. J'ai essayé d'enlever les id mais ça marche toujours pas. en gros quand je clique sur s'inscrire, ça m'ouvre une nouvelle page toute blanche et ça me passe toutes mes variables dans l'URL. En revanche ça n'écris pas dans ma base de données parce que je vérifie grâce à phpmyadmin. Par contre, quand je tappe ma requête sql directement dans phpmyadmin, là ça marche.
Alors je sais pas si c'est un problème de connexion à la base de donnée vu que j'ia mis un or die (mysql_error()), ça devrait pas me dire qu'il y a un eu problème lors de la connexion ?
Merci de continuer à m'aider svp
Alors je sais pas si c'est un problème de connexion à la base de donnée vu que j'ia mis un or die (mysql_error()), ça devrait pas me dire qu'il y a un eu problème lors de la connexion ?
Merci de continuer à m'aider svp
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 juin 2009 à 13:17
3 juin 2009 à 13:17
Salut,
rajoutes ça pour voir ce que tu reçoit:
ensuite dans ta table user as tu bien mis ton champ ID en INT, autoincrement, et sans valeur par defaut ?
rajoutes ça pour voir ce que tu reçoit:
if(isset($_POST['submit'])) { //TEST valeurs postées: echo '<pre>'; print_r($_POST); echo '</pre>'; ......
ensuite dans ta table user as tu bien mis ton champ ID en INT, autoincrement, et sans valeur par defaut ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
3 juin 2009 à 13:22
3 juin 2009 à 13:22
oui j'ai bien mis ID en bigint autoincrémenté. J'ai essayé de mettre ce que tu m'as dis juste en dessous de mon isset mais ça ne change rien. j'ai toujours une page blanche qui s'ouvre avec les informations en URL.
NitroGen®
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
18 juin 2009
1
3 juin 2009 à 13:30
3 juin 2009 à 13:30
essaie de mettre à la place de ceci dans ta condition if
if(isset($_POST['submit']))
{
}
Remplace ceci par :
if(isset($_POST['nom']) AND isset($_POST['prenom']) AND ...isset(tous les attributs name tu fais comme ceci))
{
//Ton script
}
Par contre dans ton formulaire change tous les name="Prenom" par name="prenom" car les variable n'accepte pas les majuscule pour les noms de variable enfin la première lettre je crois...
@++
if(isset($_POST['submit']))
{
}
Remplace ceci par :
if(isset($_POST['nom']) AND isset($_POST['prenom']) AND ...isset(tous les attributs name tu fais comme ceci))
{
//Ton script
}
Par contre dans ton formulaire change tous les name="Prenom" par name="prenom" car les variable n'accepte pas les majuscule pour les noms de variable enfin la première lettre je crois...
@++
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 juin 2009 à 13:34
3 juin 2009 à 13:34
change tous les name="Prenom" par name="prenom" car les variable n'accepte pas les majuscule pour les noms de variable enfin la première lettre je crois...
NON
on peut mettre une majuscule au début d'un nom de variable mais le fait de mettre en minuscule a l'avantage d'éviter de faire des erreurs
NON
on peut mettre une majuscule au début d'un nom de variable mais le fait de mettre en minuscule a l'avantage d'éviter de faire des erreurs
NitroGen®
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
18 juin 2009
1
3 juin 2009 à 13:42
3 juin 2009 à 13:42
Je ne savais plus pour ma part je l'ai écrit toutes les variables en minuscule...
Je confond avec un autre language ...
Je confond avec un autre language ...
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
3 juin 2009 à 14:11
3 juin 2009 à 14:11
voici mon nouveau fichier inscription.php:
<?php
//Si l'utilisateur a cliqué sur s'inscrire
if(isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['mot_de_passe']) AND isset($_POST['mot_de_passe']) AND isset($_POST['email']))
{
//TEST valeurs postées:
echo '<pre>';
print_r($_POST);
echo '</pre>';
//Se connecter à la base
mysql_connect("localhost","root","") or die (mysql_error());
mysql_select_db("abc");
//je déclare mes variables qui viennent du formulaire
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];
$mdp5=md5($_POST['mot_de_passe']);
$requete = mysql_query("INSERT INTO user(ID
, Nom
, Prenom
, Mot_de_passe
, Email )
VALUES(''
, '$nom'
, '$prenom'
, '$mot_de_passe'
, '$email'
)
");
$req = mysql_query($requete) or die (mysql_error());
//se déconnecter de MySQL
mysql_close();
}
?>
J'ai également fais les modifications dans le formulaire en mettant tout en minuscule.
Mais ça ne marche toujours pas. J'ai toujours une plage blanche qui s'ouvre avec en URL variable=valeur&....
<?php
//Si l'utilisateur a cliqué sur s'inscrire
if(isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['mot_de_passe']) AND isset($_POST['mot_de_passe']) AND isset($_POST['email']))
{
//TEST valeurs postées:
echo '<pre>';
print_r($_POST);
echo '</pre>';
//Se connecter à la base
mysql_connect("localhost","root","") or die (mysql_error());
mysql_select_db("abc");
//je déclare mes variables qui viennent du formulaire
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];
$mdp5=md5($_POST['mot_de_passe']);
$requete = mysql_query("INSERT INTO user(ID
, Nom
, Prenom
, Mot_de_passe
, Email )
VALUES(''
, '$nom'
, '$prenom'
, '$mot_de_passe'
, '$email'
)
");
$req = mysql_query($requete) or die (mysql_error());
//se déconnecter de MySQL
mysql_close();
}
?>
J'ai également fais les modifications dans le formulaire en mettant tout en minuscule.
Mais ça ne marche toujours pas. J'ai toujours une plage blanche qui s'ouvre avec en URL variable=valeur&....
NitroGen®
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
18 juin 2009
1
3 juin 2009 à 14:27
3 juin 2009 à 14:27
par contre oui il y a sa mais aussi tu as ce problème: Je te conseille vivement lorsque tu déclare tes variable venant du formulaire de rajouter des paramètres pour sécuriser ta base de donnée. $prenom=mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
Tu fais sa pour toutes les variables.
Tu fais sa pour toutes les variables.
NitroGen®
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
18 juin 2009
1
3 juin 2009 à 14:28
3 juin 2009 à 14:28
Je vais faire ton petit code lol
attend quelques minutes.
attend quelques minutes.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 juin 2009 à 14:33
3 juin 2009 à 14:33
tu as une erreur au niveau mot de passe:
//je déclare mes variables qui viennent du formulaire
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];
$mdp5=md5($_POST['mot_de_passe']);
$requete = mysql_query("INSERT INTO user(ID
, Nom
, Prenom
, Mot_de_passe
, Email )
VALUES(''
, '$nom'
, '$prenom'
, '$mot_de_passe'
, '$email'
)
tu n'utilises pas la même variable pour ta requette que celle reupérant la valeur postée par le formulaire
//je déclare mes variables qui viennent du formulaire
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];
$mdp5=md5($_POST['mot_de_passe']);
$requete = mysql_query("INSERT INTO user(ID
, Nom
, Prenom
, Mot_de_passe
, Email )
VALUES(''
, '$nom'
, '$prenom'
, '$mot_de_passe'
, '$email'
)
tu n'utilises pas la même variable pour ta requette que celle reupérant la valeur postée par le formulaire
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
3 juin 2009 à 14:40
3 juin 2009 à 14:40
Merci pour vos remarques. Effectivement c'était à cause de ma variable mot de passe. je vais également profiter de NitroGen pour sécuriser ma base de données. Donc maintenant ça écris enfin dans ma base de donnée. Par contre sur la nouvelle page qui s'affiche il est écrit:
Array
(
[nom] => momo
[prenom] => momo
[email] => momo
[mot_de_passe] => momo
[submit] => S'inscrire
)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
Qu'est ce que ça signifie svp ?
Array
(
[nom] => momo
[prenom] => momo
[email] => momo
[mot_de_passe] => momo
[submit] => S'inscrire
)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
Qu'est ce que ça signifie svp ?
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
3 juin 2009 à 14:43
3 juin 2009 à 14:43
En revanche en essayant de sécuriser ma base de données, ça marche plus. Voici ce que j'ai changé dans mon inscription.php:
//je déclare mes variables qui viennent du formulaire
$nom=mysql_real_escape_string(htmlspecialchars($_POST['nom']);
$prenom=mysql_real_escape_string(htmlspecialchars($_POST['prenom']);
$email=mysql_real_escape_string(htmlspecialchars($_POST['email']);
$mdp5==mysql_real_escape_string(htmlspecialchars(md5($_POST['mot_de_passe']));
Il me dit qu'il y a une erreur dès la première ligne. J'ai repris lettre par lettre la proposition de NitroGen
//je déclare mes variables qui viennent du formulaire
$nom=mysql_real_escape_string(htmlspecialchars($_POST['nom']);
$prenom=mysql_real_escape_string(htmlspecialchars($_POST['prenom']);
$email=mysql_real_escape_string(htmlspecialchars($_POST['email']);
$mdp5==mysql_real_escape_string(htmlspecialchars(md5($_POST['mot_de_passe']));
Il me dit qu'il y a une erreur dès la première ligne. J'ai repris lettre par lettre la proposition de NitroGen
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
3 juin 2009 à 14:43
3 juin 2009 à 14:43
Array
(
[nom] => A
[prenom] => A
[email] => A
[mot_de_passe] => A
[submit] => S'inscrire
)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
A chaque fois il me sort mes valeurs;
Je vous remets ma requête sql.
$requete = mysql_query("INSERT INTO user(ID
, Nom
, Prenom
, Mot_de_passe
, Email )
VALUES(''
, '$nom
, '$prenom'
, '$mdp5'
, '$email'
)
");
$req = mysql_query($requete) or die (mysql_error());
(
[nom] => A
[prenom] => A
[email] => A
[mot_de_passe] => A
[submit] => S'inscrire
)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1
A chaque fois il me sort mes valeurs;
Je vous remets ma requête sql.
$requete = mysql_query("INSERT INTO user(ID
, Nom
, Prenom
, Mot_de_passe
, Email )
VALUES(''
, '$nom
, '$prenom'
, '$mdp5'
, '$email'
)
");
$req = mysql_query($requete) or die (mysql_error());
NitroGen®
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
18 juin 2009
1
3 juin 2009 à 14:53
3 juin 2009 à 14:53
Voila le travail par contre je ne peu pas faire le test je n'ai pas la BDD à toi de tester:
Formulaire:
page "inscription.php"
Espérant que ce code marche car je viens de l'écrire sur le vif donc à toi de faire le test !.
@++
Formulaire:
<!-- Début formulaire --> <form enctype="multipart/form-data" method="post" action="inscription.php"> <tr> <td>Nom</td> <td><input type="text" name="nom"></td> </tr> <tr> <td>Prénom</td> <td><input type="text" name="prenom"></td> </tr> <tr> <td>Email</td> <td><input type="text" name="email"></td> </tr> <tr> <td>Mot de passe</td> <td><input type="password" name="mot_de_passe"></td> </tr> <tr> <td id="bouton" height="50" colspan="2"> <input type="submit" value="S'inscrire"> </td> </tr> </form> <!-- Fin Formulaire -->
page "inscription.php"
<?php //On vérifie que les variables existent if (isset($_POST['nom']) AND isset($_POST['prenom']) AND isset($_POST['email']) AND isset($_POST['mot_de_passe']) ) { //On vérifie que les variables contiennent quelques choses ... if($_POST['nom'] != NULL AND $_POST['prenom']!= NULL AND $_POST['email'] != NULL AND $_POST['mot_de_passe'] != NULL) { //Connexion à la BDD MySQL //Se connecter à la base mysql_connect("localhost","root",""); mysql_select_db("abc"); //je déclare mes variables qui viennent du formulaire $nom=mysql_real_escape_string(htmlspecialchars($_POST['nom'])); $prenom=mysql_real_escape_string(htmlspecialchars($_POST['prenom'])); $email=mysql_real_escape_string(htmlspecialchars($_POST['email'])); $mdp5=mysql_real_escape_string(htmlspecialchars($_POST['mot_de_passe'])); mysql_query("INSERT INTO user (ID, Nom, Prenom, Mot_de_passe, Email ) VALUES('', '$nom', '$prenom', '$mdp5', '$email') ") or die (mysql_error()); //se déconnecter de MySQL mysql_close(); echo "Inscription prise en compte, merci à vous."; } } else { echo "Désolée, Vous n'avez pas rempli tous les champs"; } ?>
Espérant que ce code marche car je viens de l'écrire sur le vif donc à toi de faire le test !.
@++
NitroGen®
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
18 juin 2009
1
3 juin 2009 à 14:59
3 juin 2009 à 14:59
Au faite pour ton erreur plus haut c'est en sécurisant les variables tu oublie une parenthèse en fermeture:
mysql_real_escape_string(htmlspecialchars($_POST['']));
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
3 juin 2009 à 15:20
3 juin 2009 à 15:20
Merci énormèment NitroGen pour ton aide précieuse. J'ai la première pierre de mon édifice grâce à toi.
NitroGen®
Messages postés
102
Date d'inscription
lundi 25 mai 2009
Statut
Membre
Dernière intervention
18 juin 2009
1
3 juin 2009 à 15:26
3 juin 2009 à 15:26
Merci ce fut un plaisir de t'aider si besoin d'aide en programmation, tu c'est où demandé ;)
@++ Et bonne programmation à toi.
@++ Et bonne programmation à toi.
cayoul
Messages postés
17
Date d'inscription
mardi 2 juin 2009
Statut
Membre
Dernière intervention
8 mars 2011
3 juin 2009 à 20:45
3 juin 2009 à 20:45
Bonjour,
J'ai de nouveau un problème du même type. Je suis sûr que c'est une erreur bête dans mon code, mais ma base de donnée refuse de s'updater. En gros je finis mon formulaire d'inscription. Tout marche très bien. j'envoie un mail pour que l'utilisateur confirme son inscription. Le mail est envoyé, reçu. L'utilisateur clique sur le lien. Et là le mail affiche que l'inscription s'est bien passé, cependant le champs: Compte_activation reste à 0 (au lieu d'être à 1).
Je vous mets mon code:
<?
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID"]))
{
header("Location: index.php");
}
else
{
// Vérifie que de bonnes valeurs sont passées en paramètres
if(!ereg("^[0-9]+$", $_GET["id"]) || !ereg("^[a-f0-9]{8}$", strtolower($_GET["clef"])))
{
header("Location: index.php");
}
else
{
// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
mysql_connect("localhost", "root", "");
mysql_select_db("abc");
// Sélection de l'utilisateur concerné
$result = mysql_query("
SELECT ID
, Compte_activation
, Clef_activation
FROM compte_utilisateurs
WHERE ID = '" . $_GET["id"] . "'
AND Clef_activation = '" . strtolower($_GET["clef"]) . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de l'activation de votre compte utilisateur";
}
else
{
// Si aucun enregistrement n'est trouvé
if(mysql_num_rows($result) == 0)
{
header("Location: index.php");
}
else
{
// Récupération du tableau de données retourné
$row = mysql_fetch_array($result);
// Vérification que le compte ne soit pas déjà activé
if($row["Compte_activation"] != 0)
{
$message = "Votre compte utilisateur a déjà été activé";
}
else
{
// Activation du compte utilisateur
$result = mysql_query("
UPDATE compte_utilisateurs
SET Compte_activation = '1'
WHERE ID = '" . $_GET["id"] . "'
AND Clef_activation = '" . strtolower($_GET["clef"]) . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de l'activation de votre compte utilisateur";
}
else
{
$message = "Votre compte utilisateur a correctement été activé";
}
}
}
}
// Fermeture de la connexion à la base de données
mysql_close();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Validation de l'inscription</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>Merci de vous être inscrit</p>
</body>
</html>
Et voici le lien pour valider l'inscription:
http://localhost/activer-compte-utilisateur.php?id=35&clef=cdef5678
Si qqn pouvait m'aider, ça serait vraiment sympa...
J'ai de nouveau un problème du même type. Je suis sûr que c'est une erreur bête dans mon code, mais ma base de donnée refuse de s'updater. En gros je finis mon formulaire d'inscription. Tout marche très bien. j'envoie un mail pour que l'utilisateur confirme son inscription. Le mail est envoyé, reçu. L'utilisateur clique sur le lien. Et là le mail affiche que l'inscription s'est bien passé, cependant le champs: Compte_activation reste à 0 (au lieu d'être à 1).
Je vous mets mon code:
<?
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_COOKIE["ID"]))
{
header("Location: index.php");
}
else
{
// Vérifie que de bonnes valeurs sont passées en paramètres
if(!ereg("^[0-9]+$", $_GET["id"]) || !ereg("^[a-f0-9]{8}$", strtolower($_GET["clef"])))
{
header("Location: index.php");
}
else
{
// Connexion à la base de données
// Valeurs à modifier selon vos paramètres configuration
mysql_connect("localhost", "root", "");
mysql_select_db("abc");
// Sélection de l'utilisateur concerné
$result = mysql_query("
SELECT ID
, Compte_activation
, Clef_activation
FROM compte_utilisateurs
WHERE ID = '" . $_GET["id"] . "'
AND Clef_activation = '" . strtolower($_GET["clef"]) . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de l'activation de votre compte utilisateur";
}
else
{
// Si aucun enregistrement n'est trouvé
if(mysql_num_rows($result) == 0)
{
header("Location: index.php");
}
else
{
// Récupération du tableau de données retourné
$row = mysql_fetch_array($result);
// Vérification que le compte ne soit pas déjà activé
if($row["Compte_activation"] != 0)
{
$message = "Votre compte utilisateur a déjà été activé";
}
else
{
// Activation du compte utilisateur
$result = mysql_query("
UPDATE compte_utilisateurs
SET Compte_activation = '1'
WHERE ID = '" . $_GET["id"] . "'
AND Clef_activation = '" . strtolower($_GET["clef"]) . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de l'activation de votre compte utilisateur";
}
else
{
$message = "Votre compte utilisateur a correctement été activé";
}
}
}
}
// Fermeture de la connexion à la base de données
mysql_close();
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Validation de l'inscription</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<p>Merci de vous être inscrit</p>
</body>
</html>
Et voici le lien pour valider l'inscription:
http://localhost/activer-compte-utilisateur.php?id=35&clef=cdef5678
Si qqn pouvait m'aider, ça serait vraiment sympa...