Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    15

    Media dei valori prelevati da database Mysql

    Salve a tutti, da qualche tempo sto realizzando una stazione meteo ma continuo ad avere alcuni problemi dal lato PHP e Mysql(data la mia poca conoscenza di questi ultimi), ultimamente mi sono imbattuto nel seguente problema: devo creare una media di tutte le campionature della temperatura effettuate in una giornata. Il valore delle temperature � contenuto all'interno di una tabella intitolata "meteo", mentre io ho l'esigenza di inserire il valore della media all'interno di una tabella nominata "media". Sono riuscito a creare una query SQL che se inserita all'interno del mio database funziona egregiamente, ma svolge l'operazione una sola volta, mentre io devo svolgerla ogni giorno ad un determinato orario, per questo ho deciso di ricorrere ad una pagina PHP.

    codice:
    INSERT INTO media(`timestamp`,`Temperaturamediadeldi`) SELECT `time_stamp`, ROUND(AVG(temperatura),1) FROM meteo GROUP BY DATE(`time_stamp`)= CURDATE()
    Nel momento in cui vado ad incorporare la query nella pagina PHP, che gia utilizzo per caricare tutti i dati che vengono rilevati dalla mia stazione meteo, non mi viene inserito alcun valore all'interno della tabella. Qui sotto allego il codice che sto utilizzando.

    codice:
    if (date('H:i') == '16:31'){
      $query = "INSERT INTO $tabella10(`timestamp`,`Temperaturamediadeldi`) SELECT`time_stamp`,ROUND(AVG(temperatura),1) FROM $tabella GROUP BY DATE(`time_stamp`)=CURDATE()";
            $fetch = mysql_fetch_array($query);
    }
    Ringrazio in anticipo tutti quelli che mi cercheranno di aiutare

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Così non esegui nessuna query. Il comando è mysql_query($query). mysql_fetch_* servono per "ciclare" un eventuale recordset restituito da una query di select.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    15
    Quindi dovrei modificare il mio codice in questo modo affinche' mi carichi i dati all'interno della tabella?
    codice:
    mysql_query("INSERT INTO $tabella10(`timestamp`,`Temperaturamediadeldi`) SELECT `time_stamp`, ROUND(AVG(temperatura),1) FROM $tabella GROUP BY DATE(`time_stamp`)= CURDATE()");
    Ultima modifica di DavideCI; 17-02-2018 a 20:06

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Si, la sintassi giusta cmq è:
    Codice PHP:
    $result mysql_query("INSERT INTO ....");
    if(!
    $result){
       
    // Errore nel esecuzione della query

    PS, giusto per la cronaca: le funzioni mysql_* sono deprecate (e in PHP 7 sono stare eliminate), quindi valuta l'idea di passare a mysqli o pdo. Se poi è un progetto tuo su server privato tuo allora puoi fare come vuoi

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    15
    Grazie per l'informazione, si per ora il progetto e' per un mio server privato. Ho inserito la sintassi esattamente come me l'hai detta te ed ha funzionato, peccato che mi ero dimenticato di togliere i commenti dalla if che mi fa svolgere la query solamente all'orario da me deciso, cosi ho eliminato i due record che mi aveva aggiunto nella tabella e ho riprovato il codice con la if, ma senza alcuna risposta, non riesco a capire dove sbaglio

    Codice PHP:
    if (date('H:i') == '11:43'){
          
    $result mysql_query("INSERT INTO $tabella10(`timestamp`,`Temperaturamediadeldi`) SELECT `time_stamp`, ROUND(AVG(temperatura),1) FROM $tabella GROUP BY DATE(`time_stamp`)");
          if(!
    $result){
       
    // Errore nel esecuzione della query
          
    }
        } 

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, ma così che fai, cerchi di richiamare la pagina esattamente alle 11:43 ?
    Se devi eseguire uno script periodicamente è molto meglio usare cron (linux) o operazioni pianificate (windows)

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    15
    Utilizzo il sito altervista per hostare il mio sito web, e avrei bisogno di far svolgere quell'operazione ad un determinato orario della giornata, per ora avevo utilizzato il metodo delle if per altre operazioni

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    E che fai se non ci va nessuno su quella pagina a quell'ora? Lo script non viene eseguito.
    Come ti ha detto boots devi usare cron se il server è Linux, operazioni pianificate se invece è Windows, ma dubito che Altervista ti metta a disposizione questi strumenti, chiedi a loro se puoi.

    Poi, visto che non stai usando un tuo server, passa a mysqli_ o PDO, altrimenti appena aggiornano a PHP7 non funzionerà più niente.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    776
    Al massimo potresti crearti una pagina che esegue questa operazione (che non ti restituisce niente, pagina bianca) ed effettuare sulla tua macchina l'apertura di questo link tutti i giorni ad una determinata ora con le operazioni pianificate.
    Ma il tuo computer deve essere acceso tutti i giorni a quell'ora!

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2017
    Messaggi
    15
    Però per utilizzare le operazioni pianificate di Windows è necessario che il pc sia acceso, o sbaglio? Mentre invece il mio sistema deve essere autonomo l'Arduino (il microcontrollore che utilizzo per comunicare con il mondo) è collegato direttamente al mio modem tramite WIFI e mediante l'invio di una stringa, successivamente interpretata da una pagina PHP in modo da caricare i vari dati sul mio database. Quindi non posso far svolgere delle operazioni programmate semplicemente con un sistema di If che confrontano l'orario del timestamp con un valore da me fornito?

    Scusami ma da come avrai ben capito di linguaggi di programmazione per il web non ne so nulla, quindi dovrei riscrivermi tutto il codice Mysql in Mysqli affinchè continui a funzionare in futuro?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.