2017-07-29 6 views
0

"RE"という名前のテーブルに各ユーザーが作成したエントリの数を表示する必要があります。 "DD"という列で、空でないエントリだけを数えなければなりません。 結果を表に表示する必要があります。 私はすでにそのようにそれを実行しようとしましたが、無駄に:各ユーザーが作成した行数を表示

<?php 
if ($username = 'John Doe') { 
    echo "<table>"; 
    $query = "SELECT user, COUNT(DISTINCT DD) AS number FROM RE GROUP BY user"; 

    $results = mysqli_query($conn, $query); 

    for ($i = 0; $i < count($results); $i++) { 

     foreach ($user[$i] as $field => $value) { 

      if ($field == "number") {$number = $value;} 
     } 
     echo "<tr><td>".$user."</td><td>".$number."</td></tr>"; 
    } 
    echo "</table>"; 
} 

?> 

私は何をしないのですか?

+3

クエリは実行されますか?もしそうなら、あなたの現在の出力は何ですか?それはなぜ間違っていますか? –

+0

クエリが実行され、結果がテーブルに表示されます。代わりに何も起こらない。 –

+0

コードのどこでも '$ results'を使用していません。 –

答えて

0

あなたの "空のエントリ"に加えて、NULLに加えて、別個のものがあなたが望むものではなく、また空の文字列を持つことができます。その場合は、NULLではない項目と、空ではない項目を数えることが適切な場合があります。

SELECT user, COUNT(DD) AS number 
FROM RE 
GROUP BY user; 

これは「空」NULLであることを前提としています

SELECT 
    user, 
    SUM(CASE WHEN COALESCE(DD, '') <> '' THEN 1 ELSE 0 END) AS number 
FROM RE 
GROUP BY user 
0

「非空」の結果をカウントする正しい方法は、このようなものです。

+0

私はあなたのソリューションを試してみました。私はAltervistaを使っています)、それは完全に動作します。 ページから実行しようとすると、何も表示されません。だから、私が書いたコードの残りは間違いだと思うが、見つけられないと思う。 –

関連する問題