Insert dans une base de donnée

marcber Messages postés 124 Statut Membre -  
 Utilisateur anonyme -
voici mon code PHP pour une page register qui permet au gens de s'inscrire et d'envoyer les donnée dans ma base de donnée (utilisateur et mot de passe)
mais quand on veux s'inscrire il me dit tj veuillez compléter les champ .... apparament il n'insert rien

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php

if(isset($_POST['submit']))
{
 $username = htmlspecialchars(trim($_POST['username']));
 $password = htmlspecialchars(trim($_POST['password']));
 $repeatpassword = htmlspecialchars(trim($_POST['repeatpassword']));
  
 if($username&&$password&&$repeatpassword)
 {
  if(strlen($username)>=4)
  {
   if(strlen($password)>=6)
   {
    if($password==$repeatpassword)
    {
     
     $db=mysql_connect("votredomaine.com.mysql", "nom d'utilisateur", "mot de passe");
     mysql_select_db("base de données", $db);
     
     //$password =md5($password);
     
     $sql = "INSERT INTO users ('', 'username','password') VALUES ('$username ', '$password ')";
     
        mysql_query($sql,$db);
     
     die('Inscription terminée. Vous pouvez vous <a href="login.php">connecter</a>');
         
    }
    else echo "Les mots de passe ne sont pas identiques";
   }
   else echo "Le mot de passe est trop court! min 6 caractères"; 
  }
  else echo "Le nom d'utilisateur est trop court! min 4 caractères";
 }
 else echo "Veuillez saisir tous les champs!";
}
?>

<title>Inscription</title>

<h1>Inscription</h1>
<form method="POST" action="register.php">
<p>Votre nom d'utilisateur</p>
<input type="text" name "username">
<p>Votre mot de passe</p>
<input type="password" name "password">
<p>Répétez votre mot de passe</p>
<input type="password" name "repeatpassword"><br><br>
<input type="submit" name="submit" value="valider">
</form>

<a href="login.php">Je possède déjà un compte</a>
A voir également:

10 réponses

Utilisateur anonyme
 
Bonjour

<input type="text" name "username">
...
<input type="password" name "password">


Il te manque un "=" entre name et "username" et "password"

Donc tes champs n'ont pas de nom, donc dans ton analyse tu ne les retrouves pas.

Tu t'en serais rapidement rendu compte si tu avais fait un
print_r ($_POST)
au début de ton script pour voir ce que le formulaire te renvoyait.
0
marcber Messages postés 124 Statut Membre
 
merci pour votre réponse
j'ai corrigé mais la base de donnée ne se rempli pas
la page inscription terminée vous pouvez vous connecter mais je n'ai rien dans la bas de donnée
0
Utilisateur anonyme
 
Pour diagnostiquer, modifie ton mysql_query comme ça :
mysql_query($sql,$db) or die (mysql_error());
0
marcber Messages postés 124 Statut Membre
 
il me mets ceci comme message
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''','username','password') VALUES (admin,963963)' at line 1

ma version MariaDB est
Software version: 5.5.38-MariaDB-1~wheezy - mariadb.org binary distribution
0

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

Posez votre question
Utilisateur anonyme
 
En effet, il y a une grosse erreur
INSERT INTO users ('', 'username','password')... 

Dans les parenthèses, il devrait y avoir des noms de champs. Ton premier champ n'a donc pas de nom ?
Remplace par
INSERT INTO users ('username','password')... 
0
marcber Messages postés 124 Statut Membre
 
je n'avais pas mis le premier champ car c'est un id qui s'incrémente tout seule
0
marcber Messages postés 124 Statut Membre
 
$sql = "INSERT INTO users ('id','username','password') VALUES ('$username','$password')";
0
Utilisateur anonyme
 
Tu confonds.
Tu peux mettre une valeur vide dans VALUES pour correspondre à un champ auto incrémenté dont tu as donné le nom dans la liste des champs.
Mais mettre un nom de champ vide, ça n'a jamais rien voulu dire

Autrement dit, tu peux écrire :
INSERT INTO users (id, 'username','password') VALUES ('','$username ', '$password ')

ou
INSERT INTO users ( 'username','password') VALUES ('$username ', '$password ')

mais en aucun cas
INSERT INTO users ('', 'username','password') VALUES ('$username ', '$password ')
0
marcber Messages postés 124 Statut Membre
 
désolé de vous ennuyer comme ca

j'ai pris cette option
$sql="INSERT INTO users (id,'username','password') VALUES ('','$username','$password')";
et j'ai denouveau un message error
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''username','password') VALUES ('','admin','123123')' at line 1
0
marcber Messages postés 124 Statut Membre
 
je reviens vers vous j'ai réussis a faire ce que je voulait en grande partie grace a vous merci bcp
la dernière phrase j'ai fait la requete sql dans phpadmin et je l'ai transformer en langage php et elle fonctionne

pour info la voici
$sql = "INSERT INTO `users`(id,`username`, `password`) VALUES ('','$username','$password')";

encore un grand merci et bonne fin de journée
0
Utilisateur anonyme
 
Tu gagnerais beaucoup de temps (et moi aussi) si tu faisais l'effort d'apprendre les langages au lieu de demander aux autres d'écrire à ta place.
Tu as copié-collé, la requête, mais ce site transforme les accents graves ( ` ) en apostrophes ( ' ). Or, il ne faut pas d'apostrophes autour des noms de champs, mais des accents graves. Comme ces accents graves sont optionnels dans la plupart des cas, autant ne rien mettre du tout.
Attention, j'ai bien dit autour des noms de champs. Pas autour des valeurs. Ne reviens pas avec une erreur parce que tu as supprimé les apostrophes autour des valeurs.
0