. au lieu de , dans le traitement d'un formulaire

Résolu
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -  
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Pourquoi dans mon formulaire, je dois mettre 7.6 au lieu de 7,6 pour que sa affiche bien les données correctes (7 heures et 36 minutes) lors de l'éxecution php svp ?

Si j'écris dans le formulaire 7,6 au lieu de 7.6, cela m'affiche à l'éxecution 7 heures et 00 minutes.

Merci d'avance.

Je suis sous php 5.6.

Voici mon code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<?php

header('Content-type: text/html; charset=utf-8');

//------------------------------------------------------------//

if (empty($_POST['calcul_h_to_hm'])){
?>
<form method="post" action="">
Heure(s) à convertire : <input type="text" name="h" /> (Il faut utiliser le "." au lieu de la ",") <br /><br />
 <input type="submit" name="calcul_h_to_hm" value="Calculer" />
</form>
<?php
}
?>
<?php if (isset($_POST['calcul_h_to_hm'])){
$h=$_POST['h'];
$h_prepa=number_format($h, 2, '.', ',');
$h_res=intval($h_prepa);
$m_prepa=$h_prepa-$h_res;
$m_res=((($h_prepa-$h_res))*60);
if ($h_res < 2) {
$h_txt = 'heure';
}
elseif ($h_res >= 2) {
$h_txt = 'heures';
}
if ($m_res < 02) {
$m_txt = 'minute';
}
elseif ($m_res >= 02) {
$m_txt = 'minutes';
}
echo '<center>'.number_format($h_prepa, 2, ',', '.').' '.$h_txt.' correspond(ent) à '.$h_res.' '.$h_txt.' et '.$m_res.' '.$m_txt.'.</center>';
//echo $h_res.'h'.$m_res.'mins';
}
?>


Configuration: Windows / Chrome 88.0.4324.190

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Comme la plus part des langages ... c'est la notation anglaise qui est utilisée;..

Voir la doc de php

Les nombres à virgule flottante (aussi connus comme "floats", "doubles", ou "nombres réels") peuvent être spécifiés en utilisant les syntaxes suivantes :

<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;

0
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
Si je comprends bien c’est cette ligne qui pose problème d’après ce que vous dites svp ?

$h_prepa=number_format($h, 2, '.', ',');

Mais que dois-je modifier svp ? Je comprends pas

Merci d’avance
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
Tu remplaces
$h_prepa=number_format($h, 2, '.', ',');

par :
$h_prepa=$h ;
0
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
J’ai essayé même résultat si je mets dans la case html 7,6 après exécution php cela me met 7 heures et 00 minutes au lieu du bon résultat qui est 7 heures et 36 minutes, parcontre si dans la case html je mets 7.6 après exécution php sa affiche bien 7 heures et 36 minutes.

Bien à vous
0
devGnode Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   2 > Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention  
 
Il ta dit que :

Comme la plus part des langages ... c'est la notation anglaise qui est utilisée;..


un chiffre à virgule en anglais s'écrit 2.50 en France 2,50

donc → $a = 2,5 + 2,5 ( interdit )

donc si tu as en html 7,55 en entré → bah replace , par . pour en faire un type number ^^
0
Tzmagnum Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   > devGnode Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
Vraiment désolé je suis débutant et malgré vos explications je comprends pas quoi changer dans mon code, j’ai essayé tout ce que je comprenais.

Sur les autres pages de mon site cela fonctionne et j’ai comparé les codes, je sais vraiment pas ce qu’il se passe.

Merci d’avance
0