I'm having a problem with my php code. I have it set up to alert me by email when there are no products or results in a particular category, but I'm getting alerts even when there are results. Does anyone have any idea why this would be happening? I keep getting emails that there are no products in that category when there are. Its quite annoying and time intensive. Any help would be really appreciated.
I think it may have something to do with the last page of results. For eg if there are 10 pages of products I think, perhaps its sending out the email when it tries to get the 11th page? I'm not sure, this is just a guess.
Here is the code I'm using:
Code: Select all
<?
$hostname = "";
$username = "";
$password = "";
$userstable = "";
$dbName = "";
//some additional variables we need to display pages
//number of results displayed on a page. Change this if u want...
$limit = 15;
//format-strings for the page-links
//change it to ur needs (u may add some stylesheet-information), but be aware of the %d ´s.
//They will be replaced by some values later.
//Format for a page-link, if it links not to the current result-page
$page_array_format = "<a href=\"".$PHP_SELF."?offset=%d\" >[%d]</a> ";
//Format for a page-link, if it links to the current result-page (here it is not a link)
$page_array_format_current_page = "%d ";
//Format for the next-link
$page_next_format = "<a href=\"".$PHP_SELF."?offset=%d\" >[next]</a> ";
//Format for the back-link
$page_back_format = "<a href=\"".$PHP_SELF."?offset=%d\" >[back]</a> ";
//DO NOT CHANGE THIS...
//offset point. Recordsets offset+limit are displayed
$offset = (!empty($_REQUEST['offset'])) ? (int)$_REQUEST['offset'] : 0;
/**
* Function getPagesArray()
* returns Pages-Array like this:
*
* Array {
* 1 => array {
* 'page' => 1,
* 'page_offset' => 0
* }
* 2 => array {
* 'page' => 2,
* 'page_offset' => 10
* }
* }
*
*
* @return array pages-array
*/
function getPageArray($hits, $range)
{
$pages = array();
$hits = (int)$hits;
$range = (int)$range;
//if there are more hits then range allows...
if($hits > $range) {
$page_number = $hits / $range;
$number_of_pages = ceil($page_number);
$offset = 0;
for($i=1; $i<= $number_of_pages; $i++) {
$pages[$i] = array('page' => $i, 'page_offset' => $offset);
$offset += $range;
}
}
return $pages;
}
function printPageArray($hits, $range)
{
global $page_array_format, $page_array_format_current_page, $page_back_format, $page_next_format, $offset, $limit;
$offset = (int)$offset;
$hits = (int)$hits;
$pages = getPageArray($hits, $range);
//var_dump($pages);
//get the back-link
if($offset > 0) {
//if that is not the first page
//show the back-link
$back_offset = $offset - $limit;
//should not be smaller then 0 ;-)
$back_offset = ($back_offset < 0) ? 0 : $back_offset;
//print formated back-link
printf($page_back_format, $back_offset);
}
//get the page-links
for($i=1; $i <= sizeof($pages); $i++) {
if($pages[$i]['page_offset'] == $offset) {
//thats the number of current page
printf($page_array_format_current_page, $pages[$i]['page']);
} else {
//not the current page
printf($page_array_format, $pages[$i]['page_offset'], $pages[$i]['page']);
}
}
//get the next-link
if(($offset + $limit) < $hits) {
//if this is not the last page
$next_offset = $offset + $limit;
printf($page_next_format, $next_offset);
}
}
//do the connection
@MYSQL_CONNECT($hostname, $username, $password) OR DIE("Unable to connect to database");
//choose the db
@mysql_select_db( "$dbName") or die( "Unable to select database");
//first we need a simple query to get the number of all records
$query = "SELECT * FROM $userstable WHERE ADVERTISERCATEGORY LIKE '%Electric Guitar Pickups%'";
$hits = @mysql_num_rows(mysql_query($query));
//Now the real query, but now with LIMIT-Clause
$query = "SELECT PRICE,RETAILPRICE,BUYURL,NAME,DESCRIPTION,IMAGEURL,IMPRESSIONURL,MANUFACTURER FROM $userstable WHERE ADVERTISERCATEGORY LIKE '%Electric Guitar Pickups%'";
$query.= " LIMIT $offset, $limit";
$result = MYSQL_QUERY($query);
/* How many of these users are there? */
$number = @MYSQL_NUMROWS($result);
/* Print these results to the screen in a nice format */
$i = 0;
IF ($number == 0) :
PRINT "<font size=\"2\">New Product Coming Soon!</font><br>";
$adminEmail = "webmaster@mysite.com";
$subject = "The category called ADVERTISERCATEGORY LIKE '%Electric Guitar Pickups%' is no longer valid";
$body = "The category in the subject no longer has products in it. Page eguitar-pickups-cat.php";
mail($adminEmail,$subject,$body,"FROM: $adminEmail");
ELSEIF ($number > 0) :
PRINT "";
//Now its time to print out our pages-links
PRINT "<p align=center>";
//where ever u put next line, there will be displayed the page-array
printPageArray($hits, $limit);
PRINT "</p>";
print '<table width="100%" border="2" cellspacing="5" cellpadding="10"><tr>';
$x = 1;
echo "<tr>";
//start inside
WHILE ($i < $number):
$PRICE = mysql_result($result,$i,"PRICE");
$RETAILPRICE = mysql_result($result,$i,"RETAILPRICE");
$BUYURL = mysql_result($result,$i,"BUYURL");
$NAME = mysql_result($result,$i,"NAME");
$DESCRIPTION = mysql_result($result,$i,"DESCRIPTION");
$IMAGEURL = mysql_result($result,$i,"IMAGEURL");
$IMPRESSIONURL = mysql_result($result,$i,"IMPRESSIONURL");
//put td here
PRINT '<td align="center" valign="top">';
PRINT "<strike><strong><font color=\"#FF0000\" size=\"2\">$RETAILPRICE</strike></strong></font><BR>";
PRINT "<strong><font color=\"#FF0000\" size=\"2\">$PRICE</font></strong><BR>";
PRINT "<a href=$BUYURL target=blank rel=nofollow><img src=$IMAGEURL border=0><BR></A>";
PRINT "<a href=$BUYURL target=blank rel=nofollow><strong><font size=\"2\">$NAME</a></strong></font><BR>";
PRINT "<font size=\"2\">$DESCRIPTION</font><BR><BR>";
PRINT "<a href=$BUYURL target=blank rel=nofollow><strong><font size=\"2\">MORE...</a></strong></font><BR><BR>";
PRINT "<a href=$IMPRESSIONURL></A>";
//wrap it
//change where its 2,3,4 to 3,4,5 to display five in a row. - easy ha..
print "</td>";
if ($x == 1 ) {$x ++;} else {
if ($x == 2 ) {$x ++;} else {
if ($x == 3 ) {echo "</tr><tr>"; $x=1;} else{$x ++;}
}}
$i++;
ENDWHILE;
print "</tr>";
echo "</table>";
//Now its time to print out our pages-links
PRINT "<p align=center>";
//where ever u put next line, there will be displayed the page-array
printPageArray($hits, $limit);
PRINT "</p>";
ENDIF;
//if is at end
?>