PageRenderTime 194ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/report/getprizereport.php

https://bitbucket.org/3tierlogic/3tl.tabbuilder
PHP | 1253 lines | 960 code | 158 blank | 135 comment | 108 complexity | ccb5a8f739f22b21761ca20e7dc99858 MD5 | raw file
  1. <?php
  2. require_once("db.php");
  3. $con = mysql_connect($dbhost, $dbuser, $dbpasswd); // connect to database
  4. if (!$con) { // error checking and handling
  5. die('Could not connect: ' . mysql_error());
  6. }
  7. mysql_select_db($dbname);
  8. session_start();
  9. /*
  10. echo "cid: ".$_POST['campaignID'];
  11. echo "cname: ".$_POST['campaignName'];
  12. echo "<br/>";
  13. echo "start date: ".$_POST['sdate'];
  14. echo "end date: ".$_POST['edate'];
  15. */
  16. // $_POST['campaignID'] = 'CAMP0000000174';
  17. // $_POST['campaignName'] = 'aaa';
  18. $_POST['campaignID'] = $REQUEST['cID'];
  19. $_POST['campaignName'] = $REQUEST['cName'];
  20. $sqlEndDate = $_POST['edate'];
  21. $x_axis = "";
  22. $y_axis = "";
  23. $displaygender_div = 0;
  24. $displayemail_div=0;
  25. $displayagerange_div=0;
  26. $displayzipcode_div=0;
  27. $displaycarrier_div = 0;
  28. $countDyn = 0;
  29. $displaydyn_div[$countDyn]=0;
  30. $dynstr_data[$countDyn] = "";
  31. $labels[$countDyn] = "";
  32. $y2_axis = ""; // for distinct entries.
  33. // add where condition to support date range.
  34. function addCon($original_sql, $s, $e){
  35. // detect where;
  36. $pos = strpos($original_sql, 'where', 1);
  37. if($pos == false){ // try capital again.
  38. $pos = strpos($original_sql, 'WHERE', 1);
  39. }
  40. /*
  41. print "+++ <br/>";
  42. print "sql0: ".$original_sql."<br/>";
  43. print "pos: ".$pos."<br/>";
  44. */
  45. $sub1 = substr($original_sql,0,$pos+1+4); // "select...where"
  46. //print "sub1: ".$sub1."<br/>";
  47. $sub2 = " cpresult_create_time between '".$s."' and '".$e."' and ";
  48. //print "sub2: ".$sub2."<br/>";
  49. $sub3 = substr($original_sql, $pos+1+4+1); // " ..."
  50. //print "sub3: ".$sub3."<br/>";
  51. $original_sql = "";
  52. $original_sql = $original_sql.$sub1;
  53. $original_sql = $original_sql.$sub2;
  54. $original_sql = $original_sql.$sub3;
  55. //print "sql: ".$original_sql."<br/>";
  56. //print "+++ <br/>";
  57. return $original_sql;
  58. }
  59. // check if is OpenCheckBox or ?opendropdown?
  60. function arai($rawName, $rawMan){
  61. // checkbox.
  62. $checkbox = "OpenCheckBox";
  63. $pos = strpos($rawName, $checkbox);
  64. if($pos !== false){ // triple = is a must!
  65. // check if is mandatory: have read the rules...
  66. if($rawMan == 1){ // is a mandatory checkbox, so skip it.
  67. return 0;
  68. }
  69. return 1; // is OpenCheckBox.
  70. }
  71. // dropdown.
  72. $dropdown = "OpenDropDown";
  73. $pos = strpos($rawName, $dropdown);
  74. if($pos !== false){ // triple = is a must!
  75. return 2; // is dropdown.
  76. }
  77. return 0; // is nothing.
  78. }
  79. function getCACarrierName($carrier){
  80. switch($carrier){
  81. case "302651":{
  82. return "BELL";
  83. }
  84. case "302720":{
  85. return "ROGERS";
  86. }
  87. case "302655":{
  88. return "MTS";
  89. }
  90. case "302701":{
  91. return "NB TEL";
  92. }
  93. case "302657":{
  94. return "QUEBECTEL";
  95. }
  96. case "302654":{
  97. return "SASK TEL";
  98. }
  99. case "302653":{
  100. return "TELUS";
  101. }
  102. case "302001":{
  103. return "VIRGIN";
  104. }
  105. case "302370":{
  106. return "FIDO";
  107. }
  108. default:{
  109. return $carrier;
  110. }
  111. }
  112. }
  113. function getUSCarrierName($carrier){
  114. switch($carrier){
  115. case "310980":{
  116. return "AT&T";
  117. }
  118. case "310190":{
  119. return "ALASKA WIRELESS";
  120. }
  121. case "310500":{
  122. return "ALLTEL";
  123. }
  124. case "310420":{
  125. return "CINCINNATI BELL";
  126. }
  127. case "310180":{
  128. return "CINGULAR";
  129. }
  130. case "310016":{
  131. return "CRICKET";
  132. }
  133. case "310560":{
  134. return "DOBSON";
  135. }
  136. case "316010":{
  137. return "NEXTEL";
  138. }
  139. case "316110":{
  140. return "SPRINT";
  141. }
  142. case "310660":{
  143. return "TMOBILE USA";
  144. }
  145. case "310012":{
  146. return "VERIZON";
  147. }
  148. default:{
  149. return $carrier;
  150. }
  151. }
  152. }
  153. // to control if to show all dates or the specified period.
  154. $default_date = 1; // defaults to show all dates.
  155. if(($_POST['sdate'] == "") || ($sqlEndDate == "") ){ // show all(default).
  156. $sql = "SELECT date_format(cpresult_create_time,'%Y-%m-%d'), count(*) as num FROM facebook.sp_campaign_result where campaign_sid='".$_POST['campaignID']."' group by date_format(cpresult_create_time,'%Y-%m-%d') order by date_format(cpresult_create_time,'%Y-%m-%d') ASC";
  157. $sql2 = "select dates, count(*) as num from ( SELECT date_format(cpresult_create_time,'%Y-%m-%d') as dates, cpresult_user_id as uid FROM facebook.sp_campaign_result f where f.campaign_sid='".$_POST['campaignID']."' group by date_format(f.cpresult_create_time,'%Y-%m-%d'), f.cpresult_user_id) s group by s.dates order by s.dates asc";
  158. $default_date = 1;
  159. }
  160. else{ //specified data
  161. $sql = "SELECT date_format(cpresult_create_time,'%Y-%m-%d'), count(*) as num FROM facebook.sp_campaign_result where campaign_sid='".$_POST['campaignID']."' and cpresult_create_time between '".$_POST['sdate']."' and '".$sqlEndDate."' group by date_format(cpresult_create_time,'%Y-%m-%d') order by date_format(cpresult_create_time,'%Y-%m-%d') ASC";
  162. $sql2 = "select dates, count(*) as num from ( SELECT date_format(cpresult_create_time,'%Y-%m-%d') as dates, cpresult_user_id as uid FROM facebook.sp_campaign_result f where f.campaign_sid='".$_POST['campaignID']."' and cpresult_create_time between '".$_POST['sdate']."' and '".$sqlEndDate."' group by date_format(f.cpresult_create_time,'%Y-%m-%d'), f.cpresult_user_id) s group by s.dates order by s.dates asc";
  163. $default_date = 0;
  164. }
  165. //echo "sql = ".$sql."<br/>";
  166. //echo "sql2 = ".$sql2."<br/>";
  167. $res = mysql_query($sql);
  168. $res2 = mysql_query($sql2);
  169. if (mysql_num_rows($res) > 0) {
  170. //echo "total rows: ".mysql_num_rows($res)."<br>";
  171. $index = 0;
  172. $total_entry = 0;
  173. $total_distinct_entry = 0;
  174. // get Y.
  175. while (list($currdate, $totalentries) = mysql_fetch_array($res)) {
  176. //echo "date:".$currdate."- entries: ".$totalentries."<br>";
  177. $newcurrdate = date('m/d', strtotime($currdate));
  178. $x_axis = $x_axis . "'".$newcurrdate."',";
  179. $y_axis = $y_axis . $totalentries.",";
  180. // create array to store sql and sql2 results.
  181. $array_sql[$index][0] = $newcurrdate;
  182. $array_sql[$index][1] = $totalentries;
  183. $total_entry += $totalentries;
  184. $index++;
  185. }
  186. $array_sql[$index][0] = "Total";
  187. $array_sql[$index][1] = $total_entry;
  188. $index = 0;
  189. // get y2.
  190. while ( list($d, $dis) = mysql_fetch_array($res2)){
  191. $y2_axis = $y2_axis . $dis.",";
  192. $array_sql[$index][2] = $dis;
  193. $total_distinct_entry += $dis;
  194. $index++;
  195. }
  196. $array_sql[$index][2] = $total_distinct_entry;
  197. $x_axis = substr($x_axis, 0, -1);
  198. $y_axis = substr($y_axis, 0, -1);
  199. $y2_axis = substr($y2_axis, 0, -1);
  200. }
  201. //***** Pie charts
  202. // $sql = "SELECT cpfldcfg_label, cpfldcfg_var_name FROM sp_campaign_config where campaign_sid='".$_POST['campaignID']."' and cpfldcfg_is_valid=1";
  203. $sql = "SELECT cpfldcfg_label, cpfldcfg_var_name, cpfldcfg_country_sid, cpfldcfg_is_mandatory FROM sp_campaign_config where campaign_sid='".$_POST['campaignID']."' and cpfldcfg_is_valid=1";
  204. $res = mysql_query($sql);
  205. if (mysql_num_rows($res) > 0) {
  206. // while (list($field_label, $field_varname, $field_mandatory) = mysql_fetch_array($res)) {
  207. while (list($field_label, $field_varname, $field_country, $field_mandatory) = mysql_fetch_array($res)) {
  208. switch ($field_varname) {
  209. case "GenderSid":
  210. $genderstr_data="";
  211. echo "Gender chart<br>";
  212. $sql_gender = "SELECT cpresult_gender_sid, count(*) as num FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' group by cpresult_gender_sid ";
  213. if(!$default_date){ // all dates.
  214. $sql_gender = addCon($sql_gender, $_POST['sdate'], $sqlEndDate);
  215. }
  216. $res_gender = mysql_query($sql_gender);
  217. if (mysql_num_rows($res_gender) > 0) {
  218. while (list($gender, $totalgender) = mysql_fetch_array($res_gender)) {
  219. if ($gender==0) {
  220. $currgender="Female";
  221. } else {
  222. $currgender="Male";
  223. }
  224. //echo "Gender:".$currgender."- Numbers: ".$totalgender."<br>";
  225. $genderstr_data = $genderstr_data."['".$currgender."', ".$totalgender."],";
  226. }
  227. $genderstr_data = substr($genderstr_data, 0, -1);
  228. echo $genderstr_data;
  229. $displaygender_div=1;
  230. }
  231. break;
  232. case "Birthday":
  233. $b_t = 0;
  234. echo "Birthday chart<br>";
  235. $currentyear = date("Y");
  236. $agerangestr_data = "";;
  237. //echo "Current Year: ".$currentyear."<br>";
  238. //** Check under 18
  239. $yearlimit = $currentyear - 18;
  240. //echo "Current Year to check: ".$yearlimit."<br>";
  241. $sql_bday = "SELECT cpresult_birth_year FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' AND cpresult_birth_year > ".$yearlimit;
  242. if(!$default_date){
  243. $sql_bday = addCon($sql_bday, $_POST['sdate'], $sqlEndDate);
  244. }
  245. //echo $sql_bday."<br>";
  246. $res_bday = mysql_query($sql_bday);
  247. echo "Under 18: ".mysql_num_rows($res_bday)."<br>";
  248. $agerangestr_data = $agerangestr_data."['Under 18', ".mysql_num_rows($res_bday)."],";
  249. $b0_17 = mysql_num_rows($res_bday);
  250. $b_t += mysql_num_rows($res_bday);
  251. //** Check 18 - 24
  252. $yearlimit_high = $currentyear - 18;
  253. $yearlimit_low = $currentyear - 24;
  254. $sql_bday = "SELECT cpresult_birth_year FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' AND cpresult_birth_year >= ".$yearlimit_low." AND cpresult_birth_year <= ".$yearlimit_high;
  255. if(!$default_date){
  256. $sql_bday = addCon($sql_bday, $_POST['sdate'], $sqlEndDate);
  257. }
  258. //echo $sql_bday."<br>";
  259. $res_bday = mysql_query($sql_bday);
  260. echo "18 - 24: ".mysql_num_rows($res_bday)."<br>";
  261. $agerangestr_data = $agerangestr_data."['18 - 24', ".mysql_num_rows($res_bday)."],";
  262. $b18_24 = mysql_num_rows($res_bday);
  263. $b_t += mysql_num_rows($res_bday);
  264. //** Check 25 - 34
  265. $yearlimit_high = $currentyear - 25;
  266. $yearlimit_low = $currentyear - 34;
  267. $sql_bday = "SELECT cpresult_birth_year FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' AND cpresult_birth_year >= ".$yearlimit_low." AND cpresult_birth_year <= ".$yearlimit_high;
  268. if(!$default_date){
  269. $sql_bday = addCon($sql_bday, $_POST['sdate'], $sqlEndDate);
  270. }
  271. //echo $sql_bday."<br>";
  272. $res_bday = mysql_query($sql_bday);
  273. echo "25 - 34: ".mysql_num_rows($res_bday)."<br>";
  274. $agerangestr_data = $agerangestr_data."['25 - 34', ".mysql_num_rows($res_bday)."],";
  275. $b25_34 = mysql_num_rows($res_bday);
  276. $b_t += mysql_num_rows($res_bday);
  277. //** Check 35 - 44
  278. $yearlimit_high = $currentyear - 35;
  279. $yearlimit_low = $currentyear - 44;
  280. $sql_bday = "SELECT cpresult_birth_year FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' AND cpresult_birth_year >= ".$yearlimit_low." AND cpresult_birth_year <= ".$yearlimit_high;
  281. if(!$default_date){
  282. $sql_bday = addCon($sql_bday, $_POST['sdate'], $sqlEndDate);
  283. }
  284. //echo $sql_bday."<br>";
  285. $res_bday = mysql_query($sql_bday);
  286. echo "35 - 44: ".mysql_num_rows($res_bday)."<br>";
  287. $agerangestr_data = $agerangestr_data."['35 - 44', ".mysql_num_rows($res_bday)."],";
  288. $b35_44 = mysql_num_rows($res_bday);
  289. $b_t += mysql_num_rows($res_bday);
  290. //** Check 45 - 54
  291. $yearlimit_high = $currentyear - 45;
  292. $yearlimit_low = $currentyear - 54;
  293. $sql_bday = "SELECT cpresult_birth_year FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' AND cpresult_birth_year >= ".$yearlimit_low." AND cpresult_birth_year <= ".$yearlimit_high;
  294. if(!$default_date){
  295. $sql_bday = addCon($sql_bday, $_POST['sdate'], $sqlEndDate);
  296. }
  297. //echo $sql_bday."<br>";
  298. $res_bday = mysql_query($sql_bday);
  299. echo "45 - 54: ".mysql_num_rows($res_bday)."<br>";
  300. $agerangestr_data = $agerangestr_data."['45 - 54', ".mysql_num_rows($res_bday)."],";
  301. $b45_54 = mysql_num_rows($res_bday);
  302. $b_t += mysql_num_rows($res_bday);
  303. //** Check 55 - 64
  304. $yearlimit_high = $currentyear - 55;
  305. $yearlimit_low = $currentyear - 64;
  306. $sql_bday = "SELECT cpresult_birth_year FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' AND cpresult_birth_year >= ".$yearlimit_low." AND cpresult_birth_year <= ".$yearlimit_high;
  307. if(!$default_date){
  308. $sql_bday = addCon($sql_bday, $_POST['sdate'], $sqlEndDate);
  309. }
  310. //echo $sql_bday."<br>";
  311. $res_bday = mysql_query($sql_bday);
  312. echo "55 - 64: ".mysql_num_rows($res_bday)."<br>";
  313. $agerangestr_data = $agerangestr_data."['55 - 64', ".mysql_num_rows($res_bday)."],";
  314. $b55_64 = mysql_num_rows($res_bday);
  315. $b_t += mysql_num_rows($res_bday);
  316. //** Check 65+
  317. $yearlimit = $currentyear - 65;
  318. $sql_bday = "SELECT cpresult_birth_year FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' AND cpresult_birth_year <= ".$yearlimit ." AND cpresult_birth_year > 0";
  319. //echo $sql_bday."<br>";
  320. $res_bday = mysql_query($sql_bday);
  321. if(!$default_date){
  322. $sql_bday = addCon($sql_bday, $_POST['sdate'], $sqlEndDate);
  323. }
  324. echo "65+: ".mysql_num_rows($res_bday)."<br>";
  325. $agerangestr_data = $agerangestr_data."['65+', ".mysql_num_rows($res_bday)."],";
  326. $b65_99 = mysql_num_rows($res_bday);
  327. $b_t += mysql_num_rows($res_bday);
  328. //** Check year=0
  329. $sql_bday = "SELECT cpresult_birth_year FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' AND cpresult_birth_year = 0";
  330. if(!$default_date){
  331. $sql_bday = addCon($sql_bday, $_POST['sdate'], $sqlEndDate);
  332. }
  333. //echo $sql_bday."<br>";
  334. $res_bday = mysql_query($sql_bday);
  335. echo "No year entered ".mysql_num_rows($res_bday)."<br>";
  336. $agerangestr_data = $agerangestr_data."['No year entered', ".mysql_num_rows($res_bday)."]";
  337. $b0_0 = mysql_num_rows($res_bday);
  338. $b_t += mysql_num_rows($res_bday);
  339. echo $agerangestr_data;
  340. $displayagerange_div = 1;
  341. break;
  342. case "EmailOpt":
  343. //echo "Email Opt-in chart<br>";
  344. $sql_email = "SELECT cpresult_email_opt, count(*) as num FROM sp_campaign_result where campaign_sid='".$_POST['campaignID']."' group by cpresult_email_opt ";
  345. if(!$default_date){
  346. $sql_email = addCon($sql_email, $_POST['sdate'], $sqlEndDate);
  347. }
  348. $res_email = mysql_query($sql_email);
  349. if (mysql_num_rows($res_email) > 0) {
  350. while (list($receiveemail, $totalreceiveemail) = mysql_fetch_array($res_email)) {
  351. if ($receiveemail=="on") {
  352. $currreceiveemail="Yes";
  353. } else {
  354. $currreceiveemail="No";
  355. }
  356. //echo "Receive Email:".$currreceiveemail."- Numbers: ".$totalreceiveemail."<br>";
  357. $receivestr_data = $receivestr_data."['".$currreceiveemail."', ".$totalreceiveemail."],";
  358. }
  359. $receivestr_data = substr($receivestr_data , 0, -1);
  360. echo $receivestr_data ;
  361. $displayemail_div=1;
  362. }
  363. break;
  364. case "ZipCode":
  365. //echo "Zipcode chart <br/>";
  366. //$sql_zipcode = "SELECT UCASE(SUBSTR(cpresult_zip_code, 1,3)) as location, count(*) as num FROM sp_campaign_result where campaign_sid ='".$_POST['campaignID']."' group by SUBSTR(cpresult_zip_code, 1,3)";
  367. $sql_zipcode = "SELECT UCASE(SUBSTR(cpresult_zip_code, 1,3)) as location, count(*) as num FROM sp_campaign_result where campaign_sid ='".$_POST['campaignID']."' group by SUBSTR(cpresult_zip_code, 1,3) order by num desc";
  368. if(!$default_date){
  369. $sql_zipcode = addCon($sql_zipcode, $_POST['sdate'], $sqlEndDate);
  370. }
  371. //echo "sql zipcode = ".$sql_zipcode."<br/>";
  372. $res_zipcode = mysql_query($sql_zipcode);
  373. if(mysql_num_rows($res_zipcode) > 0){
  374. $count10 = 1; // initial var to count top 10.
  375. $sumOthers = 0; // num of the rest.
  376. while(list($digit3, $num) = mysql_fetch_array($res_zipcode)){
  377. if($count10 <= 10){ // still in top 10.
  378. $zipcodestr_data = $zipcodestr_data."['".$digit3."', ".$num."],";
  379. $count10++;
  380. }
  381. else{ // sum up offsides.
  382. $sumOthers += $num;
  383. }
  384. }
  385. if($count10 > 10){
  386. $zipcodestr_data = $zipcodestr_data."['The rest', ".$sumOthers."],"; // add the rest to string.
  387. }
  388. $zipcodestr_data = substr($zipcodestr_data, 0, -1);
  389. //echo $zipcodestr_data."<br />";
  390. $displayzipcode_div=1;
  391. }
  392. break;
  393. case "Carrier":
  394. //echo "carrier chart <br/>";
  395. if($field_country == 'CA'){
  396. //echo "CA <br/>";
  397. $sql_carrier = "SELECT cpresult_carrier as carrier, count(*) as num FROM sp_campaign_result where campaign_sid ='".$_POST['campaignID']."' and cpresult_carrier != '' group by cpresult_carrier";
  398. //echo "Carrier SQL: ".$sql_carrier."<br/>";
  399. if(!$default_date){
  400. $sql_carrier = addCon($sql_carrier, $_POST['sdate'], $sqlEndDate);
  401. }
  402. $res_carrier = mysql_query($sql_carrier);
  403. if(mysql_num_rows($res_carrier) > 0){
  404. while(list($car, $num) = mysql_fetch_array($res_carrier)){
  405. //echo "car: ".$car." NUM: ".$num."<br/>";
  406. $car = getCACarrierName($car);
  407. $carrierstr_data = $carrierstr_data."['".$car."', ".$num."],";
  408. }
  409. $carrierstr_data = substr($carrierstr_data, 0, -1);
  410. //echo $carrierstr_data."<br />";
  411. $displaycarrier_div=1;
  412. }
  413. }
  414. else{
  415. //echo "US <br/>";
  416. $sql_carrier = "SELECT cpresult_carrier as carrier, count(*) as num FROM sp_campaign_result where campaign_sid ='".$_POST['campaignID']."' and cpresult_carrier != '' group by cpresult_carrier";
  417. //echo "Carrier SQL: ".$sql_carrier."<br/>";
  418. if(!$default_date){
  419. $sql_carrier = addCon($sql_carrier, $_POST['sdate'], $sqlEndDate);
  420. }
  421. $res_carrier = mysql_query($sql_carrier);
  422. if(mysql_num_rows($res_carrier) > 0){
  423. while(list($car, $num) = mysql_fetch_array($res_carrier)){
  424. //echo "car: ".$car." NUM: ".$num."<br/>";
  425. $car = getUSCarrierName($car);
  426. $carrierstr_data = $carrierstr_data."['".$car."', ".$num."],";
  427. }
  428. $carrierstr_data = substr($carrierstr_data, 0, -1);
  429. //echo $carrierstr_data."<br />";
  430. $displaycarrier_div=1;
  431. }
  432. }
  433. break;
  434. default:{
  435. echo $field_varname." ".$field_mandatory."<br/>";
  436. $isWhat = arai($field_varname, $field_mandatory);
  437. if( $isWhat == 1){
  438. echo $field_label." is OpenCheckBox <br/>";
  439. echo "Dyn chart <br/>";
  440. $sql_dyn = "SELECT cpresult_".$field_varname.", count(*) FROM sp_campaign_result s where campaign_sid ='".$_POST['campaignID']."' group by cpresult_".$field_varname;
  441. echo "Dyn SQL: ".$sql_dyn."<br/>";
  442. if(!$default_date){
  443. $sql_dyn = addCon($sql_dyn, $_POST['sdate'], $sqlEndDate);
  444. }
  445. $res_dyn = mysql_query($sql_dyn);
  446. if(mysql_num_rows($res_dyn) > 0){
  447. while(list($dyn, $num) = mysql_fetch_array($res_dyn)){
  448. echo "dyn: ".$dyn." NUM: ".$num."<br/>";
  449. if($dyn == 1){
  450. $dyn = 'Yes';
  451. }
  452. else{
  453. $dyn = 'No';
  454. }
  455. $dynstr_data[$countDyn] = $dynstr_data[$countDyn]."['".$dyn."', ".$num."],";
  456. }
  457. $dynstr_data[$countDyn] = substr($dynstr_data[$countDyn], 0, -1);
  458. echo $dynstr_data[$countDyn]."<br />";
  459. $displaydyn_div[$countDyn]=1; // zaozaoer
  460. //$countDyn++;
  461. }
  462. $labels[$countDyn] = $field_label;
  463. echo "labels: ".$labels[$countDyn]."<br/>";
  464. $countDyn++;
  465. echo "countDyn = ".$countDyn."<br/>";
  466. }
  467. else if( $isWhat == 2){
  468. echo $field_label." is dropdown <br/>";
  469. //echo "Dyn chart <br/>";
  470. $sql_dyn = "SELECT cpresult_".$field_varname.", count(*) FROM sp_campaign_result s where campaign_sid ='".$_POST['campaignID']."' group by cpresult_".$field_varname;
  471. echo "Dyn SQL: ".$sql_dyn."<br/>";
  472. if(!$default_date){
  473. $sql_dyn = addCon($sql_dyn, $_POST['sdate'], $sqlEndDate);
  474. }
  475. $res_dyn = mysql_query($sql_dyn);
  476. if(mysql_num_rows($res_dyn) > 0){
  477. while(list($dyn, $num) = mysql_fetch_array($res_dyn)){
  478. echo "dyn: ".$dyn." NUM: ".$num."<br/>";
  479. $dynstr_data[$countDyn] = $dynstr_data[$countDyn]."['".$dyn."', ".$num."],";
  480. }
  481. $dynstr_data[$countDyn] = substr($dynstr_data[$countDyn], 0, -1);
  482. echo $dynstr_data[$countDyn]."<br />";
  483. $displaydyn_div[$countDyn]=1;
  484. }
  485. $labels[$countDyn] = $field_label;
  486. echo "labels: ".$labels[$countDyn]."<br/>";
  487. $countDyn++;
  488. echo "countDyn = ".$countDyn."<br/>";
  489. }
  490. else{ // 0
  491. // do nothing.
  492. //echo $field_label." is nothing. <br/>";
  493. }
  494. }
  495. }
  496. }
  497. }
  498. ?>
  499. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  500. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
  501. <head profile="http://gmpg.org/xfn/11">
  502. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  503. <title>3 Tier Logic Inc - Tracker V1.0</title>
  504. <link rel="stylesheet" href="css/style.css" type="text/css" />
  505. <link rel="stylesheet" type="text/css" href="css/default.css" media="screen" charset="utf-8" />
  506. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  507. <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
  508. <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script>
  509. <!-- Charts JS library: START -->
  510. <script type="text/javascript" src="js/highcharts.js"></script>
  511. <script type="text/javascript" src="js/themes/gray.js"></script>
  512. <script type="text/javascript" src="js/modules/exporting.js"></script>
  513. <!-- Charts JS library: END -->
  514. <script type="text/javascript">
  515. function viewEnties(td){
  516. var tord = td.substring(0,1);
  517. //alert(tord);
  518. var r = "r"+td.substring(1);
  519. var date = document.getElementById(r).innerHTML;
  520. //alert(date);
  521. var campid = "<?php echo $_POST['campaignID']; ?>";
  522. //alert(campid);
  523. var detailPage = "detail.php";
  524. var sdate = <?php echo '\''.$_POST['sdate'].'\''; ?>;
  525. var edate = <?php echo '\''.$sqlEndDate.'\''; ?>;
  526. //var url = detailPage + "?campid=" + campid + "&date=" + date + "&tord=" + tord;
  527. var url = detailPage + "?campid=" + campid + "&date=" + date + "&tord=" + tord + "&sdate=" + sdate + "&edate=" + edate + "";
  528. //alert(url);
  529. window.open(url);
  530. }
  531. var chart;
  532. var chart_gender;
  533. $(document).ready(function() {
  534. $('tr').hover(
  535. function () {
  536. $(this).addClass('hover');
  537. },
  538. function () {
  539. $(this).removeClass('hover');
  540. }
  541. );
  542. // We don't want the hover effect on our table header, so we unbind the event for our table row containing the th elements
  543. // $("tr.table-header").unbind('mouseenter mouseleave');
  544. chart = new Highcharts.Chart({
  545. chart: {
  546. renderTo: 'container',
  547. defaultSeriesType: 'line',
  548. marginRight: 130,
  549. marginBottom: 25,
  550. zoomType: 'x'
  551. },
  552. title: {
  553. text: '<?=$_POST['campaignName']?>',
  554. x: -20 //center
  555. },
  556. subtitle: {
  557. text: 'Prepared for: <?=$_POST['companyName']?>',
  558. x: -20
  559. },
  560. xAxis: {
  561. //categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
  562. categories: [<?=$x_axis?>],
  563. },
  564. yAxis: {
  565. title: {
  566. text: 'Total Entries'
  567. },
  568. plotLines: [{
  569. value: 0,
  570. width: 1,
  571. color: '#808080'
  572. }]
  573. },
  574. tooltip: {
  575. formatter: function() {
  576. return '<b>'+ this.series.name +'</b><br/>'+
  577. this.x +': '+ this.y +' entries';
  578. }
  579. },
  580. legend: {
  581. layout: 'vertical',
  582. align: 'right',
  583. verticalAlign: 'top',
  584. x: -10,
  585. y: 100,
  586. borderWidth: 0
  587. },
  588. series: [
  589. {
  590. name: 'Total Entries',
  591. data: [<?=$y_axis?>]
  592. },
  593. {
  594. name: 'Distinct Entries',
  595. data: [<?=$y2_axis?>]
  596. }]
  597. });
  598. var genderPl = document.getElementById('container2');
  599. if (genderPl != null){
  600. chart_gender = new Highcharts.Chart({
  601. chart: {
  602. renderTo: 'container2',
  603. plotBackgroundColor: null,
  604. plotBorderWidth: null,
  605. plotShadow: false
  606. },
  607. title: {
  608. text: 'Gender breakdown'
  609. },
  610. tooltip: {
  611. formatter: function() {
  612. return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  613. //return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  614. }
  615. },
  616. plotOptions: {
  617. pie: {
  618. allowPointSelect: true,
  619. cursor: 'pointer',
  620. dataLabels: {
  621. enabled: true,
  622. color: Highcharts.theme.textColor || '#000000',
  623. connectorColor: Highcharts.theme.textColor || '#000000',
  624. formatter: function() {
  625. // return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  626. return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  627. }
  628. }
  629. }
  630. },
  631. series: [{
  632. type: 'pie',
  633. name: 'Gender breakdown',
  634. data: [
  635. <?php echo $genderstr_data;?>
  636. ]
  637. }]
  638. });
  639. }
  640. var emailPl = document.getElementById('container3');
  641. if (emailPl != null){
  642. chart_email = new Highcharts.Chart({
  643. chart: {
  644. renderTo: 'container3',
  645. plotBackgroundColor: null,
  646. plotBorderWidth: null,
  647. plotShadow: false
  648. },
  649. title: {
  650. text: 'Email optin breakdown'
  651. },
  652. tooltip: {
  653. formatter: function() {
  654. return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  655. //return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  656. }
  657. },
  658. plotOptions: {
  659. pie: {
  660. allowPointSelect: true,
  661. cursor: 'pointer',
  662. dataLabels: {
  663. enabled: true,
  664. color: Highcharts.theme.textColor || '#000000',
  665. connectorColor: Highcharts.theme.textColor || '#000000',
  666. formatter: function() {
  667. //return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  668. return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  669. }
  670. }
  671. }
  672. },
  673. series: [{
  674. type: 'pie',
  675. name: 'Email optin breakdown',
  676. data: [
  677. <?php echo $receivestr_data;?>
  678. ]
  679. }]
  680. });
  681. }
  682. var agePl = document.getElementById('container4');
  683. if (agePl != null){
  684. chart_agerange = new Highcharts.Chart({
  685. chart: {
  686. renderTo: 'container4',
  687. plotBackgroundColor: null,
  688. plotBorderWidth: null,
  689. plotShadow: false
  690. },
  691. title: {
  692. text: 'Age breakdown'
  693. },
  694. tooltip: {
  695. formatter: function() {
  696. return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  697. //return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  698. }
  699. },
  700. plotOptions: {
  701. pie: {
  702. allowPointSelect: true,
  703. cursor: 'pointer',
  704. dataLabels: {
  705. enabled: true,
  706. color: Highcharts.theme.textColor || '#000000',
  707. connectorColor: Highcharts.theme.textColor || '#000000',
  708. formatter: function() {
  709. //return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  710. return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  711. }
  712. }
  713. }
  714. },
  715. series: [{
  716. type: 'pie',
  717. name: 'Age breakdown',
  718. data: [
  719. <?php echo $agerangestr_data;?>
  720. ]
  721. }]
  722. });
  723. }
  724. var agePl = document.getElementById('container5');
  725. if (agePl != null){
  726. chart_zipcode = new Highcharts.Chart({
  727. chart: {
  728. renderTo: 'container5',
  729. plotBackgroundColor: null,
  730. plotBorderWidth: null,
  731. plotShadow: false
  732. },
  733. title: {
  734. text: 'zipcode breakdown'
  735. },
  736. tooltip: {
  737. formatter: function() {
  738. return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  739. //return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  740. }
  741. },
  742. plotOptions: {
  743. pie: {
  744. allowPointSelect: true,
  745. cursor: 'pointer',
  746. dataLabels: {
  747. enabled: true,
  748. color: Highcharts.theme.textColor || '#000000',
  749. connectorColor: Highcharts.theme.textColor || '#000000',
  750. formatter: function() {
  751. //return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  752. return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  753. }
  754. }
  755. }
  756. },
  757. series: [{
  758. type: 'pie',
  759. name: 'zipcode breakdown',
  760. data: [
  761. <?php echo $zipcodestr_data;?>
  762. ]
  763. }]
  764. });
  765. }
  766. var carrierPl = document.getElementById('container6');
  767. if (carrierPl != null){
  768. chart_carrier = new Highcharts.Chart({
  769. chart: {
  770. renderTo: 'container6',
  771. plotBackgroundColor: null,
  772. plotBorderWidth: null,
  773. plotShadow: false
  774. },
  775. title: {
  776. text: 'carrier breakdown'
  777. },
  778. tooltip: {
  779. formatter: function() {
  780. return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  781. //return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  782. }
  783. },
  784. plotOptions: {
  785. pie: {
  786. allowPointSelect: true,
  787. cursor: 'pointer',
  788. dataLabels: {
  789. enabled: true,
  790. color: Highcharts.theme.textColor || '#000000',
  791. connectorColor: Highcharts.theme.textColor || '#000000',
  792. formatter: function() {
  793. //return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  794. return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  795. }
  796. }
  797. }
  798. },
  799. series: [{
  800. type: 'pie',
  801. name: 'carrier breakdown',
  802. data: [
  803. <?php echo $carrierstr_data;?>
  804. ]
  805. }]
  806. });
  807. }
  808. //alert("4");
  809. // Dynamic charts places.
  810. var containers = <?php echo $countDyn;?>;
  811. //alert("containers = " + containers);
  812. // simon way.
  813. var label_array = new Array();
  814. var str_array = new Array();
  815. <?php
  816. for($s = 0; $s < $countDyn; $s++){
  817. echo "label_array[".$s."] = '".$labels[$s]."';\n";
  818. //echo "str_array[".$s."] = \'".$dynstr_data[$s]."\';\n"; // wrong.
  819. // str_array[0] = "['0', 1699],['1', 1735]";
  820. // echo 'str_array[\''.$s.'\'] = "'.$dynstr_data[$s].'"; '; // cannot use this syntax, because the chart won't accept.
  821. echo 'str_array[\''.$s.'\'] = '.$dynstr_data[$s].'; ';
  822. }
  823. ?>
  824. for(var i=0; i<containers; i++){ // 0~7, 1~8...
  825. var containerName = "container"+(i+7);
  826. //alert("containerName = " + containerName);
  827. //var label = '<?=$labels[0]?>';
  828. var label = label_array[i];
  829. //alert("label = " + label);
  830. //var strData = "['0', 1699],['1', 1735]";//str_array[i];
  831. //alert("str = " + strData);
  832. var dynPl = document.getElementById(containerName);
  833. if (dynPl != null){
  834. //alert("Dyn yes2.");
  835. chart_Dyn = new Highcharts.Chart({
  836. chart: {
  837. renderTo: containerName,
  838. plotBackgroundColor: null,
  839. plotBorderWidth: null,
  840. plotShadow: false
  841. },
  842. title: {
  843. text: label//'DYN breakdown'
  844. },
  845. tooltip: {
  846. formatter: function() {
  847. return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  848. //return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  849. }
  850. },
  851. plotOptions: {
  852. pie: {
  853. allowPointSelect: true,
  854. cursor: 'pointer',
  855. dataLabels: {
  856. enabled: true,
  857. color: Highcharts.theme.textColor || '#000000',
  858. connectorColor: Highcharts.theme.textColor || '#000000',
  859. formatter: function() {
  860. //return '<b>'+ this.point.name +'</b>: '+ this.y +' entries';
  861. return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
  862. }
  863. }
  864. }
  865. },
  866. series: [{
  867. type: 'pie',
  868. name: label,//'DYN breakdown',
  869. data: [
  870. str_array[i] //['0', 1699],['1', 1735] // <?php echo $dynstr_data[0];?> // CHANGE TO [i]
  871. ]
  872. }]
  873. });
  874. }
  875. }
  876. //alert("5");
  877. });
  878. </script>
  879. <style>
  880. table#user-list tr.hover {
  881. color: #fff;
  882. background-color: #4c95e6;
  883. }
  884. #slidingDiv {
  885. display: none;
  886. height:1300px;
  887. width:600px;
  888. background-color:#CCC;
  889. padding:20px;
  890. margin-top:10px;
  891. border-bottom:5px solid #3399FF;
  892. font-family:Arial, Helvetica, sans-serif;
  893. font-style:normal;
  894. color:black;
  895. float: left;
  896. position:absolute;
  897. left:500px;
  898. top:40px;
  899. }
  900. #slidingInsightsDiv {
  901. display: none;
  902. height:1300px;
  903. width:1000px;
  904. background-color:#CCC;
  905. padding:20px;
  906. margin-top:10px;
  907. border-bottom:5px solid #3399FF;
  908. font-family:Arial, Helvetica, sans-serif;
  909. font-style:normal;
  910. color:black;
  911. float: left;
  912. position:absolute;
  913. left:500px;
  914. top:40px;
  915. }
  916. #slidingSearchDiv {
  917. display: none;
  918. height:1300px;
  919. width:600px;
  920. background-color:#CCC;
  921. padding:20px;
  922. margin-top:10px;
  923. border-bottom:5px solid #3399FF;
  924. font-family:Arial, Helvetica, sans-serif;
  925. font-style:normal;
  926. color:black;
  927. float: left;
  928. position:absolute;
  929. left:320px;
  930. top:40px;
  931. }
  932. #container {
  933. float: left;
  934. width: 33.3%;
  935. /* Min-height: */
  936. min-height: 400px;
  937. height: auto !important;
  938. height: 400px;
  939. }
  940. #container2 {
  941. float: left;
  942. width: 33.3%;
  943. /* Min-height: */
  944. min-height: 400px;
  945. height: auto !important;
  946. height: 400px;
  947. }
  948. #container3 {
  949. float: left;
  950. width: 33.3%;
  951. /* Min-height: */
  952. min-height: 400px;
  953. height: auto !important;
  954. height: 400px;
  955. }
  956. #container4 {
  957. float: left;
  958. width: 33.3%;
  959. /* Min-height: */
  960. min-height: 400px;
  961. height: auto !important;
  962. height: 400px;
  963. }
  964. #container5 {
  965. float: left;
  966. width: 33.3%;
  967. /* Min-height: */
  968. min-height: 400px;
  969. height: auto !important;
  970. height: 400px;
  971. }
  972. #container6 {
  973. float: left;
  974. width: 33.3%;
  975. /* Min-height: */
  976. min-height: 400px;
  977. height: auto !important;
  978. height: 400px;
  979. }
  980. <?php
  981. $i = 0;
  982. $dynContainer = 7;
  983. for($i=0; $i < $countDyn; $i++){
  984. if ($displaydyn_div[$i] == 1){
  985. echo "#container".$dynContainer."{
  986. float: left;
  987. width: 33.3%;
  988. min-height: 400px;
  989. height: auto !important;
  990. height: 400px;
  991. }";
  992. $dynContainer++;
  993. }
  994. }
  995. ?>
  996. </style>
  997. <style type="text/css">
  998. @import "DTmedia/css/demo_page.css";
  999. @import "DTmedia/css/demo_table.css";
  1000. </style>
  1001. <script type="text/javascript" language="javascript" src="DTmedia/js/jquery.js"></script>
  1002. <script class="jsbin" src="http://datatables.net/download/build/jquery.dataTables.nightly.js"></script>
  1003. <script type="text/javascript">
  1004. $(document).ready(function(){
  1005. $('#example').dataTable();
  1006. });
  1007. </script>
  1008. </head>
  1009. <body>
  1010. <p>Data collected on this campaign:</p>
  1011. <?
  1012. $sql = "SELECT cpfldcfg_label, cpfldcfg_var_name, cpfldcfg_is_mandatory FROM sp_campaign_config where campaign_sid='".$_POST['campaignID']."' and cpfldcfg_is_valid=1";
  1013. $res = mysql_query($sql);
  1014. if (mysql_num_rows($res) > 0) {
  1015. while (list($field_label, $field_varname, $field_mandatory) = mysql_fetch_array($res)) {
  1016. if ($field_mandatory == 1) {
  1017. $mandatory_str = " is mandatory";
  1018. } else {
  1019. $mandatory_str = " is not mandatory";
  1020. }
  1021. echo $field_label." (".$mandatory_str.")<br>";
  1022. }
  1023. }
  1024. ?>
  1025. <?php
  1026. echo "<div id='tableContainer'>";
  1027. echo "<h1>".$_POST['campaignName']."</h1>";
  1028. echo "<h2>cid: ".$_POST['campaignID']."</h2>";
  1029. // run the sql again to get data...
  1030. //$res = mysql_query($sql);
  1031. //if (mysql_num_rows($res) > 0) {
  1032. if($index > 0){
  1033. //echo "<h4>total days: ".mysql_num_rows($res)."</h4>";
  1034. echo "<h4>total days: ".$index."</h4>";
  1035. echo "<table cellpadding='0' cellspacing='0' border='2' class='display' id='user-list'>"; //id='example'>";
  1036. echo "<thead><tr>
  1037. <th>Date</th><th>Total Entries</th><th>Distinct Entries</th>
  1038. </tr>
  1039. </thead>";
  1040. echo "<tbody>";
  1041. $i = 0;
  1042. //while (list($currdate, $totalentries) = mysql_fetch_array($res)) {
  1043. while($i <= $index){
  1044. //echo "date:".$currdate."- entries: ".$totalentries."<br>";
  1045. if($i % 2 != 0){
  1046. echo "<tr class='odd gradeX'>";
  1047. }
  1048. else{
  1049. echo "<tr class='odd gradeA'>";
  1050. }
  1051. //echo "<td class='center'>".$currdate."</td>";
  1052. echo "<td class='center'> <a id='r".$i."'>".$array_sql[$i][0]."</a></td>";
  1053. //echo "<td class='center'> <a id='t".$i."' href="javascript: viewEnties('t1')" >".$array_sql[$i][1]."</a></td>";???
  1054. echo '<td class="center"> <a id="t'.$i.'" href="javascript: viewEnties(\'t'.$i.'\')" >'.$array_sql[$i][1].'</a></td>';
  1055. //$totalentries+=10; // dummy data;
  1056. //echo "<td class='center'> <a id='d".$i."' href='www.google.com'>".$array_sql[$i][2]."</a></td>";???
  1057. echo '<td class="center"> <a id="d'.$i.'" href="javascript: viewEnties(\'d'.$i.'\')" >'.$array_sql[$i][2].'</a></td>';
  1058. echo "</tr>";
  1059. $i++;
  1060. }
  1061. echo "</tbody>";
  1062. echo "</table>";
  1063. }
  1064. echo "</div>";
  1065. ?>
  1066. <div id="container" style="width: 900px; height: 400px; margin: 0 auto"></div>
  1067. <? if ($displaygender_div == 1) { ?>
  1068. <div id="container2" style="width: 900px; height: 400px; margin: 0 auto"></div>
  1069. <? } ?>
  1070. <? if ($displayemail_div == 1) { ?>
  1071. <div id="container3" style="width: 900px; height: 400px; margin: 0 auto"></div>
  1072. <? } ?>
  1073. <? if ($displayagerange_div == 1) { ?>
  1074. <div id="container4" style="width: 900px; height: 400px; margin: 0 auto"></div>
  1075. <? } ?>
  1076. <? if ($displayzipcode_div == 1) { ?>
  1077. <div id="container5" style="width: 900px; height: 400px; margin: 0 auto"></div>
  1078. <? } ?>
  1079. <? if ($displaycarrier_div == 1) { ?>
  1080. <div id="container6" style="width: 900px; height: 400px; margin: 0 auto"></div>
  1081. <? } ?>
  1082. <?php
  1083. $i = 0;
  1084. $dynContainer = 7;
  1085. for($i=0; $i < $countDyn; $i++){
  1086. //echo "i = ".$i."<br/>";
  1087. //echo "dynContainer = ".$dynContainer."<br/>";
  1088. if ($displaydyn_div[$i] == 1){
  1089. echo "<div id='container".$dynContainer."' style='width: 900px; height: 400px; margin: 0 auto'></div>";
  1090. $dynContainer++;
  1091. }
  1092. }
  1093. ?>
  1094. </body>
  1095. </html>