hi - the sql is working 100% - just the flow of code is not exactly as i expected when i developed it last night. here's the cronjob:
<?PHP /* CANOPYXCHANGE DAILY UNTAPPED POTENTIALS CALCULATION Version 2.2.5 */ $errmsg = array(); chdir(__DIR__); include("../includes/content/performatix.php"); include("../includes/mailer/phpmailer 5.2.1/class.phpmailer.php"); // include PHPMailer class $f = $get["f"]; if (!is_numeric($f)) { $f = 1; } else { $f = intval($f); } $t = $get["t"]; if (!is_numeric($t)) { $t = 0; } else { $t = intval($t); } for ($i = $f; $i > $t; $i--) { echo "-".$i."days \r\n"; $osql = "SELECT SC.bigint_ServiceID, # Service R.bigint_RegionID, # Region SA1.bigint_AttributeID, # Primary Attribute Value SC.text_ServiceManagerContact, SC.`text_ServiceManagerE-mail`, SC.text_TechSupportContact, SC.`text_TechSupportE-mail`, SC.text_ServiceDescription, R.text_RegionDescription, SA1.text_AttributeValue, SUM(PLS.double_PotentialCost) AS double_ProspectsCostTotal, COUNT(DISTINCT SP.bigint_ProspectID, PLS.smallint_ProspectOrdinal) AS bigint_ProspectsSentCount, TRUNCATE(SUM(PLS.double_PotentialCost)/COUNT(DISTINCT SP.bigint_ProspectID, PLS.smallint_ProspectOrdinal), 2) AS double_AvgCostPerProspect, DATE_ADD(CURDATE(),INTERVAL -".$i." DAY) AS date_DateStamp FROM 2_servicescatalogue SC JOIN 1_regions R ON ( R.bigint_ParentRegionID BETWEEN 1 AND 7 ) JOIN 3_serviceattributes SA0 ON ( SC.bigint_PrimaryAttributeKey = SA0.bigint_AttributeID AND SC.bigint_ServiceID = SA0.bigint_AttributeServiceID ) JOIN 3_serviceattributes SA1 ON ( SA0.text_AttributeDescription = SA1.text_AttributeDescription AND SA0.bigint_AttributeServiceID = SA1.bigint_AttributeServiceID ) JOIN 10_serviceprospects SP ON ( DATE(SP.timestamp_ProspectCreated) = DATE_ADD(CURDATE(),INTERVAL -".$i." DAY) AND SC.bigint_ServiceID = SP.bigint_ServiceID AND R.bigint_RegionID = SP.bigint_RegionID AND SP.text_LeadAttributes LIKE IF( SA1.bigint_AttributeID = 0, '%', CONCAT( '%', SA1.text_AttributeDescription, ' = ', SA1.text_AttributeValue, '%' ) ) ) JOIN 13_prospectleadsent PLS ON (SP.bigint_ProspectID = PLS.bigint_ProspectID) GROUP BY SC.bigint_ServiceID, R.bigint_RegionID, SA1.bigint_AttributeID ORDER BY SC.text_ServiceDescription ASC, R.text_RegionDescription ASC, SA1.text_AttributeValue ASC;"; $oresult = mysql_query_errors($osql, $conn , __FILE__ , __LINE__,true); $oservice = 0; $n = 0; $service = array(); $servicename = array(); $region = array(); $regionname = array(); $attid = array(); $attvalue = array(); $pct = array(); $psc = array(); $acpp = array(); $ds = array(); $summary = ""; if ($oresult) { while ($orow = mysql_fetch_array($oresult)) { global $formname, $logo, $formfromname, $formfrommail, $smgn, $smge, $tcsn, $tcse, $datestamp, $summary, $cmpid, $cmpname, $cmpsource, $apicreds, $time, $now; $smgn = $orow["text_ServiceManagerContact"]; $smge = $orow["text_ServiceManagerE-mail"]; $tcsn = $orow["text_TechSupportContact"]; $tcse = $orow["text_TechSupportE-mail"]; $service[$n] = $orow["bigint_ServiceID"]; $servicename[$n] = $orow["text_ServiceDescription"]; $region[$n] = $orow["bigint_RegionID"]; $regionname[$n] = $orow["text_RegionDescription"]; $attid[$n] = $orow["bigint_AttributeID"]; $attvalue[$n] = $orow["text_AttributeValue"]; $pct[$n] = floatval($orow["double_ProspectsCostTotal"]); $psc[$n] = $orow["bigint_ProspectsSentCount"]; $acpp[$n] = floatval($orow["double_AvgCostPerProspect"]); $ds[$n] = $orow["date_DateStamp"]; $tsql = "INSERT INTO 48_untappedpotentials ( bigint_ServiceID, bigint_RegionID, bigint_PrimAttValue, double_ProspectsCostTotal, bigint_ProspectsSentCount, double_AvgCostPerProspect, date_DateStamp ) VALUES ( ".$service[$n].", ".$region[$n].", ".$attid[$n].", ".$pct[$n].", ".$psc[$n].", ".$acpp[$n].", \"".$ds[$n]."\" ) ON DUPLICATE KEY UPDATE bigint_ServiceID = ".$service[$n].", bigint_RegionID = ".$region[$n].", bigint_PrimAttValue = ".$attid[$n].", double_ProspectsCostTotal = ".$pct[$n].", bigint_ProspectsSentCount = ".$psc[$n].", double_AvgCostPerProspect = ".$acpp[$n].", date_DateStamp = \"".$ds[$n]."\";"; $tresult = mysql_query_errors($tsql, $conn , __FILE__ , __LINE__,true); if ($oservice != $service[$n] && $n != 0) { $tsql0 = "SELECT * FROM 32_webformconfigs WC WHERE WC.tinyint_FormDefault = 1 AND WC.bigint_FormService = ".$service[0].";"; $tresult0 = mysql_query_errors($tsql0, $conn, __FILE__, __LINE__ , true ); $trow0 = mysql_fetch_array($tresult0); $formid = $trow0["bigint_FormID"]; $formname = $trow0["text_FormName"]; $copy = $formname; $logo = "http://quomoto.co/templates/fs_quomoto/images/quomoto_logo.png"; //$trow0["text_FormLogo"]; $formfromname = $trow0["text_FormMailerFromName"]; $formfrommail = $trow0["text_FormMailerFromAddress"]; echo "$servicename[0] \$ds[0] = ".print_r($ds[0],true)."\r\n"; $summary .= "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">". "<thead>". "<tr>". "<th>Service Description</th>". "<th>Region Description</th>". "<th>Primary Attribute Value</th>". "<th>Total Prospects Cost</th>". "<th>Total Prospects Sent</th>". "<th>Average Cost Per Prospect</th>". "</tr>". "</thead>". "<tbody>"; for ($a = 0; $a < count($service)-1; $a++) { $summary .= "<tr class=\"minus\">"; $summary .= "<td>".$servicename[$a]."</td>"; $summary .= "<td>".$regionname[$a]."</td>"; $summary .= "<td>".$attvalue[$n]."</td>"; $summary .= "<td>".$pct[$a]."</td>"; $summary .= "<td>".$psc[$a]."</td>"; $summary .= "<td>".$acpp[$a]."</td>"; $summary .= "</tr>"; } $summary .= "</tbody>". "</table>"; // mail to service manager if records found if (strlen($summary)>0) { $body = getFile("../templat/untappedpotentials.html"); // load mail template $mail = new PHPMailer(); // create a new object $body = str_replace("%LOGO%",$logo,$body); // insert logo url $body = str_replace("%DATESTAMP%",$ds[0],$body); // insert current datestamp $body = str_replace("%SUMMARY%",$summary,$body); // insert summary of yesterdays campaign transactions $body = str_replace("%FORMNAME%",$formname,$body); // insert form name $body = str_replace("%COPYRIGHT%",$copy,$body); // insert copyright owner $body = str_replace("%YEAR%",date("Y"),$body); // insert copyright year $body = populateflags($body); require("../includes/mailer/phpmailer 5.2.1/mailer_auth.php"); // include mailer auth $mail->From = $formfrommail; // set from email $mail->FromName = $formfromname; // set from name $mail->Subject = getSubText($body,"<title>","</title>"); // set subject to template page title $mail->AddAddress($smge,$smgn); // bcc jaap the response $mail->AddBCC("jaap@quomoto.co","Jaap Venter"); // bcc the svcmgr the notification $mail->AddBCC($tcse,$tcsn); // bcc tech support the notification $mail->ClearAttachments(); // clears attachments $mail->MsgHTML($body); // set HTML Body $mail->AltBody = strip_tags(html_entity_decode(getSubText($body, // set Text Body "<body>","</body>"))); $mail->IsHTML(true); // set send as HTML if(!$mail->Send()) { // if attempt sending failed array_push($errmsg,"FAILURE: ".$smge.", ".$smgn. // save error report " (".trim(strip_tags($mail->ErrorInfo)).")"); $failure++; // increment failures count } else { array_push($errmsg,"SUCCESS: ".$smge.", ".$smgn); // save success report $success++; // increment success count } } $n = 0; $service = array(); $servicename = array(); $region = array(); $regionname = array(); $attid = array(); $attvalue = array(); $pct = array(); $psc = array(); $acpp = array(); $ds = array(); $summary = ""; $service[$n] = $orow["bigint_ServiceID"]; $servicename[$n] = $orow["text_ServiceDescription"]; $region[$n] = $orow["bigint_RegionID"]; $regionname[$n] = $orow["text_RegionDescription"]; $attid[$n] = $orow["bigint_AttributeID"]; $attvalue[$n] = $orow["text_AttributeValue"]; $pct[$n] = floatval($orow["double_ProspectsCostTotal"]); $psc[$n] = $orow["bigint_ProspectsSentCount"]; $acpp[$n] = floatval($orow["double_AvgCostPerProspect"]); $ds[$n] = $orow["date_DateStamp"]; $tsql0 = "SELECT * FROM 32_webformconfigs WC WHERE WC.tinyint_FormDefault = 1 AND WC.bigint_FormService = ".$service[$n].";"; $tresult0 = mysql_query_errors($tsql0, $conn, __FILE__, __LINE__ , true ); $trow0 = mysql_fetch_array($tresult0); $formid = $trow0["bigint_FormID"]; $formname = $trow0["text_FormName"]; $copy = $formname; $logo = "http://quomoto.co/templates/fs_quomoto/images/quomoto_logo.png"; //$trow0["text_FormLogo"]; $formfromname = $trow0["text_FormMailerFromName"]; $formfrommail = $trow0["text_FormMailerFromAddress"]; echo "$servicename[0] \$ds[0] = ".print_r($ds[0],true)."\r\n"; } $n++; } } echo "SQL, ARR, LMX & CAT DEBUGGING INFO:\r\n\r\n\$sql = ".print_r($sql,true)."\r\n". "SUCCESS COUNT = ".intval($success)."\r\n". "FAILURE COUNT = ".intval($failure)."\r\n". "\$ERRMSG = ".print_r($errmsg,true); } mysql_close($conn); ?>
> however - when executed it does not print all the days, i am running as "cronjob_untappedpotentials.php?f=38&t=0" so it should decrement from 38 down to 0.
> then in the resultset, send an email out per distinct service.
> what is wrong with the logic in my code? apologies, i was rather overworked when i developed this.
i think the actual question is - how does the current execution differ from the intention of execution? 0o
sincerely,
Pierre du Toit.