Guest User

Untitled

a guest
Nov 10th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. Array
  2. (
  3. [0] => 2016-08-08
  4. [1] => 2016-08-15
  5. [2] => 2016-08-15
  6. [3] => 2016-08-22
  7. [4] => 2016-08-22
  8. [5] => 2016-08-29
  9. [6] => 2016-08-29
  10. [7] => 2016-09-05
  11. [8] => 2016-09-05
  12. [9] => 2016-09-12
  13. [10] => 2016-09-12
  14. [11] => 2016-09-19
  15. [12] => 2016-09-19
  16. [13] => 2016-09-26
  17. [14] => 2016-09-26
  18. [15] => 2016-10-03
  19. [16] => 2016-10-03
  20. [17] => 2016-10-10
  21. [18] => 2016-10-10
  22. [19] => 2016-10-17
  23. [20] => 2016-10-17
  24. [21] => 2016-10-24
  25. [22] => 2016-10-24
  26. [23] => 2016-10-31
  27. [24] => 2016-10-31
  28. [25] => 2016-11-07
  29. [26] => 2016-11-07
  30. [27] => 2016-11-14)
  31.  
  32. SELECT * FROM tables WHERE filter1 AND filter2 BETWEEN '{$date_s}' AND '{$date_do}'
  33. while($row = mysql_fetch_array($res)) {
  34. <?=echo 'Всего: '.$row['txt_tip']?>
  35. }
  36.  
  37. $dates = ['2016-08-08', /*etc*/]; //изначальне представление дат
  38. $chunked_dates = array_chunk( $dates, 2 ); //попарно разбиваем даты
  39.  
  40. $db = new mysqli( /*db connection params */); //подключаемся к бд
  41.  
  42. //создаём подготовленное выражение
  43. $stmt = $db->prepare( "SELECT count(*) FROM tables WHERE filter2 BETWEEN ? AND ?" );
  44.  
  45. //привязаваем переменные к выражению
  46. $from = $to = null;
  47.  
  48. $stmt->bind_param( 'ss', $from, $to );
  49.  
  50. foreach( $chunked_dates as list( $from, $to )){
  51. // для каждой пары дат, выполняем запрос и выводим число строк.
  52. $stmt->execute();
  53. $count = $stmt->get_result()->fetch_assoc()['count'];
  54. echo "от $from до $to всего $count.n";
  55. }
  56.  
  57. //закрываем подготовленный запрос
  58. $stmt->close();
  59.  
  60. foreach( $chunked_dates as list( $from, $to )){
  61. $stmt->bind_param( 'ss', $from, $to );
  62. $count = $stmt->get_result()->fetch_assoc()['count'];
  63. echo "от $from до $to всего $count.n";
  64. $stmt->reset();
  65. }
  66.  
  67. $dates = array_map( [ $db, 'real_escape_string' ], $dates );
  68. //rest of code
  69. foreach( $chunked_dates as list( $from, $to ) ){
  70. $query = "SELECT count(*) FROM tables WHERE filter2 BETWEEN $from and $to";
  71. //execute query and print result
  72. }
  73.  
  74. Array
  75. (
  76. [0] => Array
  77. (
  78. [from] => 2016-08-08
  79. [to] => 2016-08-15
  80. )
  81. [1] => Array
  82. (
  83. [from] => 2016-08-15
  84. [to] => 2016-08-22
  85. )
  86. ...
  87. )
  88.  
  89. for ($i=0, $k = count($d); $i < $k; $i=$i+2) {
  90. echo "from ".$d[$i]." to ".$d[$i+1]."n";
  91. }
  92.  
  93. from 2016-08-08 to 2016-08-15
  94. from 2016-08-15 to 2016-08-22
  95. from 2016-08-22 to 2016-08-29
  96. from 2016-08-29 to 2016-09-05
  97. from 2016-09-05 to 2016-09-12
  98. from 2016-09-12 to 2016-09-19
  99. from 2016-09-19 to 2016-09-26
  100. from 2016-09-26 to 2016-10-03
  101. from 2016-10-03 to 2016-10-10
  102. from 2016-10-10 to 2016-10-17
  103. from 2016-10-17 to 2016-10-24
  104. from 2016-10-24 to 2016-10-31
  105. from 2016-10-31 to 2016-11-07
  106. from 2016-11-07 to 2016-11-14
  107.  
  108. SELECT min(filter2) week, count(*) cnt FROM tables
  109. WHERE filter1 AND filter2 BETWEEN '2016-08-08' AND '2016-11-14'
  110. GROUP BY date_format(filter1, "%Y-%u")
Add Comment
Please, Sign In to add comment