2016-09-29 4 views
0

dies ist mein Code Ich mag die Summe der Felder summieren, aber nicht auf diesen irgend jemanden zu tun in Bezug auf in diesem helfenwie in foreach-Schleife in PHP

<?php 
    $hostname="localhost"; 
    $username="root"; 
    $password=""; 
    $db = "usman"; 

    $dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password); 

    foreach($dbh->query("SELECT COUNT(*) as cnt 
    FROM ams 
    WHERE empid= {$_SESSION['sess_user_id']} 
    GROUP BY leavetype 
    HAVING leavetype =    
    sum('Absent'), sum('Annual'),sum('Medical'), 
    sum('Casual') , sum('LWOP') ") as $GrandTotal) 
    { 
      echo "<table ><tr ><td style='border: 0px; ' >" .   
      $GrandTotal['cnt'] . "</td></tr></table>";  
      echo "<br>"; 
    } 
?> 
+0

Alles, was Sie anzeigen möchten, geht nach SELECT, nicht mit – aynber

+0

'SUM (Spalte)' und nicht 'SUM ('Zeichenfolge')'. http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_sum und stellen Sie sicher, dass Sie die Sitzung gestartet haben. –

+5

Die Frage sollte lauten: "Wie kann ich meinen Code so einrücken, dass er lesbar ist?" – RiggsFolly

Antwort

1

zu haben, ist ein Filter auf gruppierte Ergebnisse, nicht ein Weg

etwas wählen ich würde vermuten, Sie so etwas wie

SELECT 
    leavetype, 
    count(*) as cnt 
FROM ams 
where empid= {$_SESSION['sess_user_id']} 
and leavetype in ('Absent', 'Annual','Medical', 'Casual' , 'LWOP') -- if you want only certain leave types 
GROUP BY leavetype 

benötigen Wenn Sie nur die Anzahl aller dieser leavetypes wollen, tun nur

SELECT 
count(*) as cnt 
FROM ams 
where empid= {$_SESSION['sess_user_id']} 
and leavetype in ('Absent', 'Annual','Medical', 'Casual' , 'LWOP') 
+0

Die Gruppierung wird wahrscheinlich nicht benötigt. Da zeigt der PHP nur eine Zählung an. – LukStorms

+0

@LukStorms Vielleicht, aber der "nicht arbeitende" Code lässt mich denken, dass es erwünscht ist. Wer weiß, wer weiß ... –

+0

Leave-Typ ist eine Spalte, und ich möchte die Summe aller Einträge gegen emp-ID aus dieser Abwesenheitsspalte zählen. like ('Abwesend', 'Jährlich', 'Medizinisch', 'Lässig', 'LWOP') im Abbruchtyp ist 6 Show als Gesamtsumme –