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

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:
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
 
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???
 
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)
 
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 ?
 
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
 
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'
 
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
 
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
 
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!
 
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
 
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.
 
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...
 
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";
 
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'];
 
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