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

Zend_Db PHP Discussion :

Ajout dans une table d'association à clé composée


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 109
    Par défaut Ajout dans une table d'association à clé composée
    Salut à tous,

    J'ai vu quelques postes sur internet sur le sujet mais la réponse ne me satisfait pas . Je vous expose le souci :

    J'ai 3 tables - Operations - Rapports - Sauvegarder

    Sauvegarder est la table d'association entre Rapports et Operations ( liaison *-*). La clé primaire de sauvegarder est donc une clé composée ( faite avec la clé primaire de Operations et celle de Rapports).

    Maintenant j'aimerais ajouter dans cette table un lien entre deux instances que j'ai précédemment crées ET verifier si un tel lien n'existe pas déja. J'ai lu qu'il fallait utiliser un tableau en tant que clé primaire, mais mon test du doublon n'est pas très concluant.

    Code de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Format_Model_DbTable_Sauvegardes extends Zend_Db_Table_Abstract
    {
        protected $_name = 'sauvegarder';
        protected $_primary  = array('id_rapport', 'no_dossier') ; 
    }
    Code d'ajout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sauvegarde = array('id_rapport' => ($rapport_objet->id_rapport) , 'no_dossier' => ($op->n_op)) ;
    if ($tableSauvegarde->fetchRow ($tableSauvegarde->select()->where("id_rapport = ". $rapport_objet->id_rapport." AND no_dossier= ".$op->n_op)== null )) ;  
    $tableSauvegarde->insert($sauvegarde) ;
    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 178
    Par défaut
    Hello,

    Est-ce que ce ne serait pas par hasard juste un petit problème de lisibilité de ton code ?
    Il me semble que tu as fait un if vide en mettant le ";" juste après ta condition.

    Du coup l'insert doit se faire à tous les coups

    Citation Envoyé par Knarf64 Voir le message
    Salut à tous,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sauvegarde = array('id_rapport' => ($rapport_objet->id_rapport) , 'no_dossier' => ($op->n_op)) ;
    if ($tableSauvegarde->fetchRow ($tableSauvegarde->select()->where("id_rapport = ". $rapport_objet->id_rapport." AND no_dossier= ".$op->n_op)== null )) ;  
    $tableSauvegarde->insert($sauvegarde) ;
    Dans un premier temps je te conseille de TOUJOURS*mettre des accolades, ça évite ce genre d'erreur.

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

Discussions similaires

  1. ajout dans une table access
    Par k_boy dans le forum MFC
    Réponses: 6
    Dernier message: 05/10/2007, 19h00
  2. requête ajout dans une table
    Par crissud dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/04/2007, 20h28
  3. Bouton pour confirmer un ajout dans une table sous Access
    Par cestimagik dans le forum Access
    Réponses: 3
    Dernier message: 31/12/2006, 10h32
  4. Ajout dans une table et relation avec d'autres
    Par climz dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 15h32
  5. big ajout dans une table
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 19/04/2005, 10h22

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