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

    Ricerca di una data (formato timestamp)

    Ciao a tutti,

    Ho un problema nella ricerca di una data.

    Vorrei ricercare dei prodotti per data, il DB è composto da una tabella prodotti dove tra gli altri campi ho Data (varchar(25) - latin1_swedish_ci - Not Null) e le date sono in questo formato 1191369600.

    Nel form Ricerca.php, tra glia altri campi ho quello "data":
    codice:
    <input name="data" type="text" size="24">
    La pagina Risultati.php ha già il seguente script (un esempio):

    codice:
    $link='risultati.php?codice='.urlencode($codice).'&novita='.$novita.'&promo='.$promo.'&note='.$note.'&vetrina='.$vetrina.'&descrizione='.$descrizione.'&descr='.$descrizione;
    $return_link='http://'.$SERVER_NAME.$SCRIPT_NAME.'?'.$QUERY_STRING;
    $sql_1="SELECT * FROM prodotti,brand WHERE prodotti.tab=brand.id ";
    $sql_2="SELECT prodotti.*,brand.* FROM prodotti,temp_prodotti,brand LEFT JOIN qta_impegnate ON qta_impegnate.id_prodotto=prodotti.IDCodice WHERE prodotti.IDCodice = temp_prodotti.IDCodice AND prodotti.tab=brand.id ";
    $sql="AND prodotti.status<>1 AND prodotti.Codice like '%".$codice."%'";
    if (!empty($descrb))
    {$sql.=" AND prodotti.Descr like '%".$descrb."%'";}
    if (!empty($descr))
    {$sql.=" AND prodotti.Descrizione like '%".$descr."%'";}
    if (!empty($data))
    {$sql.=" AND prodotti.Data like '%".$data."%'";}
    Ho inserito le ultime due righe ($data); il risultato è che se faccio una ricerca per valore timestamp (es. 1191542400 ), riesco a trovare i codici interessati ma il problema è che vorrei inserire nel campo la data in questo formato 05/10/2007, come fare?

    grazie

    Sevenumber

  2. #2
    C'è il problema che nel timestamp nel database ci sono anche i secondi,minuti,ore etc. Invece tu dalla ricerca avresti solo la data. Quindi la data che inserisci nel database dovrebbe essere formata dal timestimp prendendo in considerazione solo la data ma con minuti ore e secondi con 00:00:00.
    In caso ci siano i presupposti di sopra, potresti usare questo

    $data = '05/10/2007' ;
    $rdata = explode ( '/', $data ) ;
    $tmp = mktime(0, 0, 0, $rdata[1], $rdata[0], $rdata[2]) ;

    $tmp sarebbe la variabile di controllo per il database.
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  3. #3
    scusa l'ignoranza ... quindi in alternativa a questo codice (sotto) come devo scrivere?

    if (!empty($data))
    {$sql.=" AND prodotti.Data like '%".$data."%'";}


    ho provato

    $data = '05/10/2007' ;
    $rdata = explode ( '/', $data ) ;
    $tmp = mktime(0, 0, 0, $rdata[1], $rdata[0], $rdata[2]) ;

    ma nulla (forse devo inserire qlc anche nella stringa $link='risultati? vedi codice postato nel primo post)

    ciao
    Sevenumber

  4. #4
    devi usare la variabile $tmp non $data
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  5. #5
    non funziona! ... ricapitoliamo ...

    nella pagina Ricerca.php ho inserito questo:

    codice:
    <input name="data" type="text" size="24">

    in Risultati.php:

    codice:
    $data= '05/10/2007' ;
    $rdata = explode ( '/', $data) ;
    $tmp = mktime(0, 0, 0, $rdata[1], $rdata[0], $rdata[2]) ;
    ma il risultato è che mi visualizza tutti i codice, quindi non prende il filtro. Fammi capire, $data sarebbe il contenuto dell'input? 05/10/2007 cosa sarebbe? forse ti riferivi all'esempio che ho fatto nel caso inserissi la data 05/10/2007 nel campo input...

    ciao
    Sevenumber

  6. #6
    si, esatto
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  7. #7
    ok ...ma visto che le date saranno variabili come devo fare? devo modificare il dato in questo modo?

    $data= '$rdata' ;

  8. #8
    $data= $_POST['data'];
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  9. #9
    Ho aggiornato la situazione come segue:

    pagina Ricerca.php

    codice:
    <input name="aggiorn" type="text" size="24">
    Risultati.php

    codice:
    if (!empty($aggiorn))
    {$sql.=" AND prodotti.Aggiornamento like '%".$aggiorn."%'";}
    * Nel database ho la tabella Prodotti con la colonna Aggiornamento dove viene riportata la data di aggiornbamento del prodotto in questa maniera 1191801600.

    La mia domanda è, come faccio al sistema per fargli capire, inserendo nel campo data 08/10/2007, che deve cercare 1191801600?

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da sevenumber
    Ho aggiornato la situazione come segue:

    pagina Ricerca.php

    codice:
    <input name="aggiorn" type="text" size="24">
    Risultati.php

    codice:
    if (!empty($aggiorn))
    {$sql.=" AND prodotti.Aggiornamento like '%".$aggiorn."%'";}
    * Nel database ho la tabella Prodotti con la colonna Aggiornamento dove viene riportata la data di aggiornbamento del prodotto in questa maniera 1191801600.

    La mia domanda è, come faccio al sistema per fargli capire, inserendo nel campo data 08/10/2007, che deve cercare 1191801600?
    Dovresti convertire la data nel formato AAAA-MM-GG e poi usare la funzione unix_timestamp

    select * from tabella where campo = unix_timestamp('2007-10-08')

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.