Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    Due semplici query FROM_UNIXTIME()...

    Salve a tutti, ho un campo data in un db mysql e vorrei effettuare due query, passandogli una variabile $var (che è il momento in cui l'utente accede alla pagina) tramite url....

    N.b. i record dentro il campo "data" e la variabile $var sono stati creati così:

    mktime (date("H"),date("i"),date("s"), date("m"), date("d"), date("Y"));

    Allora:

    La prima query che devo effettuare è:

    $query = "SELECT * FROM TABELLA WHERE FROM_UNIXTIME(data) >= $var"

    Ma non mi funziona... funziona solo se la cambio in:

    $query = "SELECT * FROM TABELLA WHERE data >= $var"

    E'corretto?

    La seconda query che devo effettuare è:

    $query = "SELECT * FROM TABELLA WHERE ... nel campo data sono trascorse 12 ore da $var

    ... e questa non ho proprio idea su come farla!!!

    Mi date una mano?
    Grazie mille.. Ciao!
    What is the |\/|atrix?

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    per il primo quesito:
    nn ha molto senso usare mktime assieme a date, in quanto la funzione time() ti restituisce direttamente l'unix timestamp odierno.

    inoltre nella query devi confrontare direttamente i 2 timestamp, quindi senza usare nessun tipo di funzione mySQL; per questo motivo la seconda query funziona, mentre la prima no.
    ancora migliore sarebbe una cosa di questo tipo:
    codice:
    $query = "SELECT * FROM TABELLA WHERE data >= UNIX_TIMESTAMP(NOW())"
    think simple think ringo

  3. #3
    Grazie mille.. e la seconda?
    What is the |\/|atrix?

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    potrebbe essere una cosa di questo tipo:
    codice:
    $query = "SELECT * FROM TABELLA WHERE data > ($var + 86400)";
    ...
    ...
    $query = "SELECT * FROM TABELLA WHERE data > (UNIX_TIMESTAMP(NOW()) + 86400)";
    think simple think ringo

  5. #5
    Allora... sto cominciando a rincretinire... e la logica comincia ad abbandonarmi...

    Rivediamo un pò il tutto:
    nel campo data c'è una data di login degli utenti, ora io vorrei selezionare solo quelli che sono loggati da più 12 ore...
    Cioè ipotizzando che ci sia solo un record della tabella e che esso sia: 15/11/2004 alle ore 01:15:00 (ovviamente e solo un esempio, poichè il campo e in unixstamp) e che la variabile $var sia 15/11/2004 alle ore 09:15:00 non dovrei visualizzare nulla... ma nel caso la variabile $var sia 15/11/2004 alle ore 14:15:00 oppure 12/12/2004 alle ore 08:15:30 dovrei visualizzare il record....
    Perciò ho provato a fare questa query, ma non funziona!

    $query = "SELECT * FROM TABELLA WHERE (data + 86400) < $var";

    Dove sbaglio?
    Grazie mille ancora...
    What is the |\/|atrix?

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    l'idea della query è corretta, prova a ricontrollare i valori...
    think simple think ringo

  7. #7
    Niente da fare:

    15/11/2004 - 14:23:58 (in unix data=1100525038) ===> login utente (che rimane loggato all'infinito)
    15/11/2004 - 20:27:21 (in unix $var=1100546841) ===> primo controllo (non dovrebbe trovare nulla)*
    16/11/2004 - 03:28:38 (in unix $var=1100572118) ===> secondo controllo (qui dovrebbe trovare il record data)**


    * $var="1100546841";
    * $query1 = "SELECT * FROM TABELLA WHERE (data + 86400) < $var";
    ---------------------------------------------------------------
    ** $var="1100572118";
    ** $query2 = "SELECT * FROM TABELLA WHERE (data + 86400) < $var";

    In entrambi i casi non trova nulla!


    Ora, facendo due calcoli: data + 86400 cioè 1100525038 + 86400 è uguale a 1100611438
    E in tutti e due i casi 1100611438 è maggiore sia di 1100546841 che di 1100572118, mai minore....

    Capito perchè ormai la logica mi ha abbandonato?
    Come risolvo l'enigma?

    Grazie ancora per l'aiuto che mi stai dando!
    What is the |\/|atrix?

  8. #8
    Finalmente mi si è riaccesso il lume della ragione!!!
    Ecco come ho risolto:

    $query = "SELECT * FROM TABELLA WHERE ($var - data) > 86400";



    Ma ho solo un piccolo dubbio...

    86400 non dovrebbe essere l'equivalente di 24 ore?
    ...a 12 ore dovrebbero corrispondere 1*60*60*12=43200

    Ma intanto nella query 86400 mi equivalgono a 12 ore...
    Come funziona???
    What is the |\/|atrix?

  9. #9
    What is the |\/|atrix?

  10. #10
    Originariamente inviato da |\/|atrix
    86400 non dovrebbe essere l'equivalente di 24 ore?
    ...a 12 ore dovrebbero corrispondere 1*60*60*12=43200

    Ma intanto nella query 86400 mi equivalgono a 12 ore...
    Come funziona???
    What is the |\/|atrix?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.