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

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
eccolo qui! l'ho un po' modificato, ma continua a non darmi nessun segnale di funzionamento se non riportare pari pari le date a video... sicuramente ho scritto male qualche spazio/virgola/segno di punteggiatura



PHP:
<?php
require_once("config.php");
$con=mysql_connect($server,$user,$pwd);

$data1="2017-05-20";
$data2="2017-05-20";

$sql="SELECT MIN(TEMP) as 'min' FROM `METEO` WHERE TIMESTAMP_LOCAL betwen('$data1' and '$data2')";
$ris=mysqli_query($con, $sql);
$riga=mysqli_fetch_assoc($ris);
echo "GIORNO $data1 temperature: minima ".$riga['min']."°C<br>";
?>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intanto sbagli la $conn, se usi mysqli
devi usare
PHP:
$conn = mysqli_connect($server,$user,$pwd,$db);
devi usare mysqli_connect e mettere il nome del database

dimenticavo
togli gli apici a min e i batck al nome della tabella
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
PHP:
<?php
require_once("config.php");
$con = mysqli_connect($server,$user,$pwd,$meteoluc_ignano);

$data1="2017-05-20";
$data2="2017-05-20";

$sql="SELECT MIN(TEMP) as min FROM METEO WHERE TIMESTAMP_LOCAL betwen('$data1' and '$data2')";
$ris=mysqli_query($con, $sql);
$riga=mysqli_fetch_assoc($ris);
echo "GIORNO $data1: temperatura minima ".$riga['min']."°C<br>";
?>

ci siamo???
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
sintatticamente sembra corretto, se funziona devi dirlo tu

quando posti del codice vai sulla riga di formattazione del post "inserisci ->codice, inserisci e scegli il tipo" (quartultima iconcina)
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
intanto ho aggiunto una "e" al "betwen" della query, ma ancora non mi compare il valore desiderato (temperatura minima)... Non sarà mica per caso il fatto che il TIMESTAMP_LOCAL è in formato "2017-05-20 12:34 13:55" e io inserisco nella query solo una parte, cioè 2017-05-20 ?
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
ad ogni modo, il server del mio sito mi logga un errore alla riga 10, cioè questa:

Codice:
$riga=mysqli_fetch_assoc($ris);

l'errore indicato è come segue:

[23-May-2017 18:11:01 Europe/Rome] PHP Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /home/meteolucignano/public_html/minmaxoggi1.php on line 10
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
la e mio errore di battitura
eventualmente due cose
aggiungi come aveva detto livellacri la parte mancante a $data1 e $data2 (attento agli spazi e separatori) 00:00 e 59:59
prova a togliere le parentesi ....TIMESTAMP_LOCAL betwen '$data1' and '$data2'
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
ottime notizie! tolte le parentesi e aggiunta l'ora dopo la data, l'estrazione del valore funziona a dovere :)

qui il codice funzionante:
Codice:
<?php
require_once("config.php");
$con = mysqli_connect($server,$user,$pwd,$db);

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

$sql="SELECT MAX(TEMP) as max FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2'";
$ris=mysqli_query($con, $sql);
$riga= mysqli_fetch_assoc($ris);
echo "GIORNO $data1: temperatura massima ".$riga['max']."째C<br>";
?>

adesso una chicca per il mio sito, spero si possa fare: vorrei stampare accanto al valore (in questo caso la temperatura massima) l'orario in cui è stata rilevata.. ovviamente dalla colonna TIMESTAMP_LOCAL
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se ti da errore alla mysqli_fetch, l'eerore può nascera da $conn o dalla $ql o da $ris
comincia a mettere dei var_dump (che poi toglierai)
PHP:
<?php
require_once("config.php");
$conn = mysqli_connect($server,$user,$pwd,$db);
echo "<pre>";//poi lo togli ti serve per visualizzare bene i vari var_dump
var_dump($conn);//se ti da FALSE l'errore è nella connessione e quindi devi verificare dati di connessione
$data1="2017-05-20";
$data2="2017-05-20";

$sql="SELECT MIN(TEMP) as min FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2'";//prova con e senza parentesi
var_dump($sql);//verifica che venga scritta giusta
$ris=mysqli_query($con, $sql);
var_dump($ris);//se ti da FALSE ma la connessioene ti ha dato resorce (quindi ok) devi verificare nomi tabella e campi
$riga=mysqli_fetch_assoc($ris);
echo "GIORNO $data1 temperature: minima ".$riga['min']."°C<br>";
echo "</pre>";
?>
posta quanto riportato dai var_dump
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
si si tranquillo, anzi infinite grazie per il Vostro aiuto che finora ha dato ottimi frutti... mancherebbe solo di stampare accanto al valore massimo il rispettivo orario in cui è stato scritto nel database.. .valore da tirar fuori dalla colonna TIMESTAMP_LOCAL, ma non saprei proprio come fare!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho la vaga impressione che tu debba fare due query
PHP:
<?php
require_once("config.php");
$con = mysqli_connect($server,$user,$pwd,$db);

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

$sql="SELECT MAX(TEMP) as max FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2'";
$ris=mysqli_query($con, $sql);
$riga= mysqli_fetch_assoc($ris);
//echo "GIORNO $data1: temperatura massima ".$riga['max']."&deg;C<br>";
$temp_max=$riga['max'];
$sql="SELECT TIMESTAMP_LOCAL FROM METEO WHERE (TIMESTAMP_LOCAL between '$data1' and '$data2') and TEMP=$temp_max LIMIT 1";
//TEMP è un numero float es 25.10 o una stringa '25,10' se è una stringa devi mettere gli apici TEMP='$temp_max'
$ris=mysqli_query($con, $sql);
$riga= mysqli_fetch_assoc($ris);
$data_ora=$riga['TIMESTAMP_LOCAL'];
//se ti serve la data e l'ora e forse meglio perche potrest cercare nell'intevallo di più giorni
$gg_h=explode(" ",$data_ora);
echo "data ".$gg_h[0]." alle ".$gg_h[1]." h la temperatura massima &eacute; stata ".$temp_max." &deg;C";
?>
questo script però se nello stesso giorno hai due o più ore con temp massima ti ricava solo la prima ora, altrimenti con la seconda query si deve operara con un while ecc...
sappimi dire


p.s.
per le accentate e per caratteri speciali es ° usa &eacute; e &deg; eviti brutte visualizzazioni
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
credo che meglio di così non si possa fare... grazie ragazzi, siete MITICI !!!!!! penso che per il fatto di due o più orari con stessa temp non ci siano problemi di sorta! vi aggiornerò e sicuramente avrò bisogno di qualcos'altro, ma per ora "lo scheletro del codice" è fatto... mi devo solo metter giù e riportare i minimi e massimi di tutti, nonché fare un form di inserimento del giorno, così che sia possibile al visitatore del sito di poter interrogare il database a suo piaciemnto.
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
e se volessi ottenere i minimi e massimi, con relativi orari, di TEMPERATURA, UMIDITA', PRESSIONE E VENTO sfruttando una sola query? minimi e massimi GIA' FATTO... ma per i rispettivi orari sono in alto mare...
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ti conviene cambiare le query : una per il minimo
PHP:
$sql="SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY TEMP LIMIT 1";
euna per il massimo
PHP:
$sql="SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY TEMP DESC LIMIT 1";
 

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
40
Ok capito, questi esempi sono per la colonna TEMP... e per gli altri (umidità, pressione, vento)?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
no con questi esempi estrai tutti i campi della tabella
PHP:
$sql="SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY TEMP LIMIT 1";
$ris=mysqli_query($con, $sql);
$riga_minimo = mysqli_fetch_assoc($ris);
var_dump($riga_minimo);
per recuperare solo un campo
PHP:
echo $riga_minimo['nome-del-campo'];
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
devi fare pratica, sapere interrogare il database e estrarre i dati è fondamentale per un sito web dinamico
PHP:
<?php

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

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

$sql = "SELECT * FROM METEO WHERE TIMESTAMP_LOCAL between '$data1' and '$data2' ORDER BY TEMP DESC LIMIT 1";
$ris = mysqli_query($con, $sql);
$riga_massima = mysqli_fetch_assoc($ris);
$temp_max = $riga_massima['TEMP'];
$data_ora = $riga_massima['TIMESTAMP_LOCAL'];
$vento = $riga_massima['WINDIR_CODE'];
//se ti serve la data e l'ora e forse meglio perche potrest cercare nell'intevallo di più giorni
$gg_h = explode(" ", $data_ora);
echo "data " . $gg_h[0] . " alle " . $gg_h[1] . " h la temperatura massima &eacute; stata " . $temp_max . " &deg;C ";
echo "vento " . $vento;
 
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