IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requête INSERT TO [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut Requête INSERT TO
    Bonjour,

    Etant grand débutant en PHP, je me suis fixé l'exercice de créer un espace membre de connexion sur une future appli. Je souhaite faire cela sur l'architecture CRUD

    Pour l'instant je n'ai fait que écrire ma requête d'ajout d'un membre qui ne fonctionne pas avec 2 classes : l'une qui représente les membres qui s'inscrivent et l'autre qui les gère (manager).J'ai par ailleurs crée une table en local dont
    chaque entrée comporte : ID (autoincrémenté), pseudo, mot de passe et date d'inscription du membre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <?php
    class Inscription_Membre//Rôle représente les inscriptions des membres
    {
    	private $_pseudo;
    	private $_password;
     
    	public function hydrate(array $data) {//hydratation de l'objet "$membre"
    		foreach ($data as $key => $value) {
    			$method = 'set'.ucFirst($key);
    			if(method_exists($this, $method)) {
    				$this->method($value);
    			}
    		}
    	}
     
    	//Setters
    	public function setPseudo($pseudo) {
    		$this->_pseudo = $pseudo;
    	}
     
    	public function setPass($pass) {
    		$this->_password = $pass;
    	}
     
    	//Getters
    	public function getPseudo() {
    		return $this->_pseudo;
    	}
     
    	public function getPass() {
    		return $this->_password;
    	}
    }
     
    class Manager_Membre{//Gère les membres
     
    	private $_db; // Instance de PDO
     
     	public function __construct($db) {
        	$this->setDb($db);
      }
     
    	public function addMember($membre){
     
    		$req = $this->_db->prepare('INSERT INTO membre(pseudo, pass, inscript_date) VALUES(:pseudo, :pass, now())');
    		$req->bindValue(':pseudo', $membre->getPseudo());
    		$req->bindValue(':pass', $membre->getPass());
     
    		$req->execute();
    	}
     
    	public function setDb(PDO $db) {
        	$this->_db = $db;
    	}
    }
     
    $membre = new Inscription_Membre([
      'pseudo' => 'Victor',//$_POST['pseudo']
      'pass' => 'truc'//$_POST['pass']
    ]);
     
     
    $db = new PDO('mysql:host=localhost;dbname=exo_crud;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE =>PDO::ERRMODE_EXCEPTION ));//Objet de l'instance PDO
     
    $manager = new Manager_Membre($db);
    $manager->addMember($membre);
    Le code est sale car j'ai lié les fichiers de classe pour faire un seul tronçon de code

    J'ai une erreur sur la ligne sur la ligne 50 avec probablement un problème de date. D'autre part il est possible qu'il y ait d'autres erreurs, ceci est ma première tentative. Si quelqu'un pouvait me donner un coup de pouce pour me débloquer
    ça serait très sympathique

    Bien à la communauté

    Olivier

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Salut,

    Est-ce que ça fonctionnerait mieux en passant la valeur de la date comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function addMember($membre){
       req = $this->_db->prepare('INSERT INTO membre(pseudo, pass, inscript_date) VALUES(:pseudo, :pass, :date_inscription)');
       $req->bindValue(':pseudo', $membre->getPseudo());
       $req->bindValue(':pass', $membre->getPass());
       $req->bindValue(':date_inscription', date());
       $req->execute();
    }
    (en modifiant éventuellement la structure de la table concernée dans la base de données)

    Si ça ne fonctionne toujours pas, n'hésite pas à recopier ici le message d'erreur qui t'es affiché (ou directement dans un moteur de recherche).

  3. #3
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour Thomas et merci pour ta réponse.

    Cela ne fonctionne pas cependant.

    Voici le message d'erreur relevé :

    Nom : screenshot-localhost-2019.01.15-17-32-09.png
Affichages : 106
Taille : 18,3 Ko

    Cordialement

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Est-ce qu'il est normal que ton fichier s'appelle "CLASS_Maneager_membre.php" ??

    Essaye avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $req = $this->_db->prepare("INSERT INTO membre (pseudo, pass, inscript_date) VALUES (:pseudo, :pass, :date_inscription)");
    $req->bindParam(':pseudo', $membre->getPseudo());
    $req->bindParam(':pass', $membre->getPass());
    $req->bindParam(':date_inscription', date());
    $req->execute();

  5. #5
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Non tu as raison, il y a une coquille dans le nom de mon fichier

    Sinon voici le message d'erreur que génère le code avec tes modifications. Merci pour ton aide en tous cas !

    Nom : screenshot-localhost-2019.01.15-19-43-55.png
Affichages : 108
Taille : 42,2 Ko

    Bonne soirée

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Points : 582
    Points
    582
    Par défaut
    Tu peux copier/coller directement les messages ici plutôt que de faire un screenshot.

    Et quant à ton erreur, elle est plutôt explicite : MySQL indique qu'il ne connaît pas de colonne "insript_date" sur la table dans laquelle tu essayes d'insérer des données.
    Il y a très probablement une différence entre le nom de la colonne MySQL et celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = $this->_db->prepare("INSERT INTO membre (pseudo, pass, inscript_date) VALUES (:pseudo, :pass, :date_inscription)");

  7. #7
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Merci Thomas, j'ai en effet fait une coquille dans ma table...Décidément, je suis un peu trop dans l'ordi en ce moment !
    Une après-midi de fichue pour ça mais que de temps gagné grâce à toi ce soir.

    Encore mille mercis pour ce télé-débugage !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA] difficultés avec une requête INSERT
    Par elias dans le forum Access
    Réponses: 7
    Dernier message: 06/09/2005, 14h53
  2. requête insert
    Par mattoo dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2005, 14h09
  3. Réponses: 4
    Dernier message: 05/04/2005, 18h28
  4. probleme requête insert.... where
    Par Amandine62 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/02/2005, 14h26
  5. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo