coloana pentru numere cu zecimale in baza de date

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
ionatan
Mesaje: 94

coloana pentru numere cu zecimale in baza de date

Salut,
Intr-un tabel in baza de date am o coloana in care adaug cifre de ex 1848,33
Ce tip de coloana trebuie sa aplic? iar daca cineva adauga prin formular 1.848,33 imi da eroare cum ar trebuii sa fac insertul in BD
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
Salut
Pentru numere cu zecimale poti sa faci o coloana de tip "float" sau "double".

Cod: Selectaţi tot

nrs FLOAT NOT NULL
- Valoarea de forma: 1.878,35 nu e un format de numar acceptat de standardul sql; dupa zecimale (care sunt dupa punct '.') nu se mai adauga alt punct sau virgula. Daca numarul e incorect, va returna Eroare de tip Warning.
Ca mysql sa nu mai dea erori de tip "Warning", la insert poti sa folosesti instructiunea "ignore", asa:

Cod: Selectaţi tot

INSERT IGNORE INTO table_name (col1, nrs)
VALUES ('abc ...', '1.848,33');
- Acest insert va adauga in coloana "nrs" (care e de tip Float) numarul: 1.848; ignorand virgula si ce e dupa ea.
- Indicat e sa setezi campul din formular de tip numar (type="number") ca sa se poata adauga doar valori numerice corecte.

ionatan Mesaje: 94
Salutari,
Când face cineva un Update în casuta input îi apare 1.848,33
Am tot încercat în codul de Update sa elimin punctul iar virgula sa o transform în punct sa rămână 1848.33 pentru ca vreau sa lucrez cu zecimale și nu am reușit.
Mulțumesc.
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

andras Mesaje: 430
Depinde cum e formatat cimpul input, nu este obligatoriu ca valoarea care apare in input sa fie exact ce salveaza in tabela. Verifica variabila POST inainte de INSERT. Dar cel mai bine este sa faci input type="number" (standard HTML5) asa cum ti-a spus MarPlo.

MarPlo Mesaje: 4343
Daca vrei sa stergi punctul si sa inlocuiesti virgula cu punct, poti aplica in php codul din acest exemplu la acele valori de formular:

Cod: Selectaţi tot

$nr ='1.848,33';
$nr = str_replace(['.', ','], ['', '.'], $nr);
echo $nr;  // 1848.33

ionatan Mesaje: 94
Mulțumesc pentru codul php. eu când dau clik pe butonul edifeaza mie îmi rămâne exact 1.848,33 pentru ca nu mă trimite pe o alta pagina.php în care sa facă selectul la toate input-urile apoi sa le editez.... Merci încă o data.
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

ionatan Mesaje: 94
Revin la str_replace. Din anumit motiv nu pot pune input type="number"
Cum as putea sa elimin orice litera sau alt caracter iar în loc de virgula sa înlocuiesc cu punct ?
Mulțumesc
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje: 4343
Vezi raspunsul de la pagina: pastrare-numere-virgula-punct-php-t2447.htm

Subiecte similare