2016-04-13 25 views
2

"Dönem" sütununda farklı değerlere sahip kayıtların miktarını saymak için aşağıdaki sorguyu kullanıyorum. Dönem sütunu "Kahvaltı", "Öğle Yemeği" veya "Akşam Yemeği" içerir ve formülün çıktısı aylık sütunlara göre gruplanır ve sonra her bir değer için bir satır:MySQL PHP - değişken değer çıkışı için değişken

Ttl. Geri bildirim: Kahvaltı: XXX

Ttl. Geri bildirim: Öğle yemeği: XXX

Ttl. Geri bildirim: Akşam yemeği: XXX

Şimdi, ihtiyacım olan her sayı için bir değişkendir (Kahvaltı, Öğle ve Akşam Yemeği için döndürülen $ mydata ['total'] bölümüne bakın. Geçerli değişken sadece her biri için toplamı döndürür. farklı değer ve bana özellikle belirli bir dönem puanı hitap izin doesnt.

<? 
    $whereParts = array(); 
    if ($property) { 
     $whereParts[] = "Holidex = '$property' "; 
    } 

    $whereParts = array(); 
    if ($outlet) { 
     $whereParts[] = "Outlet = '$outlet' "; 
    } 

    if ($pickyear) { 
     $whereParts[] = "YEAR(Date) = '$pickyear' "; 
    } 

    $sql = ("select distinct period from FB_Feedback_Card_Data"); 

    //BUILD THE FINAL QUERY 
    if (count($whereParts) > 0) { 
     $sql .= " WHERE " . implode('AND ', $whereParts); 
    } 
    //count($whereParts) > 0 

    $result = $mysqli->query($sql) or die('<p>Query to get case Period data from FB_Feedback_Card_Data table failed:' . mysql_error() . '</p>'); 

    while ($row = mysqli_fetch_row($result)) 
    { 
     $period = $row[0]; 
     //echo "$status <br>"; 
     $mydata = stats("period", "$period", "$property", "$outlet", "$pickyear",$mysqli); 

    ?> 

<tr> 
    <td class="result_desc"><?echo "Ttl. Feedback : $period";?></td> 
    <td class="result"><? echo $mydata['a']; ?></td> 
    <td class="result"><? echo $mydata['b']; ?></td> 
    <td class="result"><? echo $mydata['c']; ?></td> 
    <td class="result"><? echo $mydata['d']; ?></td> 
    <td class="result"><? echo $mydata['e']; ?></td> 
    <td class="result"><? echo $mydata['f']; ?></td> 
    <td class="result"><? echo $mydata['g']; ?></td> 
    <td class="result"><? echo $mydata['h']; ?></td> 
    <td class="result"><? echo $mydata['i']; ?></td> 
    <td class="result"><? echo $mydata['j']; ?></td> 
    <td class="result"><? echo $mydata['k']; ?></td> 
    <td class="result"><? echo $mydata['l']; ?></td> 
    <td class="result_ytd"><strong><? echo $mydata['total']; ?></strong></td> 
</tr> 

<? 
// end total status stats 
} 
?> 

cevap

0

sen $ mydata değişkeninden toplamını almak Bununla php fonksiyonu array_sum kullanabilirsiniz.

<td class="result_ytd"><strong><?= array_sum($mydata); ?></strong></td> 

tek şey başka bir değer olmamalıdır dizide s, ama bence burada durum böyle.

0

Bunun için DISTINCT kullanmak gerekmez, aynı kayda aynı değere sahip tüm girdileri koymak ve sonra sadece bunların her saymak gerekecektir, GROUP BY gerekir:

SELECT period, count(period) as period_count FROM FB_Feedback_Card_Data WHERE ... GROUP BY period

+0

ancak her bir farklı dönem için çıktıyı bir değişkene nasıl alabilirim? bunu $ row [0], $ row [1] vb. ile yapabilir miyim? – Armitage2k

+0

@ Armitage2k Sorguyu biraz düzenledim, böylece değerleri diziden elde etmek daha kolay. $ PeriodName = $ row ['period'] yapardınız; $ count = $ row ['period_count']; ' – Nadir