[PHP] ESTRARRE DA DB VALORE MASSIMO E MINIMO IN UN INTERVALLO IMPOSTABILE A PIACERE

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
buondi programmatori! forte dei vostri consigli, ho riorganizzato il mio file come segue:
Codice:
<?php

require_once("config.php");
$con = mysqli_connect($server, $user, $pwd, $db);

$data1 = "2017-05-24 00:00";
$data2 = "2017-05-24 23:59";

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY TEMP DESC LIMIT 1";
$rismax = mysqli_query($con, $sql);
$riga_massima = mysqli_fetch_assoc($rismax);
$data_ora_max = $riga_massima['TIMESTAMP_LOCAL'];
$temp_max = $riga_massima['TEMP'];
$hum_max = $riga_massima['HUM'];
$pres_max = $riga_massima['PRESSURE'];
$vento_max = $riga_massima['WIND_AVE'];
$vento_max_gust = $riga_massima['WIND_GUST'];
$gg_h_max = explode(" ", $data_ora);

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY TEMP LIMIT 1";
$rismin = mysqli_query($con, $sql);
$riga_minima = mysqli_fetch_assoc($rismin);
$data_ora_min = $riga_minima['TIMESTAMP_LOCAL'];
$temp_min = $riga_minima['TEMP'];
$hum_min = $riga_minima['HUM'];
$pres_min = $riga_minima['PRESSURE'];
//se ti serve la data e l'ora e forse meglio perche potrest cercare nell'intevallo di più giorni
$gg_h = explode(" ", $data_ora);
?>

<!DOCTYPE html>
<html manifest="demo.manifest"><head><meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>estremi oggi</title>
</head>
<body bgcolor="silver">
<p><span style="font-family: verdana; font-size: 48px;">MINIMI E MASSIMI</span></p>
<p><span style="font-family: verdana; font-size: 44px;">del giorno <?php echo $data1; ?></span><p>
    <ul>
<br></br>

<li><p><span style="font-family: verdana; font-size: 40px;">TEMPERATURA</span></p>
<p><span style="font-family: verdana; font-size: 30px;">minima: <?php echo $temp_min; ?>°C alle ore</span></p>
<p><span style="font-family: verdana; font-size: 30px;">massima: <?php echo $temp_max; ?>°C alle ore </span></p></li>
<br></br>   

    <li><p><span style="font-family: verdana; font-size: 40px;">UMIDITA'</span></p>
<p><span style="font-family: verdana; font-size: 30px;">minima: <?php echo $hum_min; ?>% alle ore</span></p>
<p><span style="font-family: verdana; font-size: 30px;">massima: <?php echo $hum_max; ?>% alle ore</span></p>

<br></br>

<li><p><span style="font-family: verdana; font-size: 40px;">PRESSIONE</span></p>
<p><span style="font-family: verdana; font-size: 30px;">minima: <?php echo round($pres_min, 1); ?> mb alle ore</span></p>
<p><span style="font-family: verdana; font-size: 30px;">massima: <?php echo round($pres_max, 1); ?> mb alle ore</span></p>

<br></br>

<li><p><span style="font-family: verdana; font-size: 40px;">VENTO</span></p>
<p><span style="font-family: verdana; font-size: 30px;">intensita' massima: <?php echo floor($vento_max); ?> Km/h alle ore</span></p>
<p><span style="font-family: verdana; font-size: 30px;">punta massima: <?php echo round($vento_max_gust, 1); ?> Km/h alle ore</span></p>
</html>

ho aggiunto una query in più per i valori minimi e un po' di html per stampare i risultati (tra php e html, sono un po' meno ignorante di html :) )... potete vedere il risultato al seguente indirizzo:

http://www.meteolucignano.net/minmaxoggi1.php

i valori minimi e massimi sono esatti (ho controllato manualmente).. quello che ancora non mi è chiaro è la gestione degli orari relativi, in particolare la riga 18 ($gg_h_max = explode(" ", $data_ora). Per "distinguere" i risultati delle due query, ho aggiunto a "$ris" rispettivamente "max" e "min"... ditemi se ho fatto bene o male...
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
OK RAGAZZI! TUTTO FUNZIONANTE! POTETE CANCELLARE I MEX PRECEDENTI E VEDERE IL RISULTATO AL SOLITO INDIRIZZO DI PROVA

http://www.meteolucignano.net/minmaxoggi1.php

ho fatto una query per ogni valore (temp, umidità, pressione e vento), forse c'era uan scorciatoia, ma funziona!

Codice:
<?php

require_once("config.php");
$con = mysqli_connect($server, $user, $pwd, $db);

$data1 = "2017-05-24 00:00";
$data2 = "2017-05-24 23:59";

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY TEMP DESC LIMIT 1";
$rismax = mysqli_query($con, $sql);
$riga_massima = mysqli_fetch_assoc($rismax);
$temp_max_data_ora = $riga_massima['TIMESTAMP_LOCAL'];
$temp_max = $riga_massima['TEMP'];
$gg_temp_max = explode(" ", $temp_max_data_ora);

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY TEMP LIMIT 1";
$rismin = mysqli_query($con, $sql);
$riga_minima = mysqli_fetch_assoc($rismin);
$temp_min_data_ora = $riga_minima['TIMESTAMP_LOCAL'];
$temp_min = $riga_minima['TEMP'];
$gg_temp_min = explode(" ", $temp_min_data_ora);

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY HUM DESC LIMIT 1";
$rismax = mysqli_query($con, $sql);
$riga_massima = mysqli_fetch_assoc($rismax);
$hum_max_data_ora = $riga_massima['TIMESTAMP_LOCAL'];
$hum_max = $riga_massima['HUM'];
$gg_hum_max = explode(" ", $hum_max_data_ora);

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY HUM LIMIT 1";
$rismin = mysqli_query($con, $sql);
$riga_minima = mysqli_fetch_assoc($rismin);
$hum_min_data_ora = $riga_minima['TIMESTAMP_LOCAL'];
$hum_min = $riga_minima['HUM'];
$gg_hum_min = explode(" ", $hum_min_data_ora);

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY PRESSURE DESC LIMIT 1";
$rismax = mysqli_query($con, $sql);
$riga_massima = mysqli_fetch_assoc($rismax);
$pres_max_data_ora = $riga_massima['TIMESTAMP_LOCAL'];
$pres_max = $riga_massima['PRESSURE'];
$gg_pres_max = explode(" ", $pres_max_data_ora);

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY PRESSURE LIMIT 1";
$rismin = mysqli_query($con, $sql);
$riga_minima = mysqli_fetch_assoc($rismin);
$pres_min_data_ora = $riga_minima['TIMESTAMP_LOCAL'];
$pres_min = $riga_minima['PRESSURE'];
$gg_pres_min = explode(" ", $pres_min_data_ora);

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY WIND_AVE DESC LIMIT 1";
$rismax = mysqli_query($con, $sql);
$riga_massima = mysqli_fetch_assoc($rismax);
$wind_max_data_ora = $riga_massima['TIMESTAMP_LOCAL'];
$wind_max = $riga_massima['WIND_AVE'];
$gg_wind_max = explode(" ", $wind_max_data_ora);

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY WIND_GUST DESC LIMIT 1";
$rismin = mysqli_query($con, $sql);
$riga_minima = mysqli_fetch_assoc($rismin);
$wind_gust_max_data_ora = $riga_minima['TIMESTAMP_LOCAL'];
$wind_gust_max = $riga_minima['WIND_GUST'];
$gg_wind_gust_max = explode(" ", $wind_gust_max_data_ora);
?>

<!DOCTYPE html>
<html manifest="demo.manifest"><head><meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<title>estremi oggi</title>
</head>
<body bgcolor="silver">
<p><span style="font-family: verdana; font-size: 48px;">MINIMI E MASSIMI</span></p>
<p><span style="font-family: verdana; font-size: 44px;">del giorno <?php echo $data1; ?></span><p>
    <ul>
<br></br>

<li><p><span style="font-family: verdana; font-size: 40px;">TEMPERATURA</span></p>
<p><span style="font-family: verdana; font-size: 30px;">minima: <?php echo $temp_min; ?>°C alle ore <?php echo $temp_min_data_ora; ?></span></p>
<p><span style="font-family: verdana; font-size: 30px;">massima: <?php echo $temp_max; ?>°C alle ore <?php echo $temp_max_data_ora; ?></span></p></li>
<br></br>   

    <li><p><span style="font-family: verdana; font-size: 40px;">UMIDITA'</span></p>
<p><span style="font-family: verdana; font-size: 30px;">minima: <?php echo $hum_min; ?>% alle ore <?php echo $hum_min_data_ora; ?></span></p>
<p><span style="font-family: verdana; font-size: 30px;">massima: <?php echo $hum_max; ?>% alle ore <?php echo $hum_max_data_ora; ?></span></p>

<br></br>

<li><p><span style="font-family: verdana; font-size: 40px;">PRESSIONE</span></p>
<p><span style="font-family: verdana; font-size: 30px;">minima: <?php echo round($pres_min, 1); ?> mb alle ore <?php echo $pres_min_data_ora; ?></span></p>
<p><span style="font-family: verdana; font-size: 30px;">massima: <?php echo round($pres_max, 1); ?> mb alle ore <?php echo $pres_max_data_ora; ?></span></p>

<br></br>

<li><p><span style="font-family: verdana; font-size: 40px;">VENTO</span></p>
<p><span style="font-family: verdana; font-size: 30px;">intensita' massima: <?php echo floor($wind_max); ?> Km/h alle ore <?php echo $wind_max_data_ora; ?></span></p>
<p><span style="font-family: verdana; font-size: 30px;">punta massima: <?php echo floor($wind_gust_max); ?> Km/h alle ore  <?php echo $wind_gust_max_data_ora; ?></span></p>
</html>

adesso mi servirebbe togliere la data dalla data e ora di ogni valore (massimo e minimo) e anche lo 00:00 a destra della data in cima alla pagina (MINIMI E MASSIMI DEL GIORNO 2017-05-24 00:00) e magari poter trasformare la americana data (2017-05-24... quant'è brutta) in un più leggibile formato europeo: 24-05-2017, magari col giorno della settimana e col mese a lettere...

mercoledi 24 maggio 2017

sarebbe perfetto!!!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non so se funziona, ma prova questo script
ATTENTO nell'array metti i nomi giusti
PHP:
<?php
//connessione........
$nomi_campi=array('temperatura', 'pressione','vento');//da mettere i nomi dei campi esatti come sono in tabella

$data1 = $_POST['data_1']." 00:00";//o mettere direttamente i valori
$data2 = $_POST['data_2']." 23:59";
echo "nel periodo ".$_POST['data_1']." - ".$_POST['data_2']."<br>";//se i valori modificare
foreach($nomi_campi as $nome_campo){
    $sql = "SELECT MAX($nome_campo) as max, MIN($nome_campo) as min FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2'";
    $ris=mysqli_query($conn, $sql);
    $riga=mysqli_fetch_assoc($ris);
    $max[$nome_campo]=$riga['max'];
    $min[$nome_campo]=$riga['min'];
    //query per la ricerca ora del massimo
    $sql_max="SELECT data FROM meteo WHERE TIMESTAMP_LOCAL (between '$data1' and '$data2') and ($nome_campo=".$max[$nome_campo].") LIMIT 1";
    $ris_max=mysqli_query($conn, $sql_max);
    $riga_max=mysqli_fetch_assoc($ris_max);
    $data_max=explode(" ",$riga_max['TIMESTAMP_LOCAL']);
    $sql_min="SELECT data FROM meteo WHERE TIMESTAMP_LOCAL (between '$data1' and '$data2') and ($nome_campo=".$min[$nome_campo].") LIMIT 1";
    $ris_min=mysqli_query($conn, $sql_min);
    $riga_min=mysqli_fetch_assoc($ris_min);
    $data_min=explode(" ",$riga_min['TIMESTAMP_LOCAL']);
   
    echo "$nome_campo MAX ".$max[$nome_campo]."alle ore ".$data_max[1]." - MIN ".$min[$nome_campo]." alle ore ".$data_min[1]."<br>";
}
//....
?>
dovresti ottenere esempio un output simile a questo
nel periodo 2017-05-24 - 2017-05-24
temperatura MAX 37 alle ore 12:30 - MIN 21 alle ore 07:15
pressione MAX 10 alle ore 11:21 - MIN 9 alle ore 12:33
vento MAX 10 alle ore 15.38 - MIN 7 alle ore 18:20
provalo a parte se ti interessa
 
Ultima modifica:

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
MA CERTO CHE MI INTERESSA! piuttosto, al posto di "$nome_campo" devo mettere il nome esatto del campo in tabella (TEMP, HUM, etc..)...e al posto di "$nomi_campi"? cioè

foreach($nomi_campi as $nome_campo)

qui come li devo sostituire?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
nell'array
$nomi_campi=array('TEMP', 'HUM','....ecc...');
comunque verifica anche che non abbia fatto errori di battitura, es tra 'temperatura', 'pressione' avevo messo un . al posto della ,
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
mmm mi pare più complesso del mio script di prima... non c'è un modo per gestire la data e ora e stampare a video solo la data o solo l'ora?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao

se vuoi il MAX e il MIN devi comunque estrarre la data relativa al quel MAX e a quel MIN, esempio semplificato

se nella tua tabella hai ad esempio (tralascio la parte della data aa-mm-gg) e mi limito a due parametri

id---data------temperatura---vento
20---07:30---20-------------- 5
21---07:35---21---------------8
22---07:40---31---------------2
23---07:45---28-------------- 9
ecc…

ora se vuoi il massimo e il minimo della temperatura e del vento e la data o l’ora in cui si sono verificati devi estrarre

per temperatura massima (31) la data/ora -> 07:40 per la minima (20) la data/ora -> 07:30

analogamente per il vento massimo (9) -> 07:45, minimo (2) -> 07:40

come vedi per ogni max/min e parametro devi estrarre una data/ora e comunque o esplodi il valore del campo TIMESTAMP_LOCAL e quindi la dividi o la usi completa senza esploderla
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
$data_min=explode(" ",$riga_min['TIMESTAMP_LOCAL']);//esplode in funzione dello spazio aa-mm-dd hh:ii
$data_min[0] ->aa-mm-dd
$data_min[1] ->hh:ii
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
buondì a tutti! adesso tutto ottimamente funzionante! potete dare una occhiata all'indirizzo (definitivo)

http://www.meteolucignano.net/minmax_giorno_sel.php

che potete trovare navigando il sito

www.meteolucignano.net

ho aggiunto anche il valore della pioggia caduta all'interno della giornata (un gioco da ragazzi una volta capito il modo di impostare le query). Per ora è molto molto spartano, vedrò di migliorarlo nella grafica e di aggiungere altre pagine per interrogare in modo più "elastico" il DB; per ora è tutto rinvenibile cliccando su "STORICO" all'interno del suddetto indirizzo.

NB il database ha cominciato a registrare il 19 dicembre 2015 ma ogni tanto c'è qualche "buco": valori non registrati o registrati male per blocchi del sw, mancanza di corrente o di connessione internet... considero il DB attendibile dallo scorso gennaio.
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
mi manca solo sapere come poter dare a "$data1" il valore della data corrente

$data1 = "2017-05-25 00:00"

magari SOLO LA DATA, poi l'ora la aggiungo da me, ormai ho imparato :)

Ho cercato in giro per il web ma non sono arrivato a nulla; mi serve per poter fare i report del giorno corrente, senza dover inserire ogni volta la data odierna.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
un piccolo consiglio: verifica le date immesse, esempi
immessa 25/05/2017 visualizza la data ma non mostra nulla
immessa 31-02-2017 come sopra

quindi dovresti fare in modo che
1) le date vengano trasformate in YYYY-mm-dd
2) avvisi che la data è assurda e non mostri nulla tornando allla casella di input
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
grazie dei preziosi consigli! intanto ho utilizzato la funzione per richiamare la data corrente per costruire queste tre righe sopra il grafico dell'andamento della temperatura giornaliera:

http://www.meteolucignano.net/smartphone_temp.php

al più presto farò lo stesso anche per gli altri valori, così che a colpo d'occhio sarà visibile sia l'andamento del giorno corrente di ciascun valore sia i min e max.

Nella pagina

http://www.meteolucignano.net/swpi_plot.php

in cui impostando un giorno a piacere ti disegna i grafici di ciascun valore, inserirò anche i rispettivi min e max. In questo modo unisco in una sola pagina grafici e min/max del giorno corrente, in un'altra grafici e min/max di un giorno a piacere;

l'unica cosa è che CI VUOLE PAZIENZA E TEMPO... la prima ne ho a sufficienza... il secondo un po' meno :):):).

NON SO DAVVERO COME RINGRAZIARVI, SIETE STATI GENTILISSIMI E MOLTO PAZIENTI!
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
buondi ragazzi! il progetto sta marciando, mi manca solo un pomeriggio libero per poterlo terminare. Domanda: dopo aver esploso la data e ora, come faccio a restituire nel formato gg-mm-aaaa la "porzione" $data[0]"? qui sotto il codice:

Codice:
$data=explode(" ",$data1);
$data[0] ->aaaa-mm-gg;
$data[1] ->hh-ii;
 
Discussioni simili
Autore Titolo Forum Risposte Data
N [PHP] Estrarre singolo valore da array PHP 4
M Php+MySql: Estrarre dati da tabella e consentire all'utente di modificare un valore 'in linea' PHP 6
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
C [PHP] Estrarre da una classe i valori che mi interessano PHP 5
S [PHP] Estrarre dati da tabella e fare la media ad intervalli di tempo PHP 11
R [PHP] Estrarre id utente loggato.? PHP 4
S [PHP] Estrarre elementi array su più variabili PHP 5
S [PHP] Estrarre dati tabella in diversi array PHP 2
trattorino estrarre titolo video facebook in php PHP 0
trattorino [PHP] sql estrarre in base all'ultima visita PHP 4
Jensen [PHP] Estrarre prossimi 4 lunedì PHP 4
trattorino [PHP] estrarre dati singoli PHP 1
G [PHP] estrarre data da timeline yyyy-dd-gg hh:mm:ss PHP 4
S [PHP] Estrarre dati colonna in una stringa PHP 6
S [PHP] estrarre dati sito web protetto con username e password PHP 13
Merlina3377 [PHP] estrarre solo un determinato id da tanti con REGEXP O LIKE PHP 1
trattorino Estrarre Nome Utente jquery div php PHP 9
S [PHP] estrarre le email da un elenco di url PHP 21
T4MAR4 [PHP] estrarre tag da un testo PHP 3
T [PHP] Estrarre stringa PHP 3
bubino8 [PHP] Estrarre dominio No Sottodomini PHP 10
L [PHP] Estrarre dati da sito web Offerte e Richieste di Lavoro e/o Collaborazione 4
sandropochi [PHP] Query per estrarre record con data successiva a quella odierna PHP 2
giancadeejay [PHP] Estrarre solo record dell'utente connesso PHP 4
U [PHP] estrarre i risultati di una query e visualizzarli in una tabella. PHP 9
S [PHP] estrarre numero da stringa PHP 5
giuseppe_123 [PHP] Estrarre giorno mese e anno da una data PHP 2
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
asevenx [PHP] Estrarre valori evitando dublicati dal database PHP 2
filippino Script PHP per estrarre dati estrazioni da sito "10 e lotto" PHP 0
R Estrarre dati da tabella mysql [era:Sto benedetto php] PHP 22
M Estrarre dato da php e mysql PHP 5
A Estrarre da un Datetime di mysql la data e l'orario in PHP PHP 2
O [help] estrarre e visualizzare dati da mysql con php a oggetti PHP 6
I Estrarre dati da un file php PHP 3
D [PHP/SQL] Estrarre risultati da 2 database Database 0
P estrarre dati xml excel con php XML 1
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3

Discussioni simili