2009-10-21 18 views
0

Je suis un novice en matière de SQL et PHP, et j'essaie d'arrondir un résultat de prix moyen et d'enlever les zéros supplémentaires qui apparaissent actuellement.L'arrondi SQL et la troncature, nécessite une explication approfondie

Actuellement, mon résultat se présente comme suit: 3,005000 $

Mon code est actuellement libellé comme suit:

$result = mysql_query("SELECT AVG(price) FROM milk WHERE price > 0 "); 
$row = mysql_fetch_row ($result); 

J'ai trouvé plusieurs exemples de SQL arrondi et troncature, mais malheureusement, les tutoriels que j'ai vu me fournir sans informations utiles sur où et comment je suis supposé mettre en œuvre ces changements. Cela me laisse faire des suppositions sur les endroits où effectuer des changements - aucun d'entre eux n'a fonctionné jusqu'à présent (évidemment).

Si quelqu'un pouvait me donner un exemple de comment arrondir et tronquer mes résultats, ce qui inclut exactement où je dois faire ces changements dans ma configuration actuelle, ce serait très utile et je serais très reconnaissant! Je suis vraiment désolé si ma n00bishness rend plus difficile d'expliquer la solution.

Merci!

Répondre

0

MySQL a une fonction ROUND().

Alors juste autour de votre moyenne dans votre requête SQL:

$result = mysql_query("SELECT ROUND(AVG(price),2) FROM milk WHERE price > 0 "); 

Si vous vous retrouvez avec des problèmes de mise en forme, vous pouvez utiliser la fonction de PHP number_format() pendant la sortie.

+0

Merci beaucoup! –

2

La mise en forme des données doit être effectuée dans le script qui crée la requête, et non dans la requête elle-même. Par exemple, en PHP, vous pouvez écrire ce qui suit à l'aide sprintf:

$formatted_price = sprintf("%01.2f", $unformatted_price); 

(Exemple complète de the PHP manual).

De même, généralement, les valeurs de prix sont stockées sous la forme decimal types ou entiers mis à l'échelle, et non pas à virgule flottante, puisque les valeurs à virgule flottante ne sont pas exactes.

+0

Merci beaucoup pour votre aide James !! –

+0

+1 n'utilise jamais de nombres à virgule flottante pour stocker des montants en argent. – bobince