Miten tallennetaa tietokantaa decimaali lukuja tai muuta. Tarkoituksena olisi tallentaa
esimerkiksi 5.50€ (ilman euronmerkkiä)
Tallennan sen normaalisi ja tietokannassa on decimaaliluku arvona. Mutta tieto ei mene sinne decimaalilukuna.
Luulisin sen olevan desimaaliluku suomeksi. Arvaan myös, että kyseessä on PHP MySQL:n kanssa.
Itselläni se menee vallan loistavasti VARCHAR -tyyppiseen soluun. Tiedä häntä onko paras keino (muuttujan muuttamisessa numeroksi voi olla ongelma), joku überimpi saa sitten spekuloida sekunnin tuhannesosiansa...
Sopivin saraketyyppi taitaa kuitenkin olla FLOAT...
Miksei DECIMAL(5,2)?
Floatillla sain toimimaan.. Laittoi sillekkin arvoksi 10,2 niin ei näytäänyt mitään tämmöistä: 3.124123521235
mutta tuolla DECIMAL tyypillä se ei onnistunut.
Tässäkin on kyllä se huono puoli, että pakotetaan käyttämään pistettä, sillä pilkulla se ei erottele lukuja vaan laittaa suoraan arvoksi esimerkiksi 5.00. Olisiko tähän helloa kikkaa, eli siis jos käyttäjä laittaa , niin se muunnetaan automaattisesti pisteeksi.
Helpohko apuneuvo olisi muuttaa annettu luku tekstiksi (ellei se jo valmiiksi ole) ja käyttämällä funktiota str_spelace.
Muutoksen voi hoitaa PHP:ssä vaikka näin:
$luku = (float)str_replace(",", ".", $luku);
Nyt luku on loppujen lopuksi oikeassa muodossa riippumatta siitä, käytettiinkö desimaalierottimena pilkkua vai pistettä. Tämän muutoksen jälkeen luku on valmis tietokantaan tallennettavaksi.
Kiitoksia, nyt toimii niinkuin pitääkin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.