Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Array
- (
- [0] => 2016-08-08
- [1] => 2016-08-15
- [2] => 2016-08-15
- [3] => 2016-08-22
- [4] => 2016-08-22
- [5] => 2016-08-29
- [6] => 2016-08-29
- [7] => 2016-09-05
- [8] => 2016-09-05
- [9] => 2016-09-12
- [10] => 2016-09-12
- [11] => 2016-09-19
- [12] => 2016-09-19
- [13] => 2016-09-26
- [14] => 2016-09-26
- [15] => 2016-10-03
- [16] => 2016-10-03
- [17] => 2016-10-10
- [18] => 2016-10-10
- [19] => 2016-10-17
- [20] => 2016-10-17
- [21] => 2016-10-24
- [22] => 2016-10-24
- [23] => 2016-10-31
- [24] => 2016-10-31
- [25] => 2016-11-07
- [26] => 2016-11-07
- [27] => 2016-11-14)
- SELECT * FROM tables WHERE filter1 AND filter2 BETWEEN '{$date_s}' AND '{$date_do}'
- while($row = mysql_fetch_array($res)) {
- <?=echo 'Всего: '.$row['txt_tip']?>
- }
- $dates = ['2016-08-08', /*etc*/]; //изначальне представление дат
- $chunked_dates = array_chunk( $dates, 2 ); //попарно разбиваем даты
- $db = new mysqli( /*db connection params */); //подключаемся к бд
- //создаём подготовленное выражение
- $stmt = $db->prepare( "SELECT count(*) FROM tables WHERE filter2 BETWEEN ? AND ?" );
- //привязаваем переменные к выражению
- $from = $to = null;
- $stmt->bind_param( 'ss', $from, $to );
- foreach( $chunked_dates as list( $from, $to )){
- // для каждой пары дат, выполняем запрос и выводим число строк.
- $stmt->execute();
- $count = $stmt->get_result()->fetch_assoc()['count'];
- echo "от $from до $to всего $count.n";
- }
- //закрываем подготовленный запрос
- $stmt->close();
- foreach( $chunked_dates as list( $from, $to )){
- $stmt->bind_param( 'ss', $from, $to );
- $count = $stmt->get_result()->fetch_assoc()['count'];
- echo "от $from до $to всего $count.n";
- $stmt->reset();
- }
- $dates = array_map( [ $db, 'real_escape_string' ], $dates );
- //rest of code
- foreach( $chunked_dates as list( $from, $to ) ){
- $query = "SELECT count(*) FROM tables WHERE filter2 BETWEEN $from and $to";
- //execute query and print result
- }
- Array
- (
- [0] => Array
- (
- [from] => 2016-08-08
- [to] => 2016-08-15
- )
- [1] => Array
- (
- [from] => 2016-08-15
- [to] => 2016-08-22
- )
- ...
- )
- for ($i=0, $k = count($d); $i < $k; $i=$i+2) {
- echo "from ".$d[$i]." to ".$d[$i+1]."n";
- }
- from 2016-08-08 to 2016-08-15
- from 2016-08-15 to 2016-08-22
- from 2016-08-22 to 2016-08-29
- from 2016-08-29 to 2016-09-05
- from 2016-09-05 to 2016-09-12
- from 2016-09-12 to 2016-09-19
- from 2016-09-19 to 2016-09-26
- from 2016-09-26 to 2016-10-03
- from 2016-10-03 to 2016-10-10
- from 2016-10-10 to 2016-10-17
- from 2016-10-17 to 2016-10-24
- from 2016-10-24 to 2016-10-31
- from 2016-10-31 to 2016-11-07
- from 2016-11-07 to 2016-11-14
- SELECT min(filter2) week, count(*) cnt FROM tables
- WHERE filter1 AND filter2 BETWEEN '2016-08-08' AND '2016-11-14'
- GROUP BY date_format(filter1, "%Y-%u")
Add Comment
Please, Sign In to add comment