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

Requêtes MySQL Discussion :

Vérifier insérer ou mettre a jour une table mysql


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 254
    Par défaut Vérifier insérer ou mettre a jour une table mysql
    Bonjour,

    J'ai une table mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lignetravaux_materiels_techniciens(bontravaux_id,materiel_id,technicien_id)
    Dans une page php, je dois voir si la valeur entrée par l'utilisateur sur bontravaux_id existe déjà dans la table :

    - Si elle y existe, je dis mettre a jour

    - Si elle n'existe pas, je dois faire une nouvelle insertion

    Je sais pas comment je dois mettre ce process ? en Php ou requete mysql ?

    Si vous avez des solutions ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mars 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mars 2016
    Messages : 58
    Par défaut
    Bonjour

    il y a plusieurs maniere de proceder. Par exemple, Vous pouvez le faire via MySql à l'aide de la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT ... ON DUPLICATE KEY UPDATE
    http://dev.mysql.com/doc/refman/5.7/...duplicate.html

  3. #3
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 254
    Par défaut
    ok je vais essayer pour voir

  4. #4
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 254
    Par défaut
    Bonjour,

    dans ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lignetravaux_materiels_techniciens(bontravaux_id,materiel_id,technicien_id)
    la clé primaire est compose de (bontravaux_id,technicien_id) et il n'a qu'un seul index unique qui est (bontravaux_id,materiel_id,technicien_id)

    donc ici INSERT ... ON DUPLICATE KEY UPDATE risque de ne pas fonctionner

    Ce qu'il me faut je pense c'est Effectuer une requête vérifiant l'existence de l'id dans ta table.?

    je rappelle bontravaux_id,materiel_id,technicien_id sont chacune aussi des clés étrangères

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 883
    Par défaut
    Salut serigne.

    Pour votre problème, la solution préconisée par sqllm est correcte.
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `lignetravaux_materiels_techniciens`
    --------------
     
    --------------
    CREATE TABLE `lignetravaux_materiels_techniciens`
    ( `bontravaux_id`  integer unsigned  NOT NULL,
      `materiel_id`    integer unsigned  NOT NULL,
      `technicien_id`  integer unsigned  NOT NULL,
      `val`            varchar(255)      NOT NULL,
      PRIMARY KEY (`bontravaux_id`,`materiel_id`,`technicien_id`)
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `lignetravaux_materiels_techniciens` (`bontravaux_id`,`materiel_id`,`technicien_id`,`val`) VALUES
      (1, 1, 1, 'un'),
      (1, 1, 2, 'deux'),
      (1, 2, 1, 'trois'),
      (1, 2, 2, 'quatre')
    --------------
     
    --------------
    select * from lignetravaux_materiels_techniciens
    --------------
     
    +---------------+-------------+---------------+--------+
    | bontravaux_id | materiel_id | technicien_id | val    |
    +---------------+-------------+---------------+--------+
    |             1 |           1 |             1 | un     |
    |             1 |           1 |             2 | deux   |
    |             1 |           2 |             1 | trois  |
    |             1 |           2 |             2 | quatre |
    +---------------+-------------+---------------+--------+
    --------------
    insert into `lignetravaux_materiels_techniciens` (`bontravaux_id`,`materiel_id`,`technicien_id`,`val`) value
      (1, 1, 1, '<-->'),(2, 1, 1, '<==>')
      on duplicate key update val = values(val)
    --------------
     
    --------------
    select * from lignetravaux_materiels_techniciens
    --------------
     
    +---------------+-------------+---------------+--------+
    | bontravaux_id | materiel_id | technicien_id | val    |
    +---------------+-------------+---------------+--------+
    |             1 |           1 |             1 | <-->   |
    |             1 |           1 |             2 | deux   |
    |             1 |           2 |             1 | trois  |
    |             1 |           2 |             2 | quatre |
    |             2 |           1 |             1 | <==>   |
    +---------------+-------------+---------------+--------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    Si la clef existe déjà, la colonne 'val' sera mise à jour, sinon, il y aura insertion d'une nouvelle ligne dans votre table.

    Ou bien, vous n'avez pas précisez plus précisément le problème que vous rencontrez. Le mieux est de faire le test par vous-même.

    @+

  6. #6
    Membre éclairé
    Inscrit en
    Août 2004
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 254
    Par défaut
    Bonjour, j'ai trouve la solution par pdo via mysql "PDOStatement::fetchColumn() ici
    http://php.net/manual/fr/pdostatement.rowcount.php

    Merci a tous

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

Discussions similaires

  1. Parcourir, modifier et mettre a jour une table
    Par kemiolek dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/05/2008, 11h39
  2. Réponses: 2
    Dernier message: 03/05/2008, 09h07
  3. [VB6]Mettre à jour une table avec les valeurs d'une DATAGrid
    Par mbzhackers dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/05/2006, 20h56
  4. Réponses: 2
    Dernier message: 02/05/2006, 09h50
  5. Mettre à jour une table depuis une autre
    Par snubi dans le forum Access
    Réponses: 1
    Dernier message: 20/04/2006, 19h28

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