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

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
41
salve a tutti, ho un database MySql di valori meteorologici, sono poco esperto di php e mysql, quindi per chiarezza riporto un esempio fittizio:

DATA TEMP UMIDITA'
22/05/2017 12:00 24,5 28
22/05/2017 12:05 24,9 26
22/05/2017 12:10 25,5 25
....
22/05/2017 21:15 21,7 34
22/05/2017 21:20 21,2 37
22/05/2017 21:25 20,5 40

ho bisogno di estrarre e stampare a video il valore massimo e minimo di temperatura e umidità di un intervallo temporale impostabile a piacere, per capirsi: stampare a video massima e minima del giorno 22 maggio.

Come faccio a selezionare tutti i valori del giorno 22 maggio e poi tirar fuori il valore massimo per ogni colonna?

il mio sito è www.meteolucignano.net, funzionante, ma manca l'implementazione che vi chiedo.

grazie.
 
Ciao,
Codice:
SELECT MAX(TEMP) FROM WHERE DATA = "2017-05-22"
Codice:
SELECT MIN(TEMP) FROM WHERE DATA = "2017-05-22"
la data la puoi passare tramite post ma devi crearti un calendario
 
grazie! forse è più facile di quanto pensassi... magari ci fosse qualche anima pia che mi scrive l'intero codice php per poter collegarsi al db, estrarre e stampare a video i valori... scusate ma non sono molto esperto di sviluppo php.
 
PHP:
<?php
define('DB_SERVER', 'INSERISCI_QUI');
define('DB_USERNAME', 'INSERISCI_QUI');
define('DB_PASSWORD', 'INSERISCI_QUI');
define('DB_DATABASE', 'INSERISCI_QUI');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
$date1 = "2017-05-22";
$date2 = "2017-05-22";
$query = "SELECT MAX(temp) FROM nometabella WHERE data > '$date1 00:00:00' AND data < '$date2 23:59:59'";
$result = $db->query($query);
$resultarray = $result->fetch_assoc();
$maxtemp = $resultarray['MAX(temp)'];

echo "<h1>Periodo dal ".date("d/m/Y", strtotime($date1))." al ".date("d/m/Y", strtotime($date2))."</h1>";
echo "<h2>Temperatura massima: ".$maxtemp."°</h2>";
?>
Nelle prime righe devi inserire i dati di connessione al db, mentre nella riga della query devi sostituire "nometabella" con il nome della tabella.
 
grazie in anticipo Livellacri... purtroppo però la pagina non funziona! ti allego lo snapshot del codice, sicuramente ho sbagliato qualcosa io nella sintassi; ho cancellato i parametri di accesso al db e sostituito con "TEMP" "temp" perchè nella mia tabella è scritto in maiuscolo.
 

Allegati

  • Cattura.JPG
    Cattura.JPG
    69,5 KB · Visite: 497
consultando i log degli errori del server del mio sito, ho trovato questa riga:

[23-May-2017 12:52:14 Europe/Rome] PHP Fatal error: Call to a member function fetch_assoc() on boolean in /home/meteolucignano/public_html/minmaxoggi1.php on line 11

la riga 11 è la seguente:

$resultarray = $result->fetch_assoc();

dove sta l'errore???
 
utilizzando l'approccio ad oggetti bisogn inizializzare la classe mysqli, cambia
PHP:
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
con
PHP:
$db = new mysqli(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
 
L'errore è nella query.
Sei sicuro di avere inserito correttamente il nome del database e della tabella?
Il campo contenente la data è dopo datetime?
 
rispondo a Livellacri: ho un file (config.php) a cui gli altri file si rifanno per connettersi al DB; esempio quando clicchi sul seguente link:

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

per poter disegnare i grafici, viene interrogato il DB e per connettersi, il suddetto file "richiama" il config.php con la seguente riga:

require_once("config.php");

ho copiato e incollato con attenzione le credenziali di accesso, e or ora le ho ricontrollate, quindi non credo siano errate.

Trovi negli allegati il file config.php e uno snapshot della tabella METEO del mio database; in questo caso, la colonna dei valori di cui voglio tirar fuori il minimo e il massimo è TEMP (all'estrema destra).
 

Allegati

  • config.JPG
    config.JPG
    23,5 KB · Visite: 464
  • tabella.JPG
    tabella.JPG
    147,5 KB · Visite: 523
La colonna "data" qui non esiste.
L'hai sostituito con il nome corretto?
Manda anche la struttura della tabella, in modo da vedere il tipo dei campi
 
ciao
da quello che ho capito dall'immagine il campo con le date si chiama TIMESTAMP_LOCAL, giusto?
PHP:
<?php
//dati di connessione
//immagino $data1 e $data2 da $_POST
//indispensabili controlli sulla correttezza dele date inputate
//attento a come sono formattate le date
$query="SELECT min(TEMP) as min, max(TEMP) as max FROM nome_tabella WHERE TIMESTAMP_LOCAL betwen('$data1' and '$data2')";
$ris=mysqli_query($conn, $query);
$riga=mysqli_fetch_assoc($ris);
echo "tra $data1 e $data2 temperature: minima ".$riga['min']."°C - massima ".$riga['max']."°C<br>";
//....
?>

p.s.
mi spiace ma io uso il procedurale, odio la programmazione ad oggetti
 
Ultima modifica:
per Livellacri: la colonna che contiene data e ora (aaa-mm-gg hh:mm:ss) è nominata "TIMESTAMP_LOCAL"... ho provato il codice di Borgo Italia ma per ora sempre "la pagina non funziona"...
 
Ma il tipo del campo nella tabella quale è?
Posta un'immagine della pagina "Struttura" della tabella.
 
ok, buone notizie: il codice allegato funziona! per semplicità ho inserito i valori "data1" e "data2" direttamente nel codice e ho impostato la query in modo da estrarre il valore minimo della TEMP (ditemi se ho compilato bene)... per adesso a video mi viene stampato tutto TRANNE il valore minimo della TEMP. ci siamo quasi...
 
per chi mi aveva chiesto la struttura della tabella METEO, in allegato lo snapshot della maggior parte dei valori
 

Allegati

  • struttura.JPG
    struttura.JPG
    58,3 KB · Visite: 496
ok, buone notizie: il codice allegato funziona! per semplicità ho inserito i valori "data1" e "data2" direttamente nel codice e ho impostato la query in modo da estrarre il valore minimo della TEMP (ditemi se ho compilato bene)... per adesso a video mi viene stampato tutto TRANNE il valore minimo della TEMP. ci siamo quasi...
Quale codice stai utilizzando?
 
ciao
ha ragione livvellacri, se non posti il codice è difficile capire
anche se mi viene un dubbio:
dici che scrivendo lle date nel codice lo script funziona, quindi è probaile che l'errore sia nel modo in cui inputi le date
 
chiamo (erroneamente?) codice il "contenuto" del file .php, già allegato nel precedente post, e che ri-allego qui
 

Allegati

  • Cattura.JPG
    Cattura.JPG
    41,8 KB · Visite: 524

Discussioni simili