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 :

lastinsertid dans requete preparer pdo renvoi rien


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut lastinsertid dans requete preparer pdo renvoi rien
    Bonjour,

    je souhaite retourner le dernier id mais rien ne s'affiche cote page du site.


    voici la fonction ajouter:


    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
     
    	protected function add(ContenuAdherent $Adherent)
    	{
     
    		$requete = $this->db->prepare('INSERT INTO ef_adherent SET 
    		adherent_nom = :nom, 
    		adherent_prenom = :prenom, 
    		adherent_datenaiss = :datenaiss,
    		adherent_lieunaiss= :lieunaiss,
    		adherent_adresse = :adresse,
    		adherent_cp = :cp,
    		adherent_ville = :ville,
    		adherent_pays = :pays,
    		adherent_tel = :tel,
    		adherent_email = :email, 
    		adherent_date_creation = NOW(), 
    		adherent_statut = :statut,
    		adherent_paiement = :paiement');
     
    		$requete->bindValue(':nom', $Adherent->getAdherentNom());
    		$requete->bindValue(':prenom', $Adherent->getAdherentPrenom());
    		$requete->bindValue(':datenaiss', $Adherent->getAdherentdatenaiss());
    		$requete->bindValue(':lieunaiss', $Adherent->getAdherentlieunaiss());
    		$requete->bindValue(':adresse', $Adherent->getAdherentAdresse());
    		$requete->bindValue(':cp', $Adherent->getAdherentCp());
    		$requete->bindValue(':ville', $Adherent->getAdherentVille());
    		$requete->bindValue(':pays', $Adherent->getAdherentPays());
    		$requete->bindValue(':tel', $Adherent->getAdherentTel());
    		$requete->bindValue(':email', $Adherent->getAdherentEmail());
    		$requete->bindValue(':statut', $Adherent->getAdherentStatut());
    		$requete->bindValue(':paiement', $Adherent->getAdherentPaiement());
     
    		$requete->execute();
     
    		$id = $this->db->lastInsertId();
     
    		return $id;
     
    }


    coté site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    		$last_id=$managerAdherent->save($adherent);
    		print_r($last_id);
    et cas ou le add dans la class :
    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
     
      /**
             * Méthode permettant d'enregistrer un Contenu
             * @param $adherent Contenu le Contenu à enregistrer
             * @see self::add()
             * @see self::modify()
             * @return void
             */
            public function save(ContenuAdherent $adherent)
            {
                if ($adherent->isValid())
                {
                    $adherent->isContenuAdherent() ? $this->add($adherent) : $this->update($adherent);
                }
                else
                {
                    throw new RuntimeException('Le contenu doit être valide pour être enregistrée');
                }
            }
    merci pour votre aide.

  2. #2
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Billets dans le blog
    1
    Par défaut
    Tu as bien un champ id en autoincrement dans ta table ? (on ne sait jamais)

    Sinon, parce que j'aime bien chipoter sur la qualité du code, c'est quoi l'intérêt de préfixer tous tes champs par adherant dans ta table d’adhérents ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La fonction s'appelle add(), or tu utilises ->save().

    Ou alors, il faut que ->save retourne return $id;.

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    Bonjour,

    Rien dans ce code ne retourne l'id comme le dit @jreaux62

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
      public function save(ContenuAdherent $adherent)
            {
                if ($adherent->isValid())
                {
                    $adherent->isContenuAdherent() ? $this->add($adherent) : $this->update($adherent);
                }
                else
                {
                    throw new RuntimeException('Le contenu doit être valide pour être enregistrée');
                }
            }
    Je vais juste suposer que add() et update retourne un id

    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
     
      public function save(ContenuAdherent $adherent)
            {
                if ($adherent->isValid())
                {
                    if($adherent->isContenuAdherent()){
                         $id =  $this->add($adherent)
                       }else{
                         $id =  $this->update($adherent);
                      }
                    return $id;
                }
                else
                {
                    throw new RuntimeException('Le contenu doit être valide pour être enregistrée');
                }
            }

Discussions similaires

  1. [1.x] Requete doctrine ne renvoie rien!
    Par analuiza dans le forum Symfony
    Réponses: 15
    Dernier message: 26/06/2012, 16h02
  2. [PDO] if dans un prepare() PDO
    Par heretik25 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/12/2011, 15h19
  3. [PDO] pdo - requete prepare qui ne retourne rien
    Par killgors dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 12/11/2011, 23h06
  4. Requete sql qui ne renvoie rien :-(
    Par patchouli dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2007, 09h41
  5. [PostgreSql] requête simple qui ne renvoie rien ?
    Par tuxout dans le forum Langage SQL
    Réponses: 6
    Dernier message: 03/08/2006, 14h06

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