2016-04-12 19 views
0

Maalesef diziye süre içeride her gün saklamak için nasıl, benim sorunu açıklamak için elimden geleni vereceğim. Böyle sorguyu çalıştırın:başlık biraz karanlık olsaydı

$queryForDateClicks="SELECT `time_send` FROM `notifications` WHERE `app_id`='$appId' AND `time_send`>'2016-04-11 23:59:59'"; 

Masanın üzerinde böyle:

enter image description here Yani

, ne elde etmek gereken bir diziye bir gün içinde tüm time_send değerlerine sahip, bu yüzden eğer tarih böyle dizisine sahip olmak 2016-04-12 geçerli:

Array ([2016-04-12] => 2016-04-12 07:45:37, 2016-04-12 08:07:03, 2016-04-12 08:13:48) 

Ve o tarih depolamak için gereken cadı için zaman aralığı ise en dan diyelim edilir içeride zaman aralığı verilen her farklı gün için böyle devam

Array ([2016-04-05] => 2016-04-05 06:45:37, 2016-04-05 11:17:30, [2016-04-06] => 2016-04-06 02:35:37, 2016-04-06 23:17:30, [2016-04-07] => 2016-04-07 06:45:37, 2016-04-07 21:17:30) 

Ve: 2016-04-052016-04-12 için dizi şu şekilde görünecektir. baskılar artık sadece son tarih

$queryForDateClicks="SELECT `time_send` FROM `notifications` WHERE `app_id`='$appId' AND `time_send`>'2016-04-11 23:59:59'"; 
    $chartResultDate=$mysqli->query($queryForDateClicks); 
    $dani=array(); 
    while($brojDate=$chartResultDate->fetch_assoc()){ 
     $minutes = substr($brojDate['time_send'], -8); 
     $days = substr($brojDate['time_send'], 0, 10); 
     if($minutes< '23:59:59'){ 
     $dani[$days]=$brojDate['time_send']; 
    }else{ 
     //should increment day by one and start checking again if minutes for that day are less than '23:59:59' and so on. 
     } 
    } 
    print_r($dani); 

Ama bu ve bunun zamanı: Yani ben böyle yapıyor çalıştı

Array ([2016-04-12] => 2016-04-12 08:40:02) 

Ve veritabanı saklar fazla sonuç 2016-04-12 gün için. enter image description here

takıldım, bana bu konuda yardımcı olun.

cevap

1

Kişisel SQL sorgusu şöyle görünebilir:

$notificationDataArray = []; 
foreach($datalist as $row){ 
    if(!array_key_exists($row['time_send_date'], $notificationDataArray)){ 
     $notificationDataArray[$row['time_send_date']] = []; 
    } 
    array_push($notificationDataArray[$row['time_send_date']], $row['time_send']); 
} 

$datalist veri dizisidir olduğuna dikkat edin: İhtiyacınız böyle bir diziyi oluşturmak için

SELECT DATE(time_send) as time_send_date, time_send 
FROM notifications 
WHERE time_send > '2016-04-11 23:59:59' 
ORDER BY time_send 

, bu bölümü kullanabilirsiniz veritabanından.

array (size=2) 
    '2016-04-11' => 
    array (size=3) 
     0 => string '2016-04-11 13:52:23' (length=19) 
     1 => string '2016-04-11 14:45:57' (length=19) 
     2 => string '2016-04-11 15:41:21' (length=19) 
    '2016-04-12' => 
    array (size=2) 
     0 => string '2016-04-12 11:21:29' (length=19) 
     1 => string '2016-04-12 18:45:30' (length=19) 
+0

Büyük iş abi:

Daha sonra bu gibi bir dizi olacaktır. Teşekkürler :) – Ognj3n