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

    Impossibile convertire una data in PHP

    Salve a tutti e grazie in anticipo, sto programmando un sito in PHP e devo passare una data che
    inizialmente è in formato (01/01/2015) proveniente da un campo form html per poi diventare (2015-01-01) , nello specifico da un input type text <input type="text" name="data"/>, ottengo la data, ma poi devo inserirla in un database mysql ma fallisce, ho provato prima a gettare la data $data = $_POS['data']; ma va prima convertita in un tipo date, ho provato a trasformare la data con la funzione date ($data = date('Y-m-d', strtotime($data), ma la funzione restituisce sempre false. ho provato a separare strtotime in una variabile ($timestamp = strtotime($data) ma ritorna sempre la Unix Epoch come data (01/01/1970). Ho provato a esplodere $data con ($data = explode('/', $data) e poi a dividere i vari valori così ($d1 = $data[2], $d2 = $data[1], $d3 = $data[0] creato una nuova stringa da inserire in un mktime ($newdata = mktime(0,0,0,$d1,$d2,$d3)) ma diceva che le variabile sono stringhe e devono essere long, così ho provato a fare il cast convertendo le stringhe in interi con (int) e intval() così ($d1 = (int)$d1; $d2 = (int)$d2; $d1 = (int)$d1 ma tutti e due mi restituiscono 0 dopo il cast. Ho provato con un if a vedere se queste variabile contengono i valore ($d1 dovrebbe contenere 2015) ma sia con (if ($d1 == 2015)) che con (if ($d1 == "2015")) fallisce e mi da false, come se il valore fosse corrotto. E' un bug di php? sto sbagliando qualcosa io? allego volentieri anche parte del codice se qualcuno ha un idea? perchè quando scrivo una data a mano su strtotime("2015-01-01") funziona senza problemi, ma appena uso la variabile coi dati del form di dà tutti questi problemi?

    Ps: ho usato anche date_create(), new TimeDate(), TimeDate:CreateFromFormat() ma con gli stessi risultati
    Ultima modifica di SludgeSlammer; 22-05-2015 a 14:09 Motivo: titolo sbagliato
    Sludge Slammer

  2. #2
    SQL questo sconosciuto: STR_TO_DATE()

    Es:

    codice:
    INSERT INTO table_name (column1, ...) VALUES (STR_TO_DATE('10/04/2014', '%d/%m/%Y'), ...);
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3

    Grazie

    grazie per la risposta ho provato e mi dice column1(quella mia) cannot be null

    Quote Originariamente inviata da satifal Visualizza il messaggio
    SQL questo sconosciuto: STR_TO_DATE()

    Es:

    codice:
    INSERT INTO table_name (column1, ...) VALUES (STR_TO_DATE('10/04/2014', '%d/%m/%Y'), ...);
    Sludge Slammer

  4. #4
    Dovresti postare il codice della prova che hai effettuato altrimenti è difficile cercare di individuare il problema.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Ecco qua:

    <<<<< form >>>>>>
    <form id="annuncio" name="Annuncio" method="POST" action="#" enctype="multipart/form-data">

    <input type="hidden" id="disp" name="disp" value="1"/>

    <input type="text" id="exavokkk" name="exavokkk" gldp-id="exavokkk"/>


    </form>


    <<<<<-- form --->>>>>>


    <<<<< PHP >>>>>>

    $disp = $_POST['disp'];

    if ($disp != 0) {

    $disp = $_POST['exavokkk'];
    }

    $n = explode("/", $disp);

    $ndata1 = $n[2];
    $ndata2 = $n[1];
    $ndata3 = $n[0];


    $x2 = "$ndata1/$ndata2/$ndata3";

    $ins = $Classe->inserisciProdotto($categoria, $sb_cat, $titolo, $testo, $prezzo, $trasporto, $quanti, $misura, $x2);


    public function inserisciProdotto($categoria, $sottocategoria, $titolo, $testo, $prezzo, $trasporto, $quanti, $misura, $disp) {

    $disp = (string)$disp;
    var_dump($disp);

    $query = "INSERT INTO prodotti (categoria, subcat, titolo, testo, prezzo, trasporto, data, quanti, misura, disp) VALUES ('$emk', '$categoria', '$sottocategoria', '$titolo', '$testo', '$prezzo', '$trasporto', now(), '$quanti', '$misura', STR_TO_DATE('$disp', '%Y/%m/%d'))";

    $go = mysql_query($query);

    if ($go) {

    $out = true;

    } else {

    echo $query;

    $out = 'ERRORE MYSQL: '.mysql_error();

    }

    return $out;

    }




    <<<<<-- PHP --->>>>>>
    Ultima modifica di SludgeSlammer; 22-05-2015 a 15:18
    Sludge Slammer

  6. #6
    1. Perchè hai modificato il formato data ('%Y/%m/%d') avresti dovuto lasciare quello che ti avevo impostato io. Il formato non riguarda l'output voluto ma quello input. Se la tua data è in formato gg/mm/aaaa allora devi utilizzare '%d/%m/%Y'

    2. Cosa ti stampa var_dump($disp) ??

    3. Se sei tu a formattare la data in gg/mm/aaaa ( $x2 = "$ndata1/$ndata2/$ndata3"; ) allora perchè non la formatti direttamente nel formato date sql ( aaaa-mm-gg ) ?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    var_dump mi stampa un string(25), ho provato anche a lasciare tutto senza modifiche ma sql mi da il seguente errore: INSERT INTO prodotti (categoria, subcat, titolo, testo, prezzo, trasporto, data, quanti, misura, disp) VALUES ('TERRENI', 'TERRENI', 'asdfsdkllk', 'adsfklasdklfjkasdf', '23434', 'Trasporto incluso', now(), '23423', 'g', STR_TO_DATE('‎08‎/‎05‎/‎2015', '%d/%m/%Y'))ERRORE MYSQL: Column 'disp' cannot be null. Ho anche provato a mettere la data già formatta con le barrette di separazione ma non mi inserisce nulla in tabella
    Ultima modifica di SludgeSlammer; 22-05-2015 a 15:31
    Sludge Slammer

  8. #8
    Fai una stampa di $query prima di eseguirla: echo $query;
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Era quella di prima: INSERT INTO prodotti (categoria, subcat, titolo, testo, prezzo, trasporto, data, quanti, misura, disp) VALUES ('TERRENI', 'TERRENI', 'asdfsdkllk', 'adsfklasdklfjkasdf', '23434', 'Trasporto incluso', now(), '23423', 'g', STR_TO_DATE('‎08‎/‎05‎/‎2015', '%d/%m/%Y')). Davvero inspiegabile, io uso Xampp con php 5.6.3 e Windows 10, può centrare?
    Sludge Slammer

  10. #10
    La query mi sembra corretta. Hai provato a copiarla così com'è ed eseguirla a mano (ad esempio con phpMyAdmin)?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.