Visualizzazione risultati 1 fino 13 di 13

Discussione: Aggiornare query ogni TOT [PHP/JS]

  1. #1
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Question Aggiornare query ogni TOT [PHP/JS]

    Un saluto a tutti!
    Avrei bisogno di uno script che prende i risultati da una tabella e li aggiorni ogni 10 secondi (ad esempio).
    Ho provato a cercare ma ho trovato soltanto risultati che vengono presi da altre pagine, e io dovrei fare tutto in una pagina.
    Devo mostrarvi il codice PHP?
    Grazie.

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Bhe.. se la tabella si trova in mysql la vedo difficile gestirla con il js, in quando non può lavorare su queste cose con il Javascript, essendo un linguaggio lato client.

    Può sempre, in js, eseguire una richiesta ajax ogni tot di secondi, esegui ad esempio una richiesta ajax, all'interno di una funzione creata da te, tramite la funzione setInterval(), se mai cerca su google come fare le richieste ajax, se ti vuoi semplificare la vita è vuoi fare una cosa cross-browser ( supportata su più browser ), utilizza il jQuery.

    Per il resto dovresti far recuperare i dati da uno script php, che dovresti richiamare tramite la richiesta ajax ogni tot secondi, ma per il php c'è un forum specifico.

    Sevenjeak
    Software developer and much more

  3. #3
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ciao e grazie per la risposta.
    Il PHP lo conosco perfettamente e non è quello il mio problema...
    Volevo soltanto avere qualche idea su come sistemare il codice.
    Avevo pensato a setInterval, ma non avevo (e non ho) idea su come sistemarlo all'interno dello script.

  4. #4
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Non sono sicuro di aver capito ciò che ti serve.
    Tu hai una pagina riportante un dato o più, e vuoi che questo venga aggiornato in tempo reale ottenendolo ad intervalli regolari dal server?

    In tal caso ti serve sì, una sistema che ti permetta di eseguire questa richiesta al server ad intervalli regolari, setInterval è la funzione adatta, e ti serve anche un oggetto XHMLHttpRequest per effettuare la richiesta al server che verrà analizzata e i dati contenuti in essa sostituiti nella pagina.

    Per scegliere il modo di incapsulare i dati nella richiesta HTTP, è necessario sapere di che dati si trattano, comunque dovrebbe andare più che bene la codifica JSON.

  5. #5
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ciao, il codice servirebbe ad aggiornare ogni TOT secondi la mia classifica musicale.
    Non vorrei utilizzare frame per evitare che qualcuno possa "rubarla".
    Ho provato a cercare qualche guida su XMLHttpRequest ma non ci ho capito molto.
    Potresti magari guidarmi verso la soluzione?
    Grazie mille.

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,753

    Predefinito

    Citazione Originalmente inviato da radiodelmomento Visualizza messaggio
    Ho provato a cercare qualche guida su XMLHttpRequest ma non ci ho capito molto.
    Mi sembra che sul tuo sito hai già incluso jQuery per altre cose, quindi perché non sfruttarlo usando le funzioni ajax di jQuery?

    Ciao!

  7. #7
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Sì, ho già aggiunto jQuery ed Ajax, ma non riesco ad arrivare ad una soluzione...
    Potrei mettere tutte le canzoni in una pagina, richiamarla ogni TOT e sostituire tutti i dati precedenti con i nuovi.
    Per quanto riguarda il fatto che le persone mi potrebbero rubare la classifica nella pagina dei risultati potrei mettere un controllo in PHP che vede se la pagina precedente è quella del mio sito...
    Si può fare?
    Grazie mille!!!

  8. #8
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,769

    Predefinito

    Quello che vuoi te si può fare, ma basta che nel tuo sito non riproduci le canzoni in classifica, altrimenti, rischi di violare i diritti d'autore, sempre se non li hai, ma questo credo che ti conviene dirlo nella sessione del php, visto che da quello che ho letto te vuoi farlo in php.

    Per quando riguarda Ajax, Ajax non è una cosa da includere / aggiungere, è una tecnica per la comunicazione usata in Javascript ( o se preferisci in jQuery ), dai un'occhiata qui

    http://it.wikipedia.org/wiki/AJAX

    Se vuoi usare jQuery, mi pare la scelta più giusta, anche perché crea codice javascript cross-browser ( supportato da tutti i browser ), cosa che ne hai bisogni utilizzando ajax ( vedi il paragrafo pro e contro dal link qui sopra ) ed è meno complicato da imparare, dai un'occhiata ala pagina della guida, presente su html.it, che parla di come usare Ajax in jQuery:

    http://javascript.html.it/guide/lezi.../ajax-di-base/

    O direttamente alla documentazione ufficiale:

    http://api.jquery.com/jQuery.ajax/

    P.S.: Poi, quando hai creato la tua funzione, che fa quello che te indenti fare, eseguila a intervalli di tempo utilizzando la funzione setInterval(), da me detta nella prima risposta. ( la funzione setInterval(), la spiega nella pagina successiva a quella postata da me, per sbaglio o postato la pagina prima )
    Ultima modifica di sevenjeak : 22-01-2012 alle ore 12.05.29

    Sevenjeak
    Software developer and much more

  9. #9
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ciao, quando ho creato la classifica in AJAX insieme a questo forum ho imparato come funziona, per cui le cose di base le so.

    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    Quello che vuoi te si può fare, ma basta che nel tuo sito non riproduci le canzoni in classifica, altrimenti, rischi di violare i diritti d'autore, sempre se non li hai, ma questo credo che ti conviene dirlo nella sessione del php, visto che da quello che ho letto te vuoi farlo in php.
    Lasciando stare i diritti d'autore (le canzoni vengono riprodotte tramite il player di YouTube, quindi legalmente), io vorrei aggiornare la TUTTA la classifica perché se ad esempio ci sono una canzone con 50 voti e una con 51, e quella con 50 voti ne guadagna 2 dovrà salire di posizione, cosa che per ora non accade: infatti quando un utente vota aggiungo 1 voto alla canzone che ha votato, quindi se è a pari merito con un'altra e alfabeticamente viene dopo, quando l'utente voterà la canzone non salirà di posizione, ma resterà alla sua posizione nonostante abbia 1 voto in più.

    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    Per quando riguarda Ajax, Ajax non è una cosa da includere / aggiungere, è una tecnica per la comunicazione usata in Javascript ( o se preferisci in jQuery )
    Beh, però per poter usare questa tecnica devi "includere / aggiungere" un file in JS.


    Citazione Originalmente inviato da sevenjeak Visualizza messaggio
    Poi, quando hai creato la tua funzione, che fa quello che te indenti fare, eseguila a intervalli di tempo utilizzando la funzione setInterval()
    È questo il mio problema: creare la funzione!

    Con le sessioni penso che sia un metodo un po' obsoleto...
    Non si potrebbe invece fare nel mio modo?
    mettere tutte le canzoni in Pagina.php, richiamarla ogni TOT e sostituire tutti i dati che ci sono in Classifica.php con i nuovi
    Io posso iniziare a creare Pagina.php, ma mi servirebbe un aiuto in JS.

    Grazie a tutti!
    Ultima modifica di radiodelmomento : 22-01-2012 alle ore 15.18.43

  10. #10
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Per scegliere il modo di incapsulare i dati nella richiesta HTTP, è necessario sapere di che dati si trattano, comunque dovrebbe andare più che bene la codifica JSON.
    Anzitutto devi scegliere come inviare i dati, la scelta la devi effettuare in base al tipo di dati. Potresti per esempio inviare semplicemente la porzione di codice HTML da aggiornare o inviare i dati in maniera più astratta permettendo una maggiore flessibilità (io ti consiglierei quest'ultima).
    Per quanto riguarda il furto dei dati, non è possibile fermarlo, poiché per quanto tu possa includere controlli sulle tue pagine, sarà sempre impossibile distinguere un normale visitatore da un server remoto che scarica la pagina per ottenere i dati della classifica.

  11. #11
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Ciao, avevo pensato al seguente sistema: richiamo Pagina.php?id=[id canzone] quindi cerco nel database la canzone con quell'id; a questo punto ricavo, tramite exit(dati), i vari dati di quella canzone e faccio lo stesso con tutta la classifica. Una volta ricavati tutti i dati aggiorno la classifica con i nuovi dati.
    Prima di iniziare a progettare vorrei chiedervi se è un metodo corretto o si può fare di meglio.
    Grazie a tutti!

  12. #12
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,745

    Predefinito

    Se devi aggiornare tutta una classifica, allora chiedila in blocco al tuo script sul server, è dispendioso in termini di risorse e prestazioni effettuare l'aggiornamento elemento per elemento.

    Per darti un'idea, il tuo metodo sarebbe così:
    Client: Mi manderesti le informazioni relative alla canzone con id 1?
    Server: Sì, eccole: [...]
    Client: Mi manderesti le informazioni relative alla canzone con id 2?
    Server: Sì, eccole: [...]
    Client: Mi manderesti le informazioni relative alla canzone con id 3?
    Server: Sì, eccole: [...]
    Client: Mi manderesti le informazioni relative alla canzone con id 4?
    Server: Sì, eccole: [...]
    Invece è decisamente meglio una richiesta ed una risposta:
    Client: Mi manderesti gli aggiornamenti della classifica?
    Server: Sì, ecco qui: [...]
    Ricorda che per ogni richiesta è necessario instaurare una connessione TCP/IP e assieme all'indirizzo richiesto e agli eventuali dati inviati tramite il metodo POST ci sono diverse informazioni che il client invia al server (header), e analogamente il server risponde alla richiesta inviando oltre il contenuto tutta una serie di informazioni correlate. Quindi è sempre meglio limitare il numero di richieste effettuate al server.

  13. #13
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie per la risposta.
    Il problema è: come potrei sistemare la classifica in modo da fare un'unica richiesta?
    Richiamando la pagina ed avere i dati tramite exit(dati) non mi sembra un buon metodo...

Regole di scrittura

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