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

    Gestione date e manipolazione


    Problemino

    Vorrei fare un campo autocompletante con 1 elenco di date prese da Mysql

    Cosa non è un problema:

    - fare l'autocompletamento e tutto il suo sistemino

    Quale è il problema:

    ho un campo dove l'utente digita esempio 22 come primo dato, da quì il campo dovrebbe restituire tutte le date con il GIORNO 22

    Il problema sta nella impostazione della data di Mysql ovvero ..esempio.. 2008-10-22
    Mentre l'utente intende come primo dato il giorno...

    Il girare le date non è un problema...una volta fatta la query...il problema è che nella select where like mi servirebbe averle già girate per pescare le date giuste



    Tanto...lo fanno tutti... posso farlo anche io vero?

  2. #2
    Moderatore di Sicurezza informatica e virus L'avatar di Habanero
    Registrato dal
    Jun 2001
    Messaggi
    9,782

    Re: Gestione date e manipolazione

    Originariamente inviato da -AA-
    Il girare le date non è un problema...una volta fatta la query...il problema è che nella select where like mi servirebbe averle già girate per pescare le date giuste
    non sono sicuro di aver capito il problema...
    una cosa del tipo

    SELECT DATE_FORMAT(data,"%d-%m-%Y") FROM tabella WHERE ...
    Leggi il REGOLAMENTO!

    E' molto complicato, un mucchio di input e output, una quantità di informazioni, un mucchio di elementi da considerare, ho una quantità di elementi da tener presente...
    Drugo

  3. #3
    codice:
    SELECT *, DATE_FORMAT(data,"%d-%m-%Y") as data_formata
    FROM tabella 
    WHERE dayofmonth(data) = 22

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Ciao
    Grazie per le rispose, si mi pare che il metodo sia quello...in breve quello che ho fatto
    codice:
    $sql_select = "SELECT DATE_FORMAT(data,'%d-%m-%Y') as DATE_FORMAT FROM tema";
    if ($numero != ''){$sql_select = $sql_select."  WHERE DATE_FORMAT(data,'%d-%m-%Y') LIKE '%" . $numero . "%'";}
    $sql_select = $sql_select." Order by data Desc";
    echo $sql_select;
    $result = mysql_query($sql_select);
    
    
    while($row = mysql_fetch_assoc($result)){
    $conta++;
    
    if($conta == 1){
    $elenco_date = $row['data'];
    }else{
    $elenco_date = $elenco_date.','.$row['data'];
    }}
    mi servirebbe fare un confronto con una data passata per querystring...tipo
    07-06-2008 (formato italiano)
    confrontarla con quelle del db e aggiungerci il where appunto...

    quello è cosa devo fare
    Tanto...lo fanno tutti... posso farlo anche io vero?

  5. #5
    Originariamente inviato da -AA-

    mi servirebbe fare un confronto con una data passata per querystring...tipo
    07-06-2008 (formato italiano)
    confrontarla con quelle del db e aggiungerci il where appunto...

    (
    codice:
    list ($giorno, $mese, $anno) = explode ("-", $_GET['data']);
    $data = "$anno-$mese-$giorno";
    
    $sql_select = "SELECT DATE_FORMAT(data,'%d-%m-%Y') as data_it 
    FROM tema
    WHERE data = '$data' ";
    Questa e' una ricerca per data e non per il solo giorno. Oltretutto l'order by data e' inutile visto che cerchi una data specifica. Attenzione anche al nome dell'alias. meglio non usare il nome della funzione come nome alias del campo data. Occhio pure a come usi gli apici/doppi apici nella query.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Ciao
    Faccio l'ordinamento perchè quella select mi serve per fare una paginetta remota che sarà utilizzata da un campo autocompletante, ecco perchè l'ordinamento

    Mi faresti vedere come scrivere la query correttamente?

    grazie
    Tanto...lo fanno tutti... posso farlo anche io vero?

  7. #7
    Originariamente inviato da -AA-
    Ciao
    Faccio l'ordinamento perchè quella select mi serve per fare una paginetta remota che sarà utilizzata da un campo autocompletante, ecco perchè l'ordinamento

    Mi faresti vedere come scrivere la query correttamente?

    grazie
    mi dovresti dire esattamente soca vuoi fare.

    Prima fornivi solo un giorno e volevi sapere tutto di tutti gli stessi giorni a prescindere da mese/anno
    ho un campo dove l'utente digita esempio 22 come primo dato, da quì il campo dovrebbe restituire tutte le date con il GIORNO 22
    poi successivamente e' diventato:
    mi servirebbe fare un confronto con una data passata per querystring...tipo
    07-06-2008 (formato italiano)
    confrontarla con quelle del db e aggiungerci il where appunto...
    sono due cose parecchio diverse. Se ricerchi una data precisa e vuoi fare un ordinamento, lo dovresti fare su qualcosa d'altro che non sia la data, altrimenti e' inutile visto che le date sono tutte uguali.

    quindi precisa quali sono i valori in input (e se da post o get) che vuoi valutare per la query ed il risultato che vorresti ottenere, compreso il formato dei dati su input e il formato su db.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Hai ragione piero
    Dunque quello che devo fare è questo:

    Ho una pagina con un campo di testo <-- autocompletamento (la data)
    ---------------------------------------
    -pagina A in questa pagina ho un JS che passa via GET i valori digitati ad una pagina remota (ajax)
    ---------------------------------------
    -pagina B da quì la pagina remota restituisce (da db) i risultati della query e stampa l'elenco
    ---------------------------------------
    - questo elenco poi viene ripreso/passato alla pagina A per fare l'autocompletamento
    ---------------------------------------

    La select per cui varia ogni volta che viene digitato qualcosa, per questo avevo detto il giorno, ma potrebbe essere gg-mm- o gg-mm-aaaa

    e ...siccome la data passata è in italiano mentre quella in Mysql no avevo bisogno di fare la select appunto cercando con la data in italiano

    spero di essermi spiegato bene
    Come fare quella select?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  9. #9
    Utente di HTML.it L'avatar di wdb
    Registrato dal
    Nov 2002
    Messaggi
    155
    Qualcosa tipo questo?

    codice:
    list ($giorno, $mese, $anno) = explode ("-", $_GET['data']);
    
    // se indicato solo il giorno:
    $data = "$giorno%";
    // oppure, se indicato anche il mese:
    $data = "$giorno-$mese%";
    // oppure, se indicati anche il mese e la parte iniziale dell'anno:
    $data = "$giorno-$mese-$anno%";
    
    $sql_select = "SELECT *
    FROM tema
    WHERE DATE_FORMAT(data,'%d-%m-%Y') LIKE '$data' 
    ORDER BY DATE_FORMAT(data,'%d-%m-%Y') ";

  10. #10
    Vedo che una risposta l'hai gia' avuta.... anche il list in tre campi fissi... potrebbe non funzionare sempre nel caso tu abbia solo due od 1 dato.

    Vediamo se ho capito e cosa farei personalmente.

    Tu hai un form che dato una "data" o parte di essa tu devi estrarre con questa i record corrispondenti nella tabella del db.

    Se cosi' fosse per prima cosa devi normalizzare la data ricevuta. Intanto suddividerei la data in tre campi giorno-mese-anno con un esempio del formato che voglio ricevere con un value di default = 00-00-0000. Poi la componi tu per la querystring come ti pare anche direttamente nel formato ansi previsto da mysql

    Dopo di che estratta la data la scomponi in tre variabili ($giorno, $mese, $anno) e la validi, se completa, con checkdate($mese, $giorno,$anno). La validazione va sempre fatta in php oppure controllata se nel range ammesso con JS.

    ora con tre if controlli i campi e completi la data nel formato previsto per la query.
    codice:
    if($giorno == 00) $giorno = '__';  // 2 underscore 
    if(mese == 00) $mese = = '__';
    if($anno == 0000) $anno = '____'; // 4 undescore
    
    $data_sql =  "$anno-$mese-$giorno";
    
    select *, date_format(campo_data, '%d-%m-%Y') as data_it
    from tabella
    where campo_data like '$data_sql'
    order by campo_data [asc|desc]
    Lo si puo' fare comunque in diversi altri modi. personalmente pero' farei cosi'.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.