PDA

View Full Version : [MySQL] Invio un Campo Vuoto , memorizza valore "0"


tonydm
19-07-2007, 08:51
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 ?

tonydm
19-07-2007, 09:31
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

kingv
19-07-2007, 09:46
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 ;)

tonydm
19-07-2007, 10:25
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

tonydm
19-07-2007, 10:45
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 ?

tonydm
19-07-2007, 12:21
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

kingv
19-07-2007, 12:35
DESC NOME_TABELLA;

col punnto e virgola per terminare il comando.

tonydm
19-07-2007, 12:43
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

tonydm
19-07-2007, 13:53
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']."')";

tonydm
19-07-2007, 14:29
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