Bonjour,
Voila je rencontre un petit problème avec mon code.
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'test');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
try {
$bdd = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD);
echo "connexion reussie.<br> ";
} catch (PDOException $e) {
echo 'Echec de la connexion : ' . $e->getMessage();
exit;
}
$username = $_POST['username'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
$email = $_POST['email'];
$req = $bdd->prepare("INSERT INTO 'test' VALUES(null, :username, :password, ;email)");
$req->execute(array(
":username"=>$username,
":password"=>$password,
":email"=>$email));
$res = $req->execute(array(
":username"=>$username,
":password"=>$password,
":email"=>$email));
if (!$res) {
echo "\nPDO::errorInfo():\n";
print_r($bdd->errorInfo());
}
else {
echo "ok";
}
die();
print_r($bdd->errorInfo());
var_dump ($req);
?>
<form role="form" method="POST">
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" placeholder="Pseudo" name="username">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
<input type="email" class="form-control" placeholder="Email" name="email">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-key"></i></span>
<input type="password" class="form-control" placeholder="Mot de passe" name="password">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-key"></i></span>
<input type="password" class="form-control" placeholder="Repeter mot de passe" name="rpassword">
</div>
<button type="submit" class="btn btn-purple btn-block" name="registerBtn">Créer un compte</button>
</form>
<?php
$test=$bdd->query("SELECT * FROM test");
$donee=$test->fetch();
while ($donee=$test->fetch()) {
echo $donee["id"] ."<br>";
}
?>
je cherche juste a avoir un bonne conexion avec ma base de donee et inscrire mes utilisateurs
quand je l execute sa me dit que sa cree bien le compte mais rien dans la base de donee
Bonjour,
Il y a un ; devant email dans la requête.
De plus en, je suis pose que le null correspond à Id qui est en auto-incremente ?
Et pour finir, vous faites 2 execute de suite avec les mêmes valeurs donc cela va engendrer des doublons.
oui j ai corriger le ; et oui le null est pour l id qui s auto-incremente.
mais cela ne s insere pas dans la db :s
et non toujours rien j ai fait un echo des mes variables du $_post ce la mes les affiches bien mais rien dans la db...
ce que j ai maintenant:
$username = $_POST['username'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
$email = $_POST['email'];
$req = $bdd->prepare("INSERT INTO test VALUES(:username, :password, :email)");
$res = $req->execute(array(
":username"=>$username,
":password"=>$password,
":email"=>$email));
echo $username.'<br>';
echo $password.'<br>';
echo $email.'<br>';
?>
Sans préciser les champs dans le 'insert into' il faut tous les remplir :
$req = $bdd->prepare("INSERT INTO test VALUES ('', :username, :password, :email)");
je vien d essayer mais sa ne m inscrit rien dans la db sa peux venire de la db ? vu que elle s appelle test et la table s appelle aussi test ?
oui cela se peut. Essayer avec un nom différent et différent de test. Comme 'utilisateurs'
je n ai toujours rien meme en changeant le nom de la table sa fait 2 jours que je suis dessus ....
je peux les cree dans ma table avec mysql et les resortire pour voir que il sont la mais cela ne veux pas s inserer :s
rien a part des erreur que j coriger dans l apres midi
24-Jun-2016 17:38:59 UTC] PHP 1. {main}() C:\wamp64\www\test\users\index.php:0
[24-Jun-2016 17:42:22 UTC] PHP Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in C:\wamp64\www\test\users\index.php on line 66
[24-Jun-2016 17:42:37 UTC] PHP Fatal error: Call to a member function fetch() on boolean in C:\wamp64\www\test\users\index.php on line 66
[24-Jun-2016 17:42:37 UTC] PHP Stack trace:
[24-Jun-2016 17:42:37 UTC] PHP 1. {main}() C:\wamp64\www\test\users\index.php:0
[24-Jun-2016 17:43:02 UTC] PHP Fatal error: Call to a member function fetch() on boolean in C:\wamp64\www\test\users\index.php on line 66
[24-Jun-2016 17:43:02 UTC] PHP Stack trace:
[24-Jun-2016 17:43:02 UTC] PHP 1. {main}() C:\wamp64\www\test\users\index.php:0
j ai incorporer ```
if (!$res) {
echo "\nPDO::errorInfo():\n";
print_r($bdd->errorInfo());
}
else {
echo "ok";
}
die();
et cela me renvoye :
PDO::errorInfo(): Array ( [0] => 00000 [1] => [2] => )```
Bonsoir.
Pour commencer, tu devrais vérifier si le formulaire a été soumis, car dans l'état actuel, le code d'insertion en base de données s'effectue sans même que des données soient postées.
Ensuite dans le bas de ta page, après ta requête de sélection, tu utilises deux fois $donee = $test->fetch()
, tu devrais éviter de faire du doublon de code, soit tu fais :
$donee = $test->fetch();
while ($donee) {
Ou alors :
while ($donee->fetch()) {
Mais pas en double.
Pour terminer, tu ne fais aucun traitement sur les données postées, alors qu'il est conseillé de le faire, même si le fait d'utiliser une requête préparée permet d'éviter les injections SQL, rien ne t'empèche par exemple d'échaper certaines valeurs qui sont soumises par l'utilisateur, surtout qu'étant donné que tu ne vérifies pas si certains champs soumis ne sont pas vides ou d'autre chose, tu ne pourras pas renseigner l'utilisateur des champs qui peuvent poser problèmes.
bon je doit avoir un probleme avec ma db car j ai beau refaire des tutos rien ne s affiche dans la base de donnee
bon je doit avoir un probleme avec ma db car j ai beau refaire des tutos rien ne s affiche dans la base de donnee
Ce serait bien que tu nous dises si tu as essayé avec des modifications que nous t'avons proposés, car actuellement nous ne savons pas où tu en est exactement et par conséquent nous ne pouvons pas te proposer de solution ou du moins te donner des pistes.
comme sa ne fonctionnait pas j ai refair cette apres midi le tutos https://www.youtube.com/watch?v=S1-T4MLnUj4&list=PLjwdMgw5TTLX9UU3k2-zX0cWNgO6K-Q02&index=8 et cela ne fonctionne pas sur ma base de donee donc je doit avoir un probleme directement qui vien de la
je suis toujours sur un truc simple qui ne marche pas ...
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'zulamed');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
try {
$bdd = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD);
echo "connexion reussie.<br> ";
} catch (PDOException $e) {
echo 'Echec de la connexion : ' . $e->getMessage();
exit;
}
$username = $_POST['username'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
$email = $_POST['email'];
$d = array(
'username'=>$_POST['username'] ,
'password'=> $_POST['password'],
'email'=> $_POST['email']);
$req = $bdd->prepare("INSERT INTO users('username', 'password','email') VALUES ( :username, :password, :email)");
$req->execute($d);
print_r ($req).'<br>';
echo $username.'<br>';
echo $password.'<br>';
echo $email.'<br>';
?>
<form role="form" method="POST">
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" placeholder="Pseudo" name="username">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
<input type="email" class="form-control" placeholder="Email" name="email">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-key"></i></span>
<input type="password" class="form-control" placeholder="Mot de passe" name="password">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-key"></i></span>
<input type="password" class="form-control" placeholder="Repeter mot de passe" name="rpassword">
</div>
<button type="submit" class="btn btn-purple btn-block" name="registerBtn">Créer un compte</button>
</form>
Il faudrait tester qu'il y est des éléments dans $_POST car là, quoiqu'il arrive, on fait une requête.
j ai refait encore tout refait et rien ne change au niveau de la db ```
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'zulamed');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
try {
$odb = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD);
echo "connexion reussie.<br> ";
} catch (PDOException $e) {
echo 'Echec de la connexion : ' . $e->getMessage();
exit;
}
?>
<div class="container">
<div class="row">
<div class="">
<h3 class="text-center">Créer un compte</h3>
<p class="text-center">Veillez utiliser le meme pseudo ingame</p>
<hr class="clean">
<?php
if (isset($_POST['registerBtn']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
$email = $_POST['email'];
$checkUsername = $odb -> prepare("SELECT COUNT(*) FROM users
WHERE username
= :username");
$checkUsername -> execute(array(':username' => $username));
$countUsername = $checkUsername -> fetchColumn(0);
if (empty($username) || empty($password) || empty($rpassword) || empty($email))
{
echo 'vuiellez tous remplir';
}
else
{
if (!ctype_alnum($username) || strlen($username) < 4 || strlen($username) > 15)
{
echo 'peudo entre 5et 14 caractere';
}
else
{
if (!($countUsername == 0))
{
echo 'peudo deja pris';
}
else
{
if (!filter_var($email, FILTER_VALIDATE_EMAIL))
{
echo 'email invalide';
}
else
{
if ($password != $rpassword)
{
echo 'pas le meme mot de pass';
}
else
{
try {
$d = array(
'username'=>$_POST['username'] ,
'password'=> $_POST['password'],
'email'=> $_POST['email']);
$req = $odb->prepare("INSERT INTO users(username, password,email) VALUES ( :username, :password, :email)");
$req->execute($d);
} catch (Exception $e) {
echo "rien ne c est executer";
}}
echo 'compte a ete cree';
}
}
}
}
}
?>
<form role="form" method="POST">
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="text" class="form-control" placeholder="Pseudo" name="username">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-envelope"></i></span>
<input type="email" class="form-control" placeholder="Email" name="email">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-key"></i></span>
<input type="password" class="form-control" placeholder="Mot de passe" name="password">
</div>
<div class="form-group input-group">
<span class="input-group-addon"><i class="fa fa-key"></i></span>
<input type="password" class="form-control" placeholder="Repeter mot de passe" name="rpassword">
</div>
<button type="submit" class="btn btn-purple btn-block" name="registerBtn">Créer un compte</button>
</form>
<hr>
<p class="text-center text-gray">Vous avez deja un compte ?</p>
<a href="signin.php" class="btn btn-default btn-block">Se connecter</a>
</div>
</div>
</div>
```