Bonjour j'ai suivi le tuto "Gérer des permissions" j'ai bien suivi le tuto sa fonctionne (à par quelque petit bug avec le css) mais c'est pas très grave et donc je veux créer un système d'inscription en PDO qui va avec.
donc j'ai pensé as stocké les login et password dans la base de donnée prévue avec leur role email et tout le reste
comme sa si il sont dans la base de donné on peux ce connecté avec.

et c'est la ou apparait le probléme j'ai fais un script php pour posté les info sur ma base de donné mais sa ce poste pas
je pence avoir fait une erreur quelque part mais je ne sais pas

déjà ma SQL que j'ai fais en suivant le "tuto Gérer des permission"

--
-- Base de données: `compte`
--
-- --------------------------------------------------------
--
-- Structure de la table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `role_id` int(2) NOT NULL,
  `email` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `role_id` (`role_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Contenu de la table `users`
--
INSERT INTO `users` (`id`, `login`, `password`, `address`, `role_id`, `email`) VALUES
(1, 'admin', 'admin', 'Je suis un admin', 1, ''),
(2, 'membre', 'membre', 'pti membre', 2, '');

mon formulaire d'inscription dans le page Inscription.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
     <meta http-equiv="imagetoolbar" content="no" />
     <title>Inscription</title>
     <link rel="stylesheet" href="content/css-js/dign.css" />
     <link rel="stylesheet" href="content/css-js/style.css" />
     <link href='http://fonts.googleapis.com/css?family=Droid+Sans:700|PT+Sans|Kreon|Oswald' rel='stylesheet' type='text/css'>
</head>
<body>
    <div id="inscri">
        <form method="post" action="active.php">
            <input type="text" name="login"/>
            <input type="password" name="password"/>
            <input type="email" name="email"/>
            <input type="submit" name="inscription"/>
        </form>
    </div>
</body>

mon active.php pour posté sur DB

<?php
  try{
  $DB = new PDO('mysql:localhost;sdbname=compte','root','');
  }
  catch (PDOException $e){
    echo'Une erreur est survenue la base de donnée est pas accessible pour le moment';
  }
  $d = array(
      'login' => '$login',
      'password' => '$password',
      'address' =>'Membre',
      'role_id' => '1',
      'email' => '$email'
      );
  $req = $DB->prepare('INSERT INTO users (login,password,address,role_id,email) VALUE(:login , :password , :address , :role_id , :email)');
  $req->execute($d);

?>

bon quand je les fais je suis partie dans une logique et je suis pas sur que c'étais la bonne logique si quelqu’un
trouve le problème ou me propose un autre script je veux bien prendre merci.

12 réponses


wilose
Réponse acceptée

Bon, si ça ne marche pas, j'arrête le php XD.

<?php
  try{
  $bdd = new PDO('mysql:host=localhost;dbname=compte','root','');
  }
  catch (Exception $e){
    echo'<p>Une erreur est survenue la base de donnée est pas accessible pour le moment<p>';
  }
  $d = array(
      'login' => $_POST'login'],
      'password' => $_POST'password'],
      'address' => 'Membre',
      'role_id' => '1',
      'email' => $_POST'email']
      );
  $req = $bdd->prepare('INSERT INTO users (login, password, address, role_id, email) VALUES (:login ,:password,:address,:role_id,:email)');
  $req->execute($d);
?>

Bonjour,
tu ne récupère pas ce qui a été poster...

debug $d et tu verras ton erreur

Nookum
Auteur

humm xD désolé je vois pas ... :s

<?php
  try{
  $DB = new PDO('mysql:localhost;sdbname=compte','root','');
  }
  catch (PDOException $e){
    echo'Une erreur est survenue la base de donnée est pas accessible pour le moment';
  }
  $d = array(
      'login' => $_POST'login'],
      'password' => $_POST'$password'],
      'address' => $_POST'Membre'],
      'role_id' => '1',
      'email' => $_POST'email']
      );
  $req = $DB->prepare('INSERT INTO users (login,password,address,role_id,email) VALUE(:login , :password , :address , :role_id , :email)');
  $req->execute($d);

?>

Mais attention, le champ 'adresse' n'est pas dans le formulaire.
Et il faudra par la suite effectué des vérifications avec des conditions...

Nookum
Auteur

le chant address il es pas dans le formulaire c'est normale il es un peux comme role_id quand tu as le role_id 1 donc quand tu t'inscrit sa veux dir que tu es un membre comme sa sur le site dans l'espace perso il pourra voir son niveau membre moderateur ou admin

humm ok je teste sa tout de suite
et je t'informe si sa marche en tous cas merci

Nookum
Auteur

j'ai testé bon déjà sa ma affiché 2erreur que adresse étais pas defini mais c'est normale j'ai changé et que password aussi ben je pence que c'est pars-que il avait marqué $password bon j'ai changé sa mais sa poste toujours rien et il a pas d'erreur

<?php
  try{
  $DB = new PDO('mysql:localhost;sdbname=compte','root','');
  }
  catch (PDOException $e){
    echo'Une erreur est survenue la base de donnée est pas accessible pour le moment';
  }
  $d = array(
      'login' => $_POST'login'],
      'password' => $_POST'password'],
      'address' => 'Membre',
      'role_id' => '1',
      'email' => $_POST'email']
      );
  $req = $DB->prepare('INSERT INTO users (login,password,address,role_id,email) VALUE(:login , :password , :address , :role_id , :email)');
  $req->execute($d);

?>

ton erreur vient du fait que ton tableau n'est pas correct avec PDO il faut un array de ce genre :

$d = array(
      ':login' => $_POST'login'],
      ':password' => $_POST'password'],
      ':address' => 'Membre',
      ':role_id' => '1',
      ':email' => $_POST'email']
      );

Voila qui devrait mieux fonctionner.
Par contre essayes de faire un effort sur l'écriture, penses aux yeux de ceux qui t'aident ;)

Nookum
Auteur

merci et désolé si j'écrit mal quand je suis presser, je prend pas le temps de bien écrire et l'orthographe et moi sa fais 2 xD
j'ai testé sa fais exactement pareil il a pas d'erreur mais rien est posté :s je remet le code pour vérifier

<?php
  try{
  $DB = new PDO('mysql:localhost;sdbname=compte','root','');
  }
  catch (PDOException $e){
    echo'Une erreur est survenue la base de donnée est pas accessible pour le moment';
  }
  $d = array(
      ':login' => $_POST'login'],
      ':password' => $_POST'password'],
      ':address' => 'Membre',
      ':role_id' => '1',
      ':email' => $_POST'email']
      );
  $req = $DB->prepare('INSERT INTO users (login,password,address,role_id,email) VALUE(:login ,:password,:address,:role_id,:email)');
  $req->execute($d);

?>
Nookum
Auteur

wilose bien joué sa fonctionne a merveille il venez d'ou le problème ?

Nookum
Auteur

désolé j'ai 2 autre question comment faire une input text qui dit retapé votre mot de passe et qui regarde si c'est égale au mot de passe rentré et comment faire en sorte que deux personne peuvent pas avoir le même login s'il vous plait

Ou est le bon code svp !