Visualizzazione risultati 1 fino 29 di 29
Like Tree1Likes
  • 1 Post By portier

Discussione: database locale

  1. #1
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Wink database locale

    Salve a tutti.
    Ho un quesito da esporre in questa nuova discussione. Il mio sito fatto su AV ha il problema che, dove viene utilizzato, la connessione a internet è troppo lenta, creando disagi e difficoltà operative.
    Allora in attesa che in un prossimo futuro (molto incerto) venga adeguata la linea adsl alle esigenze del sito, ho installato il sito anche su un pc in locale.
    Mi sarebbe piaciuto a questo punto poter tenere allineati i due server. Magari che 1 volta alla settimana fossero inviati i dati nuovi, ma a quanto ho letto su questo forum non credo sia possibile. E' giusto ?
    Quindi non posso neanche ipotizzare che AV vada a leggersi i dati sul database in remoto per prelevarli in qualche modo.
    Grazie e saluti a tutti

  2. #2
    Guest

    Predefinito

    In generale si puo , soprattutto se ti basta in una direzione
    La connessione seppur lenta pero deve essere il più possibile garantita
    Ultima modifica di FormularioDiDrakensang : 30-10-2014 alle ore 13.32.21

  3. #3
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    La connessione è garantita 24h su 24h.
    Puoi spiegarti meglio ? Come potrei fare ?
    Grazie.

  4. #4
    Guest

    Predefinito

    Afaik av non supporta il meccanismo di replica di sql
    Ma puoi facilmente risolvere
    Ovvero sul sito locale aggiungi una riga che richiama uno script sul sito da sincronizzare ad on modifica

    Passando la modifica





    Esempio

    Inserisci.php sul sito locale
    Dove hai qualcosa come $query = "insert ...";
    $syncme = base64encode($query)
    Con curl invii con metodo post $syncme a tuo sito/sincronizza.php

    Sincronizza.php legge $sync e chiama la query

  5. #5
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Citazione Originalmente inviato da FormularioDiDrakensang Visualizza messaggio
    Afaik av non supporta il meccanismo di replica di sql
    Ma puoi facilmente risolvere
    Ovvero sul sito locale aggiungi una riga che richiama uno script sul sito da sincronizzare ad on modifica

    Passando la modifica





    Esempio

    Inserisci.php sul sito locale
    Dove hai qualcosa come $query = "insert ...";
    $syncme = base64encode($query)
    Con curl invii con metodo post $syncme a tuo sito/sincronizza.php

    Sincronizza.php legge $sync e chiama la query
    Non ho capito bene. Non ho mai usato curl e sono disorientato.
    Nel caso specifico (file sul pc in remoto):
    Codice PHP:
    $query = "INSERT INTO elenco (SalaStudio, data_odierna, ora_e) VALUES ('$id',NOW(),'$ora')";
    $syncme = base64encode($query) ;
    Su Av invece cosa dovrei fare ?
    Grazie

  6. #6
    Guest

    Predefinito

    curl:
    //dopo le righe di prima
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "www.miosito.com/sync.php");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_POST, 1);
    curl_setopt($ch,CURLOPT_POSTFIELDS, "synchme=$synchme");
    $output = curl_exec($ch);
    curl_close($ch);

    su AV:
    sync.php
    $synchme = $_POST['synchme'];
    $synchme = base64_decode($syncme);
    mysql_query ( $con, $synchme );



    ---
    nota: sopra base64_encode non base64encode mi è scappato un _
    Ultima modifica di FormularioDiDrakensang : 31-10-2014 alle ore 13.10.21

  7. #7
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie veramente di cuore FormularioDiDrakensang. Il tuo aiuto mi è prezioso.
    Adesso però, prima di provare il tuo suggerimento, devo risolvere un altro problema più urgente.
    Devo esportare i risultati della giornata in excel.
    Sul AV il file preparato funziona, nel pc del lavoro invece NO.

    lo script utilizzato su AV e nel PC è:
    Codice PHP:
    <? $filename="visite.xls";
    header ("Content-Type: application/vnd.ms-excel");
    header ("Content-Disposition: inline; filename=$filename"); ?>
    Sul pc, però non esporta in file in excel, ma mi visualizza una nuova pagina con la tabella dei risultati.
    Praticamente sembra non considerare l'istruzione inserita.
    Non capisco perchè. Come posso risolvere questo imprevisto.
    Qualcuno sa darmi una dritta ?
    Grazie

  8. #8
    Guest

    Predefinito

    quel codice non 'esporta' :)

    è paragonabile al piu' a un link al file $filename

    un po come cliccare un link fatto con <a href=$filename>$filename</a>

    il fatto che aggiungi il tipo MIME nell'header fa si che SE quel tipo è associato a un programma (Excel) il browser visualizza apri con excel

    se il browser hai qc plugin per leggere fogli xls, questi verranno aperti nella stessa pagina

    se la richiesta è come si esporta, il modo piu' semplice è CSV non XLS

    se invece hai già scritto o trovato un buon convertitore verso XLS e il problema è di altro tipo avrei bisogno di sapere qual è il problema
    Ultima modifica di FormularioDiDrakensang : 01-11-2014 alle ore 18.25.31

  9. #9
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie del veloce e preciso intervento.
    Quindi sicuramente il browser ha un plug-in per leggere i fogli xls (uso chrome).
    Però resta il fatto che dal portale di AV mi salva il file e il browser è sempre quello.
    Va be, non voglio creare una discussione.
    Se dici che il modo più semplice è farlo in csv, come dovrei cambiare quelle impostazioni ?
    Grazie per la tua disponibilità e pazienza.

  10. #10
    Guest

    Predefinito

    beh no sei già converti in modo opportuno in xls, questo va bene non ho capito invece cosa non funziona tra pc casa e ufficio

    mentre l'altro suggerimento:
    CSV è testo semplice separato con , ; o altro
    cio' permette di passare da una tabella

    <table>
    <TR><td>aqualcosa</td><td>aqualcosa2</td></TR>
    <TR><td>bqualcosa</td><td>bqualcosa2</td></TR>
    </table>

    e un foglio excel senza fatica
    doc.csv

    aqualcosa;aqualcosa2
    bqualcosa;bqualcosa2

    che puo' essere aperto da excel

  11. #11
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Vorrei che nel PC, dove il sito gira solo localmente, si potesse salvare un file per excel, come posso fare sul sito gemello installato su AV. Cioè nel sito AV, quindi collegandomi via web, riesco a salvare un file in xls, mentre con lo stesso sito, ma fatto girare in locale sul PC, mi apre una nuova pagina in php e visualizza la tabella senza salvarla. Devo ottenere invece lo stesso comportamento che ho su AV.

    Scusami se non sono stato chiaro. A volte è fatica spiegarsi bene solo per email.

  12. #12
    Guest

    Predefinito

    ok sul sito locale prova

    scaricami.php
    $file = "qualcosa.xls";
    header('Content-Description: File Transfer');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
    crea un foglio di excel 'qualcosa.xls' e prova il codice sopra nel sito locale e vedi se cosi' scarica

  13. #13
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    No, purtroppo. Mi apre ancora una nuova pagina con la tabella.
    Ho provato anche a disabilitare dalle estensioni "Fogli Google" (Crea e modifica fogli di lavoro). Magari poteva essere questo che dava fastidio e interpretava in automatico il file, invece non è cambiato niente.

  14. #14
    Guest

    Predefinito

    beh che sia opera di estensione/plugin non ci piove
    prova a cambiare application/vnd.ms-excel con octet-stream

  15. #15
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    ... spiegati meglio. Non so come fare quello che mi suggerisci.

  16. #16
    Guest

    Predefinito

    intendo cambiare questa riga
    header('Content-Type: application/vnd.ms-excel');
    in header('Content-Type: application/octet-stream');

  17. #17
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Ah, grazie. Non avevo capito.
    Purtroppo anche così presenta sempre lo stesso problema.

  18. #18
    Guest

    Predefinito

    immagino tu abbia provato tutti i browser giusto ?

  19. #19
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    No. In ufficio abbiamo solo chrome e explorer. E con questi due ho lo stesso risultato negativo.

  20. #20
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie per oggi. Ci sentiamo domani se sei disponibile. Buona serata

  21. #21
    Guest

    Predefinito

    Sono sempre qui , solo come dicevo non è un problema del sito ma del browser
    dovresti comunque poter salvare la tabella che ricevi (CTRL-S) o File-Salva con nome

    altrimenti nel sito devi, al posto dell'invio come allegato, usare un semplice link al file generato
    cioe' al posto di tutto il codice header ecc.
    stampare solo "<a href = questoèilfile.xls>Descrizione del file</a>"
    cosi' l'utente potra cliccare con il tasto destro e scegliere salva con nome, o aprirlo al semplice click

  22. #22
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    OK. Grazie mille.
    Non riesco proprio, però ho salvato la tabella come mi hai detto.

    Per la cronaca, ho provato a casa con il mio PC, questa soluzione:
    Codice PHP:
    <?php
    header
    ("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: inline; filename=dati.xls");
    ?>
    e in questo modo funzionava. Invece qui in ufficio, niente.
    Che caspiterina. Speravo di aver trovato la soluzione.
    Comunque con il tuo suggerimento salvo ugualmente il file.
    Grazie.

    Il resto "oggetto" della discussione, lo esperimento i prossimi giorni, anche se non ho capito bene come funziona.
    In teoria, quando compio un'operazione di INSERT - UPDATE - DELETE in contemporanea vengono inviate le informazioni su AV ?

  23. #23
    Guest

    Predefinito

    in quel modo si
    in particolare il codice di sincronia va inserito in tutti gli script che effettuano operazioni

    prima o dopo dell'operazione stessa non importa

    se le operazioni dovessero essere molte o la connettività non garantita è possibile creare una sorta di coda di operazioni da effettuare appena possibile e ritentare in caso di fallimento

    dicevo all'inizio questo tipo di 'sincronia' è 'di fabbrica in sql', le banche per esempio replicano su decine di macchine sparse per il pianeta
    ma che io ricordi su AV non è possibile usarla, non in modalità gratis quantomeno
    Ultima modifica di FormularioDiDrakensang : 02-11-2014 alle ore 18.13.19

  24. #24
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Come "prima o dopo dell'operazione non importa" ?
    Avevo capito che andavano dopo:
    $query = "insert ...
    Meglio così però.

    Ho provato ha mettere il codice indicato, ma non ho ottenuto niente.
    Premetto che, come già dicevo, la connessione a volte è molto lenta.

    Forse ho sbagliato qualcosa ?
    Su AV ho fatto solo il file sync.php con le tre righe che mi hai dato.
    Codice PHP:
    <? php
    $synchme
    = $_POST['synchme'];
    $synchme = base64_decode($syncme);
    mysql_query ( $con, $synchme );
    ?>
    Forse ci vanno anche i dati di connessione al db ?
    Nel PC in locale invece ho messo l'altra parte.

  25. #25
    Guest

    Predefinito

    considero operazione il momento in cui chiami mysql_query per eseguire le istruzioni
    ovvio
    che scrivere
    $synchme = base64_encode($query)
    $query = "qualcosa";
    è sbagliato

    mentre:
    $query = "qualcosa";
    mysql_query($query);
    $synchme = base64_encode($query);
    o
    $query = "qualcosa";
    $synchme = base64_encode($query);
    mysql_query($query);
    vanno bene

    parte AV, si se usi mysql_query con il parametro di connessione e non è definito, non puo' funzionare :)

    da notare che quando scrivo del codice è non vedi i tag php non è per pigrizia, vuol dire che quella è una parte del codice
    i 'dettagli' come le connessioni al db ecc. sono impliciti

    in questo caso la porzione di codice codifica la query in base 64 per evitare fin da subito un po di noie e la inoltra al sito, che ricevuta la decodifica e la esegue
    Ultima modifica di FormularioDiDrakensang : 03-11-2014 alle ore 20.37.45

  26. #26
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Ciao, hai cambiato l'avatar ... l'Italia capovolta. Simpatico.
    Tornando al mio discorso, stamattina ho riprovato.
    Per curiosità ho messo nell'indirizzo del browser la pagina dove dovrebbe essere indirizzato l'aggiornamento.
    Cioè
    curl_setopt($ch, CURLOPT_URL, "http://portier.altervista.org/sync.php");
    Mi evidenzia questo errore:
    Parse error: syntax error, unexpected T_INCLUDE in /membri/portier/sync.php on line 2
    Come che il comando include non fosse buono. Ma io lo uso tranquillamente, ci sono le informazioni di collegamenteo al db.
    Il listato comunque è:
    Codice PHP:
    <? php
    include("collega.php");

    $synchme = $_POST['synchme'];
    $synchme = base64_decode($syncme);
    mysql_query ( $con, $synchme );
    ?>
    Come mai ?

  27. #27
    Guest

    Predefinito

    c'è uno spazio tra <? e php se non lo togli php non prosegue l'elaborazione
    Ultima modifica di FormularioDiDrakensang : 05-11-2014 alle ore 13.02.55

  28. #28
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Citazione Originalmente inviato da FormularioDiDrakensang Visualizza messaggio
    c'è uno spazio tra <? e php se non lo togli php non prosegue l'elaborazione
    Ops ... grazie. Che svista. Adesso non mi da errore il file sync.php su AV.
    Sabato provo meglio. Grazie ancora. Buona serata

  29. #29
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Ho provato, ma sembra non dare nessun risultato.

    Come potrei altrimenti prendere i dati del giorno che m'interessa e passarli su altervista ?
    Grazie

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •