Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107

    controllare e formattare data con MySql

    Ciao a tutti!
    ho un problema..devo inserire nel campo 'data' in una tabella del mio database il corrispondente valore inserito in un form.

    Allora, il form input è questo:
    Codice PHP:
    <input name="data" type="text" size="10" maxlength="10"></input
    passo alla pagina stessa la variabile $_POST['data'] e faccio il controllo e l'inserimento su db così:
    Codice PHP:
    if (isset($_POST['data']) && $_POST['data']!='') { 
    $data $_POST['data'];
    $insQ mysql_query("INSERT INTO tab VALUES (campo1, campo2, $data)");

    Il problema è che dal momento che nel form posso inserire del testo, devo fare prima un controllo che la data inserita sia corretta e valida. In seguito, possibilmente, dovrei formattarla in questo modo gg/mm/aaaa e non in quello di default di MySQL per il tipo di dato DATE che è aaaa-mm-gg.
    Ho visto che ci sono due funzioni di MySql, CONVERT e CAST che potrebbero fare al caso mio, ma non so come usarle.
    Inoltre, anche la funzione DATE_FORMAT('$data' , '%d/%m/%y'); che dovrei usare per formattare la data non so come e dove inserirla.

    Se qualcuno mi potesse aiutare o dare una dritta gliene sarei grato!

    PS: è un'operazione che posso fare con php o va fatta con MySql?

  2. #2
    Creala tu una funzione:

    function convertiData($dataEur){
    $rsl = explode ('-',$dataEur);
    $rsl = array_reverse($rsl);
    return implode($rsl,'-');
    } ?>

    se $data è la tua variabile nel formato aaaa-mm-gg
    per convertirla
    convertiData($data);

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107
    Intanto grazie per la risposta...
    allora, ho pensato di usare la tua funzione al rovescio, nel senso faccio inserire la data nel modulo di input, all'europea...dopodichè tramite la tua funzione la converto nel formato aaaa-mm-gg in modo che così la posso inserire nella tabella del db (altrimenti, se la inserisco nel formato europeo, ho visto che mi memorizza il valore 0000-00-00, perchè non me la riconosce valida).
    Il problema adesso è che vorrei fare un controllo che la data inserita sia valida, nel senso che se nel mese metto 13, la query va a buon fine lo stesso, ma mi salva come valore la data 0000-00-00, invece voglio che mi segnali un errore, oppure mi restituisca qualcosa in modo che io possa gestirlo e segnalare all'utente di reinserire una data valida.
    Come posso farlo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107
    per la convalida di una data ho trovato sul web questa funzione:
    Codice PHP:
    function controllaData($data) { 
      if(!
    ereg("^[0-9]{2}-[0-9]{2}-[0-9]{4}$"$data)) {     
        return 
    false
      } else { 
        
    $arrayData explode("-"$data);
        
    $Giorno $arrayData[0]
        
    $Mese $arrayData[1];
        
    $Anno $arrayData[2];
        if(!
    checkdate($Mese$Giorno$Anno)) { 
          return 
    false
        } else {     
          return 
    true
        } 
      } 

    che però mi ha segnalato il seguente errore: "Deprecated: Function ereg() is deprecated .."

    Altrimenti, per non usare la ereg che è effettivamente deprecata, ho visto un'altra funzione:

    Codice PHP:
    $checkData preg_match("/^(0[1-9]|3[01])\s(0[1-9]|1[012])\s((19|20)(20|90))$/"$data$reg); 
    però non sono riuscito a capire come funziona..anche leggendo le specifiche della preg-match sul manuale php non so come utilizzarla. Qualche anima gentile potrebbe spiegarmi oppure dirmi se ci sono altre soluzioni? grazie!

  5. #5
    Ascolta perché non usi il calendario?
    In pratica avresti una textbox di nome data solo in lettura (cioè chi usa la pagina non puo scriverci) con accanto un bottone (con la scritta che vuoi tu).
    Chi usa la pagina clicca sul bottone e gli appare un calendario in cui seleziona il giorno e automaticamente una volta cliccato la data (nel formato mysql corretto aaa-mm-gg) viene inserita nel check box.

    Qui Trovi un esempio cliccando su pick date.

    Poi cerca dhtmlgoodies_calendar e scaricalo.
    E' semplicissimo da usare.

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.