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 :

Synchro mysql de deux tables


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Cabinet du Ministre Jean-Marc Nollet & du Ministre Philippe Henry
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cabinet du Ministre Jean-Marc Nollet & du Ministre Philippe Henry
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Synchro mysql de deux tables
    Bonjour à tous,

    J'ai un petit soucis que j'arrive pas à résoudre.
    Je vous explique en gros :
    Au boulot il travail avec GLPI pour gérer les incidents informatique, l'inventaire du matos,... enfin bref ils l'utilisent.
    On m'a demandé de faire un espèce d'intranet pour les ressources humaines pour la gestion des jours de congé et autres. J'aimerais donc reprendre la table glpi_users dans ma db glpi et la synchronisée avec ma table grh_users de ma db grh. J'aimerais que cela se fasse automatiquement ou via un script php lancé par un bouton "Synchro" par exemple. J'ai fais pas mal de recherche mais je ne trouve pas vraiment ce que je cherche.

    Si vous avez une astuce, merci de me la faire parvenir

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Vil'Coyote
    Homme Profil pro
    Développeur adélia & Web
    Inscrit en
    Février 2008
    Messages
    4 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur adélia & Web
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 4 583
    Points : 7 503
    Points
    7 503
    Par défaut
    en natif mysql permet la synchronisation de base il faut modifier le mysql.conf pour définir une bae en maître et l'autre en esclave.

    http://dev.mysql.com/doc/refman/5.1/...ffengines.html

  3. #3
    Candidat au Club
    Homme Profil pro
    Cabinet du Ministre Jean-Marc Nollet & du Ministre Philippe Henry
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Cabinet du Ministre Jean-Marc Nollet & du Ministre Philippe Henry
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Ok je regarde de ce côté.
    J'ai trouvé un truc mais c'est pas vraiment le top niveau optimisation :
    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
     
    $query1 = "DROP TABLE IF EXISTS `grh`.`grh_users`;";
    $query2 = "CREATE TABLE `grh`.`grh_users` (
    `ID` int( 11 ) NOT NULL AUTO_INCREMENT ,
    `name` varchar( 255 ) COLLATE utf8_unicode_ci DEFAULT NULL ,
    `email` varchar( 255 ) COLLATE utf8_unicode_ci DEFAULT NULL ,
    `phone` varchar( 255 ) COLLATE utf8_unicode_ci DEFAULT NULL ,
    `phone2` varchar( 255 ) COLLATE utf8_unicode_ci DEFAULT NULL ,
    `mobile` varchar( 255 ) COLLATE utf8_unicode_ci DEFAULT NULL ,
    `realname` varchar( 255 ) COLLATE utf8_unicode_ci DEFAULT NULL ,
    `firstname` varchar( 255 ) COLLATE utf8_unicode_ci DEFAULT NULL ,
    PRIMARY KEY ( `ID` ) ,
    UNIQUE KEY `name` ( `name` )
    ) ENGINE = MYISAM DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci AUTO_INCREMENT =2;";
    $query3 = "INSERT INTO `grh`.`grh_users`
    	SELECT ID,name,email,phone,phone2,mobile,realname,firstname FROM `glpi`.`glpi_users`";
     
    $result1 = mysql_query($query1) or die(mysql_error());
    $result2 = mysql_query($query2) or die(mysql_error());
    $result3 = mysql_query($query3) or die(mysql_error());

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Il y a un truc que je ne comprends pas, c'est qu'au départ on pouvait croire que les BDD étaient sur des serveurs différents, mais vu ton exemples, toutes les Bdd sont sur le même serveur.

    Du coup, tu n'as pas vraiment besoin de synchroniser, de supprimer et recréer une table pour ça, suffit de désigner (aliaser si on peu dire) les tables selon leur Bdd, comme tu l'as fais dans ton exemple pour faire ce que tu veux.
    Plus de duplication (ou redondance) de données, avec tous les inconvénients qui vont avec.


    Une autre solution serait de créer une vue (VIEW).
    Ceci se fait 1 seule fois seulement, et une fois fait, il y a juste à exploiter la vue comme une table.
    On évite (voir à proscrire) de faire des mises à jours (insert-update-delete) car une vue est plus faite pour des consultations (des select).
    Cette solution me semble la plus adaptée dans ton cas.

Discussions similaires

  1. Insérer sur deux tables selon clé Mysql
    Par Ralfman68 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 15/12/2006, 12h19
  2. Réponses: 14
    Dernier message: 04/12/2006, 11h22
  3. Insertion croisée dans deux tables mysql
    Par tiger33 dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/09/2006, 08h55
  4. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  5. Interroger deux table mysql en php
    Par rane dans le forum Débuter
    Réponses: 3
    Dernier message: 13/03/2006, 13h31

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