Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    3

    Problemi con iserimento date tramite form php

    Ho iniziato da poco a smanettare con php e mysql e ho un problema con l'aggiornamento di un database tramite form php.
    Lo schema del db è IdUtente/Utente/... (vari altri campi).../Nascita.
    Tranne IdUtente che un campo di tipo INT, chive primaria, auto_increment e Nascita che è un campo DATE tutti gli altri campi sono VARCHAR.
    Il problema è questo, tutto funziona se inserisco la data di nascita (formato: aaaa-mm-gg) ma se lascio il campo vuoto ricevo un errore del tipo:

    Incorrect date value: '' for column 'Nascita' at row 1

    Se lascio vuoti gli altri campi VARCHAR non ho problemi SE la data è inserita.
    I dati sono inseriti così

    <INPUT type="text" name="IdUtente"> IdUtente

    <INPUT type="text" name="Utente"> Utente

    <INPUT type="text" name="Data"> Nascita


    e la pagina php è questa.

    $IdUtente=$_POST['IdUtente'];
    $Utente=$_POST['Utente'];
    $Nascita=$_POST['Nascita'];

    $result = mysql_query("INSERT INTO utenti VALUES (NULL, '$Utente', '$Nascita')");

    dove NULL si riferisce al IdUtente

    Soluzione?

  2. #2
    <INPUT type="text" name="Data"> Nascita


    $Nascita=$_POST['Nascita'];

    sei incongruente. Spedisci name = Data e poi cerchi nascita

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    3
    E' vero nel postare il codice avevo cambiato un po' di dati e ho fatto casino, comunque il codice che ho messo nella mia pagina php è questo.

    <INPUT type="text" name="Nascita"> Nascita


    $Nascita=$_POST['Nascita'];

    Solo che funziona se inserisco la data, se non la metto invece mi dà errore.
    Non dovrebbe darmi al limite un valore NULL?
    E perché se invece non compilo il campo utente MA metto la data di nascita il form viene accettato?

  4. #4
    potrebbe dipendere da come e' settato sql-mode, dal tipo e default assegnato al campo.

    Uno forse e' un campo varchar che accetta un valore vuoto , l'altro forse no.

    comunque se tu provvedi a passare un valore di default per la data risolvi la cosa.

    <INPUT type="text" name="Data" value="0000-00-00"> Nascita

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    3
    Grazie per il consiglio ma in questo caso la data viene registrata come 0000-00-00 e non come campo vuoto (come credevo).
    Il campo in sql è impostato per poter essere vuoto e di default è NULL.

  6. #6
    Originariamente inviato da fmh76
    Grazie per il consiglio ma in questo caso la data viene registrata come 0000-00-00 e non come campo vuoto (come credevo).
    Il campo in sql è impostato per poter essere vuoto e di default è NULL.
    0000-00-00 e' il valore di un campo DATE vuoto. Non esiste una data "vuota" ... come potresti comparare una data con un campo vuoto? O un numero con un campo vuoto?

    Se lo vuoi vuoto metti il campo come NULL, ma al primo aggiornamento con un campo vuoto ti riappare il campo non piu' null ma empty con valore 0000-00-00. Con NULL il campo NON esiste e non viene proprio considerato salvo espressa richiesta.

    in fase di stampa puoi sempre fare un controllo:

    if($campo == '0000-00-00') { echo campo = ''; }

    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.