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

Bibliothèques et frameworks PHP Discussion :

Le meilleur moyen de mettre à jour


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut Le meilleur moyen de mettre à jour
    Bonjour, j'ai créé un formulaire représentant un devis. Ma modélisation est construite de sorte qu' un devis peut avoir plusieurs ligne de devis.

    Pour la création d'un devis je réussis bien a sauvegarder le devis en lui même et les lignes associées grave à saveAssociated cependant je rencontre des problèmes lors de la mise à jour d'un devis et surtout lors de la modification suppression des lignes d'un devis.

    En effet en utilisant saveAssociated il va bien mettre à jour la table "Devis" mais il va créer N nouvelles lignes de devis au lieu de les UPDATE. Y a t il un moyen comme saveAssociated de mettre a jour l'enregistrement et ses modèles associées ou dois je le faire "manuellement" modèle associé par modèle associé ?

    D'avance merci.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Supprime touste les lignes puis insert

  3. #3
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    C'est ce que je pensais faire mais une question se pose que se passera t il si j'arrive a la limite de mon auto incrémente ? un ID int(20) me laisse une marge mais en utilisant ta méthode j'y arriverais beaucoup plus rapidement qu'avec un UPDATE

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Un int(20) c'est beaucoup de chiffre je dirai que c'est impossible d'atteindre la limite 99 999 999 999 999 999 999

  5. #5
    Membre Expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Pour mettre à jour ta ligne plutôt que d'en créer une nouvelle, il suffit d'indiquer l'identifiant de la ligne dans tes données lors de ton appel à la fonction saveAssociated.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $datasSaved = array(
        'ModelPrincipal' => array(
        // Données du modèle  
        ),
        'ModelLie' => array(
            array(
                'id' => 2
            // Id renseigné, ligne possédant l'id correspondant est mise à jour (pas d'ajout)                  
            ),
            array(
            //Pas d'id, ligne ajouté
            )
        )
    );
    La suppression de toutes les données liées est envisageable à chaque ajout, il y a suffisamment d'entier pour ne pas résonner en terme d'économie d'integer, cela n'en reste pas moins une méthode beaucoup moins propre, et peut éventuellement entraîner des problèmes de pertes de données.

    Au passage, un int(20) ne sert à rien vu que la valeur maximale (positive) d'un int est 2 147 483 647, soit un int(10). Si l'entier est non signé, cela double sa valeur (+1 car on gagne le bit du signe) pour atteindre 4 294 967 295 (qui est toujours un int(10))

Discussions similaires

  1. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 16h56
  2. [MySQL] Quel est le meilleur moyen de stocker une date/heure ?
    Par MiJack dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 31/07/2004, 13h19
  3. Réponses: 3
    Dernier message: 09/07/2004, 11h23
  4. Mettre à jour une table depuis une autre
    Par rsc dans le forum SQL
    Réponses: 4
    Dernier message: 09/07/2004, 11h08
  5. Réponses: 6
    Dernier message: 14/02/2003, 17h52

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