[MySQL] Confronto tra variabile varchar e variabile data.

Michele9423

Nuovo Utente
5 Gen 2018
1
0
1
Salve a tutti, sono nuovo sul forum e spero di aver azzeccato la sezione giusta per la mia problematica.
Ho creato su un webserver un database che possiede 12 campi tra cui anche un campo per la data e uno per l'ora (entrambi varchar). Tutti i campi vengono popolati correttamente attraverso una INSERT INTO presente su una pagina php. Per la data e l'ora ho utilizzato nella query INSERT INTO le seguenti istruzioni:

date('d/m/Y') per la data.
date('H:i:s') per l'orario.

Arriviamo al problema:

Attraverso il seguente codice inserisco una data che servirà nel file g.php per un confronto con il campo data del db:

HTML:
<html>
<head>
   <meta charset="utf-8">
</head>
<body>
<form action= "g.php"  method="post">
   <label>Inserisci la data della quale si vuole visualizzare il grafico  </label>
     <input type="date" name="data">
   <input type="reset"  value="Resetta il form">
   <input type="submit" value="Invia">
</form>
</body>
</html>


Questo è il file g.php che riceve la data inserita ed effettua il confronto con la data del db con una query.
(il seguente codice ha come fine quello di creare un grafico popolato da temperatura sull'asse delle y e orario sull'asse delle x in base alla query)

PHP:
?php
include("connect.php");
include("phpgraphlib.php");
$condizione=$_POST["data"];
$link=Connection();
$graph=new PHPGraphLib(750,550);
$dataArray=array();

$queryb="SELECT AVG (Temperatura) AS 'Temperatura',Ora FROM Rilevazioni WHERE Data='.$condizione.' GROUP BY Ora";

$result=mysql_query($queryb,$link) ;
if($result) {
     while($row = mysql_fetch_array($result)) {
            $temperatura=$row["Temperatura"];
            $ora=$row["Ora"];

//associo ad ogni elemento dell'array individuato dallo specifico Id, il proprio valore di temperatura
            $dataArray[$ora]=$temperatura;
       }
}
//inserisco i dati nel grafico e lo costruisco

$graph->addData($dataArray);
$graph->setTitle('Temperatura');
$graph->setGradient('red', 'maroon');
$graph->setDataValues(true);
$graph->setDataValueColor('red');
$graph->createGraph();
?>

Il problema che riscontro è che il grafico non viene popolato quando è presente il WHERE nella query, e da qui deduco che il problema sia proprio nel confronto tra il valore del campo data del db (varchar) e il valore della variabile data che passo alla query. Togliendo il WHERE, il grafico viene visualizzato correttamente.

Spero sia stato chiaro e che abbiate capito la mia problematica.
In attesa di una vostra risposta, vi ringrazio anticipatamente.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
nel database ti conviene conservare le date nel formato 'Y-m-d', con questo formato puoi gestire tutte le operazioni di ordinamento nella query, di selezione per minore e/o maggiore e quant'altro necessario

poi guardati questo codice,
PHP:
echo "data nel database = ".date('Y-m-d')."<br />";

$_POST["data"]= "5/1/2018";

echo "data inserita nel form = ".$_POST["data"]."<br />";

$dt = DateTime::createFromFormat('d/m/Y', $_POST["data"]);  // data recuperata in formato "locale"

$condizione= $dt->format('Y-m-d');

echo "data condizione = ".$condizione."<br />";
che produce questo risultato
upload_2018-1-5_22-23-54.png

con le date devi anche considerare il formato "locale" e la "timezone" ma forse non ti interessano

da ultimo controlla le date nel db, che abbiano il formato atteso
 
Discussioni simili
Autore Titolo Forum Risposte Data
Monital [Mysql]Confronto tra tabelle ed inseirmento dati- Comando JOIN (Credo) MySQL 0
P [MYSQL] SELECT di ..CONFRONTO MySQL 0
J Confronto Date PHP - MySQL PHP 1
T Problema: Confronto date con Mysql PHP 3
M [MySQL] confronto fra date Database 1
L Controllo e confronto dati immessi in 2 campi Data in un form (mysql) PHP 1
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2
S Gestire scelta dropdown con dati da Mysql PHP 2
K cron job mysql PHP 3
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
R Errore UPDATE tabella mysql PHP 1
R Caricamento immagine su cartella remota + mysql PHP 3
D Emoji in mysql Database 0

Discussioni simili