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 :

Requête particulière UPDATE sur deux serveurs


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 52
    Par défaut Requête particulière UPDATE sur deux serveurs
    Bonjour à tous,

    Alors voilà j'aimerai faire un petit script pour mettre à jour une table d'une base de données locale avec une table de mon serveur distant.

    J'exécuterai ce script sur mon serveur distant, j'ai donc accès en lecture/écriture à ces deux bases depuis ce serveur.

    Les deux tables concernées sont strictement identiques.
    Je ne métrai à jour à chaque fois que les nouvelles entrées (celles qui ne figurent pas dans la table locale, en me basant sur le numéro ID je pense)

    Avez vous une idée de la syntaxe que ma requête pourrait avoir, je n'ai jamais fait ce genre de truc ?

    En gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Connexion base1(hebergeur, donc "local" par rapport au script)
    Connexion base2 (distant (chez moi))
     
    UPDATE table.base2 
    AVEC les données de table.base1
    LORSQUE ID.base1 inexistante dans table.base2
    Voilà, si vous avez besoin de plus de précision n'hésitez pas à me le notifier

    Cordialement,
    Romain

  2. #2
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 52
    Par défaut
    Bonjour,

    Je vous fait part de mon avancée, j'ai "dégrossis" le script : j'ai créé les connexion aux deux bases sur les deux serveurs, fait des requêtes de test dans les deux sens et tout fonctionne bien.
    Le plus dur maintenant, les requête (avec un semblant de traitement de données)

    Logiquement, il devrait y avoir trois requête :
    1. On selectionne toute les données de la table 1
    2. On ajoute les nouvelles données encore non présentes dans la table 2
    3. On met à jour les données de la table 2 qui ont été modifiées


    Donc j'en suis ici:

    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
    // Selection des données sur serveur distant
    $query = "SELECT * FROM liste_dif"; 
    $which = $paramsdistant; 
    $resultat = mysql_query($query, $which); 
     
     
    // Ajout des données sur le serveur local
    $query = "INSERT INTO liste_dif VALUES('','','','') WHERE "; 
    $which = $paramslocal; 
    $resultat = mysql_query($query, $which);
     
     
    // MAJ des données sur le serveur local
    $query = "UPDATE liste_dif SET ID='', mail='' nom='', statut='' WHERE "; 
    $which = $paramslocal; 
    $resultat = mysql_query($query, $which);
    Normalement la requête 1 est OK (à part si on veut extraire seulement ce qui est nouveau et ce qui a changé, mais la on modifie l'ordre des requêtes)

    Pouvez vous donc m'aider pour les deux autres requêtes s'il vous plaît ? la difficulté c'est la manipulation et le contrôle des données pour moi :s

    Merci !

  3. #3
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    J'essaye de résumer ce que j'ai compris du problème ne te proposant une solution.

    Tu disposes de deux tables identiques (table1 et table2). Tu veux compléter la table2 avec les données n'existant que dans la table1.
    Pour moi tu peux procéder en deux requêtes seulement, je ne vois pas trop l'utilité de l'update...

    Sélection des données de la table1 n'existant pas dans la table2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM table1
    LEFT JOIN table2 USING (id_commun)
    WHERE table2.id_commun IS NULL
    Insérer les données sélectionnées dans la tables2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO table2 ....
    A toi de construire l'insert comme il faut.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 52
    Par défaut
    Alors deux choses:

    L'update, c'est pour les données de la tables 1 qui pourraient être amenées à être modifiées, il faudrait alors modifier celles de la table 2 en conséquence.

    Le plus gros points, c'est que ces deux tables ne sont pas dans la même base de données, et encore pire pas sur le même serveur.

    J'ai donc fais dans mon script les deux connexions et des tests de requêtes tout fonctionne bien, le truc maintenant c'est qu'il faut stocker les résultats du premier SELECT dans une variable et les injecter deux les deux requêtes suivantes, mais là je rame un peu.

  5. #5
    Membre chevronné Avatar de nounetmasque
    Inscrit en
    Janvier 2003
    Messages
    494
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 494
    Par défaut
    Je dois vraiment avoir du mal à comprendre le problème.

    L'algorithme que tu proposes semble correct puisque ta première étape consiste à sélectionner les données de la table1 et cela fonctionne.
    La deuxième étape est de mettre à jour les données de la table2 avec les informations de la première étape.

    Pourquoi ne pas parcourir les résultats de ton premier SELECT en PHP avec un foreach et construire dynamiquement ta requête UPDATE. Je ne vois pas l'utilité de stocker dans une variable les données de la première étapes

  6. #6
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 52
    Par défaut
    ça partait peut être tout bête pour toi mais pour moi ça ne l'est pas.

    Je sais bien ce qu'il faut faire, mais je ne sais pas pas l'appliquer, je suis limité en langage PHP/MySQL et je n'ai jamais utilisé de foreach :/

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/02/2008, 09h12
  2. Requetes multi-bases sur deux serveurs differents ?
    Par romainp dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 01/08/2007, 20h22
  3. SSO tomcat et php sur deux serveurs distincts
    Par vincinou dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 05/06/2007, 15h40
  4. Réponses: 7
    Dernier message: 16/03/2007, 14h53

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