Problème requête SQL et formulaire

Résolu
cayoul Messages postés 20 Statut Membre -  
cayoul Messages postés 20 Statut Membre -
Bonjour,

C'est mon premier post sur un forum. Je demande l'aide de qui voudra bien parce que je bloque sur l'écriture d'un script php basique. J'ai un formulaire d'inscription sur index.php et je voudrais créer un site avec authentification et espace personnel (donc chaque utilisateur aurait son profil). Problème: je n'arrive même pas à écrire sur dans ma base de donnée à partir de mon formulaire. Je vous mets donc le formulaire en question, ainsi que la page inscription.php (appelé dans mon formulaire). Chose qui m'embête aussi, c'est que toutes les variables apparaissent dans l'URL comme si j'utilisais la méthode get. Est ce normal ? Merci d'avance de vos aides.

<form name="form1" method="post" action="inscription.php">
<tr>
<td>Nom</td>
<td><input type="text" name="Nom" id="Nom"></td>
</tr>
<tr>
<td>Prénom</td>
<td><input type="text" name="Prenom" id="Prenom"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="Email" id="Email"></td>
</tr>
<tr>
<td>Mot de passe</td>
<td><input type="password" name="Mot_de_passe" id="Mot_de_passe"></td>
</tr>
<tr>
<td id="bouton" height="50" colspan="2">
<input type="submit" name="submit" value="S'inscrire">
</td>
</tr>
</form>

Et inscription.php:

<?php
//Si l'utilisateur a cliqué sur s'inscrire
if(isset($_POST['submit']))
{
//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();

}

?>

23 réponses

Alain_42 Messages postés 5413 Statut Membre 894
 
normal tu n'affiches pas $message, je ne vois pas echo $message nulle part

et ta partie html "merci..." s'affiche dans toius les cas

essayes comme ça et tu verra ou ça coince:


<?php

// 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
$result2 = mysql_query("
UPDATE compte_utilisateurs
SET Compte_activation = '1'
WHERE ID = '" . $_GET["id"] . "'
AND Clef_activation = '" . strtolower($_GET["clef"]) . "'
");

// Si une erreur survient
if($result2)
{
$message = "Votre compte utilisateur a correctement été activé";

}
else
{
$message = "Une erreur est survenue lors de l'activation de votre compte utilisateur";

}

}

}

}

// 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><?php echo $message; ?>
</p>
</body>
</html>
0
cayoul Messages postés 20 Statut Membre
 
Bonsoir encore une fois, j'ai désormais trouvé un endroit où exposer tous mes problèmes et même si ça me gêne de vous embêter avec, je préfère ça que d'abandonner mon projet. Cette fois le problème est dans la vérification de l'unicité de l'adresse mail à l'inscription. J'ai le message d'erreur suivant qui apparait:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 61

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 61

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 62

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 62

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 63

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 63

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 64

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 64

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 65

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 65

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 66

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 66

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 67

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 67

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 68

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 68

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 69

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 69

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 70

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 70

Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\Fuck\inscription.php on line 114

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\wamp\www\Fuck\inscription.php on line 114
Access denied for user 'ODBC'@'localhost' (using password: NO)

Mon script marche très bien. Cependant dès que je rajoute la partie vérification de l'unicité ça m'affiche ça. Je vous mets la partie de mon scripts juste en dessous:

// Vérification de l'unicité de l'adresse e-mail
$result3 = mysql_query("
SELECT Email
FROM compte_utilisateurs
WHERE Email = '" . $_POST["email"] . "'
");

// Si une erreur survient
if(!$result3)
{
$message = "Erreur d'accès à la base de données lors de la vérification d'unicité";
}
else
{

// Si un enregistrement est trouvé
if(mysql_num_rows($result3) > 0)
{

while($row = mysql_fetch_array($result3))
{

if($_POST["email"] == $row["Email"])
{
$message = "Ladresse électronique " . $_POST["email"];
$message .= "est déjà utilisée";
}
Les lignes ont questions dans le message d'erreur sont les suivantes :

//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'])));
$genre=mysql_real_escape_string(htmlspecialchars($_POST['genre']));
$date_de_naissance=mysql_real_escape_string(htmlspecialchars($_POST['jour']));
$code_postal=mysql_real_escape_string(htmlspecialchars($_POST['code_postal']));
$statut=mysql_real_escape_string(htmlspecialchars($_POST['statut']));
$etablissement_scolaire=mysql_real_escape_string(htmlspecialchars($_POST['etablissement_scolaire']));
$niveau=mysql_real_escape_string(htmlspecialchars($_POST['niveau']));

Je le répète encore une fois, mes variables marchent très bien dès que j'enlève la vérification de l'unicité de l'adresse mail.

Merci à tout ceux qui veulent bien m'aider.
0
cayoul Messages postés 20 Statut Membre
 
J'ai trouvé. En fait mes accolades était pas fermé au bon endroit. Il fallait juste bien mettre les bons trucs dans le ELSE
0