View Full Version : [MySQL] Invio un Campo Vuoto , memorizza valore "0"
ciao a tutti , la mia situazione è questa :
form html , riempio i campi e tramite php li memorizzo in un db mysql .
la tabella del db mysql , ha dei campi testo ed altri float ; se nel campo testo non inserisco nulla , non memorizza nulla ( vuoto ) , e così va bene ;
mentre se nel campo float ( che mi serve per mettere valori numerici anche con i decimali ) , memorizzo un valore , lo memorizza , solo che se lo lascio vuoto , memorizza lo ZERO !
qualche idea ?
bye
trallallero
19-07-2007, 09:19
ciao a tutti , la mia situazione è questa :
form html , riempio i campi e tramite php li memorizzo in un db mysql .
la tabella del db mysql , ha dei campi testo ed altri float ; se nel campo testo non inserisco nulla , non memorizza nulla ( vuoto ) , e così va bene ;
mentre se nel campo float ( che mi serve per mettere valori numerici anche con i decimali ) , memorizzo un valore , lo memorizza , solo che se lo lascio vuoto , memorizza lo ZERO !
qualche idea ?
bye
hai sicuramente un DEFAULT 0 nel campo
l´hai creata tu la tabella ?
ciao , si , la tabella l ' ho creata io , ma non sono riuscito a trovare questo valore di default a zero ( tramite phpmyadmin ) l ' ho settato a NULL !
bye
connettiti con il client testuale e posta l'output di:
DESC NOME_TABELLA;
trallallero
19-07-2007, 09:50
ciao , si , la tabella l ' ho creata io , ma non sono riuscito a trovare questo valore di default a zero ( tramite phpmyadmin ) l ' ho settato a NULL !
bye
aspe´ che faccio qualche prova (sono molto piu´esperto in Oracle)
trallallero
19-07-2007, 09:55
come immaginavo, se non specifichi niente lo lascia NULL:
mysql> create table test ( i integer, f float);
Query OK, 0 rows affected (0.04 sec)
mysql> desc test;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i | int(11) | YES | | NULL | |
| f | float | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> insert into test (i) values (1);
Query OK, 1 row affected (0.00 sec)
mysql> select * from test;
+------+------+
| i | f |
+------+------+
| 1 | NULL |
+------+------+
1 row in set (0.00 sec)
fai come dice kingv e facci vedere l´output ;)
connettiti con il client testuale e posta l'output di:
DESC NOME_TABELLA;
ciao , mi spiegheresti i passi per connettermi tramite client testuale ...
bye
trallallero
19-07-2007, 10:32
ciao , mi spiegheresti i passi per connettermi tramite client testuale ...
bye
su che sistema lavori ?
il comando e´ questo:
mysql -u<utente> -p<password> dbname
esempio
mysql -upippo -ppluto topolinia
io ho il tutto installato sul mio PC , Win XP .
sono riuscito ad entrare nella console , ma non ottengo alcun risultato ..
trallallero
19-07-2007, 12:16
io ho il tutto installato sul mio PC , Win XP .
sono riuscito ad entrare nella console , ma non ottengo alcun risultato ..
sei ti spieghi meglio magari ti si puo´ aiutare ;)
cosa hai provato a fare ?
ok , allora :
tramite prompt dei comandi arrivo nella cartella dove c' è il file mysql.exe
e lancio la riga di comando come mi hai suggerito , e mi appare questo :
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 67 to server version: 5.0.16-nt
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
a questo punto , se digito "desc nome_tabella" , mi va accapo , visualizzando questo : " -> "
che devo fare ?
bye
DESC NOME_TABELLA;
col punnto e virgola per terminare il comando.
ecco , mi mancava il ;
ecco il log :
+----------------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+----------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| Data | date | YES | | NULL | |
| Luogo | text | YES | | NULL | |
| campo1 | float | YES | | NULL | |
| campo2 | float | YES | | NULL | |
|+----------------------+----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
trallallero
19-07-2007, 12:52
ecco , mi mancava il ;
ecco il log :
+----------------------+----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+----------+------+-----+---------+----------------+
| ID | int(11) | NO | PRI | NULL | auto_increment |
| Data | date | YES | | NULL | |
| Luogo | text | YES | | NULL | |
| campo1 | float | YES | | NULL | |
| campo2 | float | YES | | NULL | |
|+----------------------+----------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
sembra giusta, a sto punto fai vedere com´e´ la insert
ok , ecco la insert :
$sql="INSERT INTO miatabella (Data, Luogo, campo1, campo2) VALUES ('".$data."', '".$_POST['luogo']."', '".$_POST['campo1']."', '".$_POST['campo2']."')";
$data , lo costruisco io dall ' insieme di 3 campi ...
bye
trallallero
19-07-2007, 14:04
ok , ecco la insert :
$sql="INSERT INTO miatabella (Data, Luogo, campo1, campo2) VALUES ('".$data."', '".$_POST['luogo']."', '".$_POST['campo1']."', '".$_POST['campo2']."')";
$data , lo costruisco io dall ' insieme di 3 campi ...
bye
i campi float sono .$_POST['campo1'] e .$_POST['campo2']
e´ ovvio che non sia un problema di mysql ma di php (che io non conosco)
ti conviene stampare (a video) la query e vedrai che lo zero ce lo mette Mr Php ;)
Se vuoi lasciarli nulli fai:
$sql="INSERT INTO miatabella (Data, Luogo) VALUES ('".$data."', '".$_POST['luogo']."')";
devo essere sincero , credevo che fosse mysql , perchè , dopo la query ho fatto visualizzare a video , il contenuto di campo1 , ed era vuoto ( quindi non metteva lo zero ) .
cmq farò qualche prova e ti faccio sapere .
bye
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.