2016-05-25 5 views
0

データベースから引き出された製品をループすると、一部の製品価格が完全なintとして表示されます。たとえば£69ですが、一部は£69.00と正しく表示されています。なぜ私はいくつかの製品が正しく表示されているのか、他の製品が表示されていないのか分かりません。MYSQLデータベースからPHPで£69.00の代わりに69ポンドの価格が表示されています

私のデータベースの価格列は10進数(10,2)であり、すべての製品のすべての値には2つの小数点が含まれています。

フロントエンドにデータを表示して、できるだけ詳細を表示し、関連する詳細を省略した手順を示します。データで

$pageContent = getHomeContent($conn); 


function getHomeContent($conn) 
{ 
    $topProducts = getTopProducts($conn); 
    //I do more here but nothing relevant to my problem 

    $homeContent = [ 
     'topProducts' => $topProducts 
    ]; 

    return $homeContent; 
} 


function getTopProducts($conn) 
{ 
    $companyId = companyId(); //returns an integer 
    $products = []; 

    $sql = "SELECT products.id, products.name,products.description, products.feature_image , products.price, products.slug,products.special_offer,products.special_offer_start , category.slug as category_slug 
     FROM products 
     JOIN category_product ON products.id = category_product.product_id 
     JOIN category ON category.id = category_product.category_id WHERE products.company_id = ". $companyId ." 
     ORDER BY products.amount_sold DESC LIMIT 3"; 

    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     // output data of each row 
     while($row = $result->fetch_assoc()) { 
      $products[] = $row; 
     } 
    } 
    return $products; 
} 

私は単にforeachのは、次のようになります:私は配列に(pageContentを)しますprint_rとき

<?php 
    foreach($pageContent['topProducts'] as $product){ 
     ?> 
     <div class="col-xs-12 col-sm-4"> 
      <article class="product"> 
       <img src="<?= $product['feature_image'] ?>" class="img-responsive"/> 
       <span class="green-header">&pound;<?= $product['price'] ?></span> 
      <!-- More goes here but again, its not relevant to my problem -->     
      </article> 
     </div> 
     <?php 
    } 
?> 

は次のようになります。

Array 
(
    [topProducts] => Array 
     (
      [0] => Array 
       (
        [id] => 136 
        [name] => product name 
        [description] => product description 
        [feature_image] => product url 
        [price] => 69 
        [slug] => product-slug 
        [special_offer] => 0 
        [special_offer_start] => 2013-03-19 
        [category_slug] => product slug 
       ) 

      [1] => Array 
       (
        [id] => 136 
        [name] => product name 
        [description] => product description 
        [feature_image] => product url 
        [price] => 69.00 
        [slug] => product-slug 
        [special_offer] => 0 
        [special_offer_start] => 2013-03-19 
        [category_slug] => product slug 
       ) 

      [2] => Array 
       (
        [id] => 136 
        [name] => product name 
        [description] => product description 
        [feature_image] => product url 
        [price] => 78.00 
        [slug] => product-slug 
        [special_offer] => 0 
        [special_offer_start] => 2013-03-19 
        [category_slug] => product slug 
       ) 

     ) 
) 

誰もがいずれかを持っていますアイデア?

答えて

1

価格はnumber_format()の機能を使用してください。 Clickここにかかわらず、データベースから来るものの機能

<span class="green-header">&pound;<?= number_format($product['price'],2) ?></span> 
+0

ありがとうございます、それは私のために働きます。しかし、回避策のようであり、なぜ実際に起こっているのかは分からない。あなたは何か考えていますか? –

+0

私たちは厳密にすべてのレコードを期待されるフォーマットで表示するためにnumber_format()関数からいくつかのレコードが動作していると言及しているため、この解決策を提案します。 – Mujahidh

1

をチェックするために、あなたは常にPHPの組み込み番号形式を使用することができます。それがこのシナリオに入る方法です。 Reasonは、PHPが値69.00を見たときに、意味のある分数部分を持たないので自動的にintにキャストします。あなたの分数を取得するには、次のような数値形式を使用してください。

<?php 
     $price = number_format($product['price'],2); 
     <span class="green-header">&pound;<?php echo price; ?></span> 
関連する問題