richiamare data dal database

rieccomi!

spiego brevemente quello che vorrei facesse il file per punti.

-si colleghi al database

- la query richiami la data presente nel campo di tipo DATE

- la query richiami la data attuale

- paragono le due date e imposto due cicli if

il primo if se la data_campo >= data_attuale

il secondo if se la data_campo < data_attuale

- chiudo il tutto

ho trovato che per richiamare una data dal database e convertirla c'è la funzione UNIX_TIMESTAMP e per richiamare la data attuale c'è la CURRENT_TIME

volevo sapere solo come andava scritto di preciso il codice

grazie :D

require 'config.php';

require 'connect.php';

$query = "SELECT UNIX_TIMESTAMP() as data FROM db_prova";

$result = mysql_query($query);

$query2 = "SELECT CURRENT_TIME()  FROM db_prova";

$result2 = mysql_query($query2);

// libero la memoria di PHP occupata dai record estratti con la SELECT

mysql_free_result($result);

// chiudo la connessione a MySQL

mysql_close();
inviato 6 anni fa
sinistro
X 0 X

Hai implementato solo un pezzetto di tutto quello che vuoi ottenere.

Prova a completare così:

<?php
require 'config.php';
require 'connect.php';

$query = "SELECT UNIX_TIMESTAMP() as data FROM db_prova WHERE qualche cosa"; //devi metterci un where se vuoi ricavare solamente una data riferita ad un record nel tuo database
$result = mysql_query($query);
$data1 = mysql_result($result, 0);

$query2 = "SELECT CURRENT_TIME()  FROM db_prova";
$result2 = mysql_query($query2);
$data2 = mysql_result($result2, 0);

// libero la memoria di PHP occupata dai record estratti con la SELECT
//mysql_free_result($result); puoi anche lasciare perdere.

// Poi visto che vuoi fare un confronto:
if ($data1 < $data2)
  //metti il tuo codice
else
  //metti il tuo codice

// chiudo la connessione a MySQL
mysql_close();

ok?

Ciao

risposto 6 anni fa
Mario Santagiuliana
X 0 X

ah ok me ne mancava proprio un pezzo.

ho capito grazie!

risposto 6 anni fa
sinistro
X 0 X

mi è sorto un dubbio perchè mi sono accorto che il tutto non funziona...

ho fatto echo delle due date, la prima quella richiamata da database esce numerica mentre quella richiamata con CURRENT_TIME() , cioè quella corrente del server esce scritta come HH:MM:SS

avevo sbagliato funzione perchè a me serve confrontare due date, senza utilizzare l'ora.

quindi la current_time ho provato a sostituirla con current_date

   $query4 = "SELECT UNIX_TIMESTAMP() as data FROM db_prova WHERE id = $id";
   $result4 = mysql_query($query4);
   $data1 = mysql_result($result4, 0);

   $query5 = "SELECT CURRENT_DATE() FROM db_prova";
   $result5 = mysql_query($query5);
   $data2 = mysql_result($result5, 0);

e poi deve eseguire questo:

if ($data1 > $data2) { 
         
         echo "Il periodo è scaduto ";
   }
else ecc.ecc.ec..

ottengo sempre il risultato dell'else xke la data me la legge come 2010-02-16 e quindi non riesce a confrontarle. come posso fare?

risposto 6 anni fa
sinistro
X 0 X

Se le date del tuo server su cui lavora php e quello di mysql sono sincronizzate potresti usare la funzione time() di php invece di fare una query.

Altrimenti invece di current_time() nella tua query usa now().

risposto 6 anni fa
Mario Santagiuliana
X 0 X
$query = "SELECT UNIX_TIMESTAMP() as data FROM db_prova WHERE id = $id";
$result = mysql_query($query);
$data1 = mysql_result($result, 0);

è scritta bene?

perchè mi restituisce l'ora corrente

risposto 6 anni fa
sinistro
X 0 X

Mi sto un po' confondendo...

Se tu salvi le tue date in formato unixtimestamp poi non devi usare opzioni particolari nelle query sql per recuperare le tue date.

Per cui fa un normale select del campo che ti interessa.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Mi sto un po' confondendo...

Se tu salvi le tue date in formato unixtimestamp poi non devi usare opzioni particolari nelle query sql per recuperare le tue date.

Per cui fa un normale select del campo che ti interessa.

no la data nel database è del tipo 2010-05-13 xke è un campo DATE

risposto 6 anni fa
sinistro
X 0 X

Prova la query così(non son sicuro funzioni):

SELECT UNIX_TIMESTAMP(nome_campo_data) as data FROM db_prova WHERE id = $id

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda