2017-07-29 1 views
0

Je dois afficher le nombre d'entrées créées par chaque utilisateur dans une table nommée "RE". Seules les entrées non vides doivent être comptées, par une colonne nommée "DD". Le résultat doit être affiché dans un tableau. je l'ai déjà essayé de le faire comme ça, mais en vain:Affichage du nombre de lignes créées par chaque utilisateur

<?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>"; 
} 

?> 

Qu'est-ce que je manque?

+3

La requête est-elle exécutée? Si oui, quelle est votre sortie actuelle et pourquoi est-ce faux? –

+0

La requête s'exécute et doit afficher les résultats dans une table. Rien ne se passe, à la place. –

+0

Vous n'utilisez pas '$ results' n'importe où dans votre code. –

Répondre

0

En haut de ma tête, en comptant distinct peut ne pas être ce que vous voulez, et vous pouvez également avoir une chaîne vide, en plus de NULL pour vos "entrées vides". Si c'est le cas, il peut être approprié de compter les entrées qui ne sont pas NULL et une chaîne non vide.

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

La bonne façon de compter les résultats "non vides" est quelque chose comme ceci:

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

Cela suppose que "vide" est NULL.

+0

J'ai essayé votre solution et lorsque la requête est exécutée directement sur la base de données (I J'utilise Altervista) cela fonctionne parfaitement. Lorsque j'essaie de l'exécuter à partir de la page, il ne montre rien. Donc, je pense que j'ai fait une erreur est le reste du code que j'ai écrit, mais ne peux pas le trouver. –