. au lieu de , dans le traitement d'un formulaire [Résolu]

Signaler
Messages postés
106
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
8 mai 2021
-
Messages postés
106
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
8 mai 2021
-
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

Messages postés
32942
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
3 557
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;

Messages postés
17
Date d'inscription
samedi 13 février 2021
Statut
Membre
Dernière intervention
5 mars 2021
2 >
Messages postés
106
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
8 mai 2021

Il y a longtemps que j'ai pas fait de php mais :

 $a = "2.5"; // string -> 2.5
 $b = (int)"2.5"; // number type INT -> 2
 $c= (float)"2.5"; // number type FLOAT -> 2.5

 $d = "2,5"; // string -> 2.,5
 $e = (int)"2,5"; // number type INT -> ??
 $f  = (float)"2,5"; // number type FLOAT -> ??

// FR to US
$nbUs = ( float)str_replace("2,5", ",", "." ); // -> number Type Float 2.5


$h_prepa=(float)str_replace($h, "," , "." );


Cdlt,
Messages postés
106
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
8 mai 2021
>
Messages postés
17
Date d'inscription
samedi 13 février 2021
Statut
Membre
Dernière intervention
5 mars 2021

Avec cela, 7,6 dans la case html après traitement php ça me donne :

0 heure correspond(ent) à 0 heure et 0 minute.

Merci d’avance
Messages postés
17
Date d'inscription
samedi 13 février 2021
Statut
Membre
Dernière intervention
5 mars 2021
2 >
Messages postés
106
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
8 mai 2021

Avant de passer dans ta procédure assure toi que tes données entrée soit correct avec :

- gettype( $var ) et assure toi que chaque variables retourne un type "integer" ou "double" et non un string

Car la logique est bonne.


h = 2.5 // float
h_prepa= 2.5 // float
h_res= 2 // int
m_prepa= 2.5 -2 // = 0.5
m_res= 0.5 * 60
Messages postés
17
Date d'inscription
samedi 13 février 2021
Statut
Membre
Dernière intervention
5 mars 2021
2 >
Messages postés
106
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
8 mai 2021

Je t'ais dis des bêtise ce n'est pas :

$h_prepa=(float)str_replace($h, "," , "." );

mais
$h_prepa=(float)str_replace("," , ".", $h );


[url=https://ibb.co/sPzv0KF][img]https://i.ibb.co/GJNvKWV/test.png[/img][/url]
Messages postés
106
Date d'inscription
dimanche 9 août 2009
Statut
Membre
Dernière intervention
8 mai 2021
>
Messages postés
17
Date d'inscription
samedi 13 février 2021
Statut
Membre
Dernière intervention
5 mars 2021

merci et encore désolé, je suis vraiment débutant.

Cela à bien résolu le problème.