• User

    Come esportare solo un campo di una tabella.

    Ho due database strutturati nello stesso modo, stesse tabelle e stessi campi.
    Ognuno gestisce un sito ecommerce, vorrei che il campo _quantity della tabella prodotto sia sempre lo stesso sia nell'uno che nell'altro database.

    L'unico metodo che mi è venuto in mente è, se è possibile, esportare solo il campo _quantity e importarlo nell'altro database, ma non so come si fa.

    Qualcuno saprebbe aiutarmi?


  • Super User

    Puoi utilizzare diversi metodi, ne elenco due:

    • Utilizzare uno script che viene richiamato via crontab che sincronizza il campo.
      Svantaggi: aggiorna ogni tot minuti, lo script viene richiamato ogni tot minuti aumentando il carico sul server
    • Modificare i due siti in modo tale che ad ogni aggiornamento del campo viene aggiornato anche l'altro database. Puoi utilizzare un webservice per il primo sito da richiamare ad ogni modifica eseguita nel secondo e viceversa.
      Vantaggi: aggiorna in real time, l'aggiornamento avviene on demand

  • User

    Ti ringrazio per i suggerimenti, anche se, con le mie conoscenze non so proprio quali modifiche apportare per fare quello che hai detto al punto 2)...sarebbe la soluzione ideale, ma come faccio a rendere il campo "quantità" comune ai due database?


  • Super User

    @zklid said:

    Ti ringrazio per i suggerimenti, anche se, con le mie conoscenze non so proprio quali modifiche apportare per fare quello che hai detto al punto 2)...sarebbe la soluzione ideale, ma come faccio a rendere il campo "quantità" comune ai due database?

    I siti di ecommerce sono stati realizzati da te oppure con un cms?
    Ti faccio un esempio, ma anzichè un webservice utilizziamo un semplice script php

    In ogni punto del codice in cui viene aggiornato il campo quantity dell'ecommerce1 potrei richiamare uno script presente in ecommerce2 per esempio utilizzando fsockopen

    
    <?php
    $fp = fsockopen("www.mioecommerce2.com", 80, $errno, $errstr, 30);
    if (!$fp) {
        echo "$errstr ($errno)<br />\n";
    } else {
        $out = "GET /aggiornaquantita.php?id=id_da_aggiornare&quantita=nuova quantita HTTP/1.1\r\n";
        $out .= "Host: www.mioecommerce2.com\r\n";
        $out .= "Connection: Close\r\n\r\n";
        fwrite($fp, $out);
        
        fclose($fp);
    }
    ?>
    
    

    aggiornaquantita.php , presente in mioecommerce2 non fa altro che prendere i dati via get ed aggiornare la quantità dell'id in questione

    Viceversa, ecommerce1 con ecommerce2

    Dovresti effettuare delle prove in locale oppure se preferisci anche in remoto, magari creando due tabelle per il test in modo tale da non intaccare il database originario.

    Su internet trovi molte informazioni sia con il metodo sopra proposto, che potresti anche proteggere con password, sia con i webservice (ti consiglio la classe nuSOAP)