J'ai une devise sous forme de saisie avec un format comme celui-ci 1000,00
et je veux enregistrer dans la base de données au format décimal comme 1000,00
comment le changer dans le contrôleur, une fois enregistré, il deviendra automatiquement format décimal?
$num = '3,500.20'; $formattedNum = number_format($num, 3, '', ''); echo $formattedNum;
le code ci-dessus est converti en 3000 et non en 3500.20
3 Réponses :
vous pouvez utiliser str_replace
de php pour obtenir le résultat:
<?php $num = '3,500.20'; $formattedNum = str_replace(',', '', $num); echo $formattedNum; ?>
str_replace
funcation remplacez votre ',' par '' a valeur vide,
Pour en savoir plus sur str_replace
, vous pouvez lire ici a>
Vous pouvez simplement supprimer la virgule avec str_replace (',', '', $ num)
par exemple.
Le format d'entrée ne devrait pas affecter la valeur d'entrée réelle qui est 3500,20, cela ne semble pas être une bonne pratique.
De plus, number_format n'est pas pour convertir une chaîne en nombres, au contraire, il crée une jolie chaîne à partir de nombre (entier / flottant).
Vous pouvez essayer str_replace pour le résultat souhaité: -
$number = '3,500.20'; $number = str_replace(',', '', $number); echo $number;
Sortie 3500.20
avez-vous essayé
$ result = str_replace (',', '', $ num);
?Utilisez JavaScript pour vérifier d'abord le formulaire et invitez l'utilisateur à indiquer le format d'entrée correct. De cette façon, vous ne jouez pas avec les entrées des utilisateurs. Vous devez toujours vérifier à nouveau en PHP mais il vaut mieux demander à l'utilisateur un format correct que d'essayer de l'analyser correctement
remplacez la virgule par du blanc,
str_replace (',', '', $ num);
et faites de votre base de données une colonne décimale avec 2 décimales. DECIMAL (10,2) pendant la migration.