Yazmadan PHP bir döngü ekleme

4 Cevap php

Ben bu formatta benim veritabanından tarihleri ​​ve ay adı saklamak için çalışıyorum. Ben ay saklamak ve daha sonra o ay girişleri saymak ve sonra sayısını saklamak hedefliyorum. Bu benim döngü, ama sorun düzgün dizi biçimlendirme var.

while ( $row = mysql_fetch_assoc($res) ) {
    if ($row['Date'] != $prev_date) {
        $values=array(
            $row['Date'] => $count,
        );

        $prev_date = $row['Date'];
    }

    $count++;
}
print_f($values);

Sen hep benim önceki dizisi üzerine yazılır ve ben gerçekten diziye girdileri ekleyerek değilim görebilirsiniz. Ben bunu nasıl çözemedim. Ben temelde ayda girişlerin sayısını görmek için çalışıyorum.

ESKİ Güncelleme: Şu anda bir yorumcu belirttiğimiz MYSQL şeyi öğrenme. Ben gidince güncelleme olacak.

4 Cevap

I almost got it!

$values=array();
    while ( $row = mysql_fetch_assoc($res) ) {
    	if ($row['Date'] != $prev_date) {
    		$values[$row['Date']] =  $count;

    		$prev_date = $row['Date'];
    		$count = 0;
    	}

    	$count++;

    }

Update: Bu kısmı biraz yardıma ihtiyacınız var.

Benim çıkış:

Array ( [9] => [10] => 999 [11] => 986 )

999, 9 saklanacak ve 986, 10 depolanacak gerekiyordu gerekiyordu.

Birisi bana bir daha verimli bir yol gösterebilir eğer Update: İşte benim yeni kod, ben bunu takdir ediyorum.

	$sql = "SELECT MONTH(AddDate) AS Date, column_name FROM table ORDER BY AddDate ASC";
	$res = mysql_query($sql) or die(mysql_error());
	$prev_date = null;

$values=array();

    while ( $row = mysql_fetch_assoc($res) ) {
    	if ( $row['Date'] != $prev_date) {
    		$month = $row['Date'];
    		$sql = "SELECT count(MONTH(AddDate)) AS EntryAmount FROM `table` WHERE MONTH(AddDate)=$month ";
    		$countResults = mysql_query($sql) or die(mysql_error());
    		if( $entryAmount = mysql_fetch_array($countResults) ) {
    			$values[$row['Date']] =  $entryAmount['EntryAmount'];
    		}
    		$prev_date = $row['Date'];
    	}
    }

Çıktı:

Array ( [9] => 999 [10] => 986 [11] => 264 )

Bunu yapabilirsiniz istimal bu group by sql, bazı böyle: select date, count(*) from table group by date

Edit: If you need only count by month use some like this: select MONTH(dateField) as NewDate, count(*) FROM table GROUP BY NewDate

Emin değilim yapmak için çalışıyoruz anlamak. Bu nasıl?

$values[$row['Date']]++;

Nasıl böyle bir sorgu şey sonucu döngü hakkında:

SELECT COUNT(MONTH(AddDate)) AS EntryAmount, MONTH(AddDate) as MonthValue FROM table GROUP BY MONTH(AddDate)