Problème de résultat

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de résultat

par Networld » 31 oct. 2008, 00:33

D'accord, merci pour les infos, je vais modifier cela et je teste d'ici demain matin.

Je modifie mon code et test, ensuite je mettrai que le problème est reglé, en espérant que je ne fasse pas d'autres erreurs.

En tout cas, merci pour l'aide, c'est sympa :)

par charabia » 31 oct. 2008, 00:24

En fait lorsque tu utilises number_format, les 2 paramètres $mdm_metal et $metal_actuel doivent être des nombres pour que ça fonctionne.

Or $mdm_metal est transformé par la fonction "mdmm". Par exemple si tu rentres 21000 tu auras en sortie 21 000. C'est donc l'espace créé qui pose problème et c'est pour ça que $metal_a_envoyer n'est que la soustraction de ce qu'il y a à gauche de l'espace, d'où le résultat 106 au lieu de 106 000.

Il ne faut donc pas utiliser number_format pour un résultat que tu vas utiliser dans un autre number_format comme c'est le cas maintenant.

par Networld » 31 oct. 2008, 00:16

par exemple "21".

par charabia » 31 oct. 2008, 00:16

Que rentres-tu comme donnée pour le champ niveauf de ton formulaire ?

par Networld » 31 oct. 2008, 00:14

Ca fonctionne (dans un nouveau document). Je copie et colle dans ma page et j'ai toujours le même résultat :oops:

par yaug » 31 oct. 2008, 00:12

en mettant ceci :
$mdm_metal = 127000; 
$metal_actuel = 21000;//number_format($_POST['fmetal'], 0, ',', ' ');;
j'obtiens bien 106 000.
Donc..
Bizzare.
Il serait donc pratique que tu nous dise ce qui t'es exactement retourné par le code de charabia.


PS : Rah les ogame like :x

par charabia » 31 oct. 2008, 00:07

Que te donne juste ce code ?
<?php
$mdm_metal = 127000;
$metal_actuel = 21000;
$metal_a_envoyer = number_format(($mdm_metal - $metal_actuel), 0, ',', ' ');
echo $metal_a_envoyer;
?>

par Networld » 31 oct. 2008, 00:06

Avec
$metal_a_envoyer = number_format(($mdm_metal - $metal_actuel), 0, ',', ' '); // pour mine de métal seulement
$cistal_a_envoyer = number_format(($mdm_metal - $cristal_actuel), 0, ',', ' '); // pour mine de métal seulement
J'ai toujours le même résultat :oops:

par charabia » 30 oct. 2008, 23:46

$metal_a_envoyer = number_format((($mdm_metal - $metal_actuel), 0, ',', ' ');
une parenthèse en trop tu as ;)

Corrigé :
$metal_a_envoyer = number_format(($mdm_metal - $metal_actuel), 0, ',', ' ');

Problème de résultat

par Networld » 30 oct. 2008, 23:24

J'ai un problème de résultat pour un caclul.

Pour résumé, j'ai un formulaire dont je vais récupérer les informations pour un calcul :
// Calcul ressources Mine de métal

function mdmm($niveau)  // Métal
{ 
   $mdm_metal = number_format(60 * pow(1.5, ($niveau - 1)), 0, ',', ' '); 
   return $mdm_metal; 
} 

function mdmc($niveau) // Cristal
{ 
   $mdm_cristal = number_format(15 * pow(1.5, ($niveau - 1)), 0, ',', ' '); 
   return $mdm_cristal; 
} 

$mdm_metal = mdmm($_POST['niveauf']); 
$mdm_cristal = mdmc($_POST['niveauf']);


// Récupération des information du formulaire + à afficher

$metal_actuel = number_format($_POST['fmetal'], 0, ',', ' ');;
$cristal_actuel = number_format($_POST['fcristal'], 0, ',', ' ');;
$deuterium_actuel = number_format($_POST['fdeuterium'], 0, ',', ' ');;

$metal_a_envoyer = number_format((($mdm_metal - $metal_actuel), 0, ',', ' ');
$cistal_a_envoyer = number_format(($mdm_metal - $cristal_actuel), 0, ',', ' ');


// Affichage du résultat

echo "<strong>Mine de m&eacute;tal :</strong><br /><br />";
echo "<strong>Plan&egrave;te :</strong> $planete<br />";
echo "Metal : $mdm_metal<br/>";
echo "M&eacute;tal actuel : $metal_actuel<br />";
echo "M&eacute;tal &agrave; envoyer : $metal_a_envoyer<br />";
echo "Cristal : $mdm_cristal<br />";
echo "Cristal actuel : $cristal_actuel<br />";
echo "Cristal &agrave; envoyer : $cistal_a_envoyer<br />";

Mais j'ai un problème avec un résultat à afficher, en fait . il s'agit de $metal_a_envoyer et de $metal_a_envoyer. Un petit exemple :

$mdm_metal = 127 000
$metal_actuel = 21 000
Résultat afficher pour $metal_a_envoyer : 106 (alors qu'il devrait afficher 106 000).


Je ne comprends pas où est mon erreur, cela fait depuis un moment que je cherche (je débute :) ). Pourriez-vous m'aider?