- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- numeri e mysql
-
numeri e mysql
ciao a tutti ,
devo gestire alcuni numeri in mysql , precisamente dei prezzi tipo :
1.550
ora io li ho iseriti come campo varchar, pero il problema che ci e associato un motore di ricerca che seleziona i risultati in base al prezzo e cosi facendo invece non mi fa la distinzione,
che tipo di campo devo usare per farlo leggere da sql conme numero?
-
ciao,
perchè non usi i campi SMALLINT, MEDIUMINT e INT invece che i varchar?leggi qui http://database.html.it/guide/lezione/2444/tipi-di-dati/
-
INT prende numeri con piu di 11 cifre se non erro
non penso che tu abbia un prezzo cosi grande
-
INT è a 4 byte, cioè 32 bit, cioè da -2,4 miliardi a +2,4 miliardi.. non dovresti avere problemi.. se i numeri sono solo positivi puoi mettere UNSIGNED INT, che và da 0 a più di 4 miliardi..
ciao
-
@kaisersose said:
ciao a tutti ,
devo gestire alcuni numeri in mysql , precisamente dei prezzi tipo :
1.550
ora io li ho iseriti come campo varchar, pero il problema che ci e associato un motore di ricerca che seleziona i risultati in base al prezzo e cosi facendo invece non mi fa la distinzione,
che tipo di campo devo usare per farlo leggere da sql conme numero?
per archiviare prezzi in euro usa il campo decimal (9,2) , il 2 indica i decimali che vuoi usare dopo la virgola
Ciao
-
infatti lo impostato int pero se nel prezzo scrivi 1.000 poi riporta 1
se scrivi 1000 lo riporta giusto,
il problema che il cliente li scrive 1.000 e non mi va di dire al cliente di scrivere 1000 invece che 1.000 cioe mi sembra sbagliato e lui che paga e e uno abbastanza pignolo su ste cose.
ho provato a impostarlo double ma e la stessa cosa.
-
@kaisersose said:
infatti lo impostato int pero se nel prezzo scrivi 1.000 poi riporta 1
se scrivi 1000 lo riporta giusto,
il problema che il cliente li scrive 1.000 e non mi va di dire al cliente di scrivere 1000 invece che 1.000 cioe mi sembra sbagliato e lui che paga e e uno abbastanza pignolo su ste cose.
ho provato a impostarlo double ma e la stessa cosa.
Quello che scrive il cliente deve essere parserizzato, altrimenti l'unico modo è quello di usare il vachar ma non è corretto(non puoi fare select particolari, somme etc direttamente da db sul campo prezzo).
prima di inserire su db fai un bel
[php]$prezzo = str_ireplace(".", "", $form_prezzo);[/php]
così elimini il punto dalla stringa, e anche se il cliente non mette il punto va bene lo stesso, e inserisci sul db la variabile $prezzo quando invece prendi i valori dal db e stampi a video utilizza
la funzione [php]number_format($number, 2, ',', '.');[/php]e poi salva tutto utilizzando nel db il campo decimal(9,2)
Ciao
-
Grazie !!!!!!!!!!!!
:=)