yes! thats giving the result im looking for
time will tell if its going to be beter to go down this route or the other way
many thanks…
p.s any ideas what is causing my mysql to run out of memory e.g
Kernow Connect - for the smarter shopper: compare and save for cheap dvds, blu-rays, books, xbox, xbox 360, ps3, wii, pc games
here is my code
<?php
$set = '0';
menu($parentid,$pageid,$bin,$binName,$age,$ageName,$cat,$search,$searchName,$set,$path);
function menu($parentid,$pageid,$bin,$binName,$age,$ageName,$cat,$search,$searchName,$set,$path)
{?>
<div class="left">
<div class="menuTitle">Refine Options</div>
<?php
if(isset($pageid))
{
switch($pageid)
{
case "dvd";
echo "<h2 class ='menu_header'>Format</h2>";
echo "<ul>";
if($bin) //If binding is set offer a reset option
{
$link = '';
$seperator = "?";
if($cat)
{
$link = $link.$seperator."cat=".$cat;
$seperator = "&";
}
elseif($age)
{
$link = $link.$seperator."age=".$age;
$seperator = "&";
}
else
{
$link = $path;
}
echo "<li><a href='$link'>Reset</a></li>";
}
$count = 1;
#$query = mysql_query
#("
# SELECT *
# FROM tbl_dvds AS maintable
# LEFT JOIN
# (
# SELECT filmBinding, COUNT( filmBinding ) AS formatcount
# FROM tbl_dvds
# WHERE filmBinding <> ''
# GROUP BY filmBinding
# ORDER BY formatcount DESC
# ) AS join1 ON maintable.filmBinding = join1.filmBinding
# LEFT JOIN
# (
# SELECT filmAgeRating, COUNT( filmAgeRating ) AS agecount
# FROM tbl_dvds
# WHERE filmAgeRating <> ''
# AND filmAgeRating <> 'To Be Announced'
# GROUP BY filmAgeRating
# ) AS join2 ON maintable.filmAgeRating = join2.filmAgeRating
#");
$query = mysql_query("
SELECT filmBinding,COUNT(filmBinding)
AS binding_num
FROM tbl_dvds
WHERE filmBinding <> ''
GROUP BY filmBinding
ORDER BY binding_num DESC
")or die (mysql_error());
while($row = mysql_fetch_array($query))
{
$link = '';
$binding = $row['filmBinding'];
$label = $binding." (".$row['binding_num'].")";
$divider = "?";
if($cat)
{
$link = $link.$divider."cat=$cat";
$divider = "&";
}
if($age)
{
$link = $link.$divider."age=$age";
$divider = "&";
}
$link = $link.$divider."bin=$count";
if($bin == $count)
{
echo "<li class='select'><a href='$link'>".$label."</a></li>";
}
else
{
echo "<li class='nonselect'><a href='$link'>".$label."</a></li>";
}
$count++;
}
echo "</ul>";
echo "<h2 class ='menu_header'>Browse By</h2>";
echo "<ul>";
echo "<li class='nonselect'><a href=''>Bestsellers</a></li>";
echo "<li class='nonselect'><a href=''>New Releases</a></li>";
echo "<li class='nonselect'><a href=''>Pre-Orders</a></li>";
echo "<li class='nonselect'><a href=''>Box Sets</a></li>";
echo "</ul>";
echo "<h2 class ='menu_header'>Age Rating</h2>";
echo "<ul>";
// add a rest link to remove selected age rating
if($age)
{
$link = '';
$seperator = "?";
if($cat)
{
$link = $link.$seperator."cat=".$cat;
$seperator = "&";
}
elseif($bin)
{
$link = $link.$seperator."bin=".$bin;
$seperator = "&";
}
else
{
$link = $path;
}
echo "<li><a href='$link'>Reset</a></li>";
}
$countz = 1;
if($bin)
{
$query = mysql_query("
SELECT filmAgeRating,COUNT(filmAgeRating) AS cat_num
FROM tbl_dvds
WHERE filmAgeRating <> '' && filmAgeRating <> 'To Be Announced' && filmBinding = '$binName'
GROUP BY filmAgeRating")or die (mysql_error());
}
else
{
$query = mysql_query("
SELECT filmAgeRating,COUNT(filmAgeRating) AS cat_num
FROM tbl_dvds
WHERE filmAgeRating <> '' && filmAgeRating <> 'To Be Announced'
GROUP BY filmAgeRating")or die (mysql_error());
}
while($row=mysql_fetch_array($query))
{
$link = '';
$divider = "?";
$ar = $row['filmAgeRating'];
if($cat)
{
$link = $link.$divider."cat=$cat";
$divider = "&";
}
if($bin)
{
$link = $link.$divider."bin=$bin";
$divider = "&";
}
$link = $link.$divider."age=$countz";
if($age == $countz)
{
echo "<li class='select'><a href='$link'>".$ar." (".$row['cat_num'].")</a></li>";
}
else
{
echo "<li class='nonselect'><a href='$link'>".$ar." (".$row['cat_num'].")</a></li>";
}
$countz++;
}
echo "</ul>";
break;
case "cd";
break;
case "game";
break;
case "book";
break;
}
}
echo "<h2 class ='menu_header'>Category</h2>";
if(!$cat)
{
echo "<ul>";
$menu = mysql_query("SELECT * FROM tbl_categories WHERE catParent = '$parentid' ORDER BY catName ASC")or die(mysql_error());
while($row = mysql_fetch_array($menu))
{
$link = '';
$id = $row['catID'];
$catName = htmlspecialchars($row['catName']);
$regexp = "REGEXP '[[:<:]]($id)[[:>:]]'";
$divider = "?";
if($bin)
{
$link = $link."&bin=$bin";
$regexp = $regexp." && filmBinding = '$binName'";
}
else
{
$regexp = $regexp;
}
if($age)
{
$link = $link."&age=$age";
$divider = "&";
$regexp = $regexp." && filmAgeRating = '$ageName'";
}
$link = "?cat=$id".$link;
switch($pageid)
{
case "dvd";
$menuitems = mysql_query("SELECT filmDepartment,filmAgeRating,filmBinding FROM tbl_dvds WHERE filmDepartment $regexp")or die(mysql_error());
break;
}
$rows = mysql_num_rows($menuitems);
if($cat == $id)
{
echo "<li class='select'><a href='$link'>".$catName." (".$rows.")</a></li>";
}
else
{
echo "<li class='nonselect'><a href='$link'>".$catName." (".$rows.")</a></li>";
}
}
echo "</ul>";
}
else
{
parents($pageid,$set,$path,$parentid,$bin,$binName,$age,$ageName,$cat);
}?>
</div><?php
}
function parents($pageid,$set,$path,$parentid,$bin,$binName,$age,$ageName,$cat)
{
if($set == '0')
{
$ran = "false";
echo "<ul>";
if($cat)
{
$link = '';
$seperator = "?";
if($bin)
{
$link = $link.$seperator.$bin;
$seperator = "&";
}
if($age)
{
$link = $link.$seperator.$age;
}
if($cat)
{
$link = $link;
}
echo "<li><a href='$link'>Reset</li>";?></a><?php
}
$set = '1';
}
$pQuery = mysql_query("SELECT * FROM tbl_categories WHERE catID = $cat")or die(mysql_error());
while($pRow=mysql_fetch_array($pQuery))
{
$catP = $pRow['catParent'];
$name = $pRow['catName'];
$pr = $pRow['catID'];
$regexp = "REGEXP '[[:<:]]($pr)[[:>:]]'";
$divider = "?";
if($bin)
{
$link = $link."&bin=$bin";
$regexp = $regexp." && filmBinding = '$binName'";
}
else
{
$regexp = $regexp;
}
if($age)
{
$link = $link."&age=$age";
$divider = "&";
$regexp = $regexp." && filmAgeRating = '$ageName'";
}
switch($pageid)
{
case "dvd";
$parentitems = mysql_query("SELECT filmDepartment,filmAgeRating,filmBinding FROM tbl_dvds WHERE filmDepartment $regexp")or die(mysql_error());
break;
}
$rows = mysql_num_rows($parentitems);
$idz[] = $pr;
$namez[] = $name;
if($catP != $parentid)
{
parents($pageid,$set,$path,$parentid,$bin,$binName,$age,$ageName,$cat);
}
foreach($idz as $idz)
{
if($idz != $cat)
{?>
<li class="nonselect"><a href='?cat=<?php echo $idz?>'><?php echo $namez[0]." (".$rows.")"?></a></li><?php
}
else
{
echo "<li style='padding-left:15px;'>".$namez[0]." (".$rows.")</li>";
}
}
}
if($ran == "false")
{
children($pageid,$bin,$binName,$age,$ageName,$cat);
$ran = "true";
}
if($set == '1' && $ran == "true")
{
echo "</ul>";
$set = '2';
}
}
function children($pageid,$bin,$binName,$age,$ageName,$cat)
{
$query = mysql_query("SELECT * FROM tbl_categories WHERE catParent = $cat")or die(mysql_error());
while($row=mysql_fetch_array($query))
{
$id = $row['catID'];
$parent = $row['catParent'];
$regexp = "REGEXP '[[:<:]]($id)[[:>:]]'";
if($bin)
{
$divider = "?";
$regexp = $regexp." && filmBinding = '$binName'";
}
if($age)
{
$link = $link."&age=$age";
$divider = "&";
$regexp = $regexp." && filmAgeRating = '$ageName'";
}
switch($pageid)
{
case "dvd";
$childitems = mysql_query("SELECT filmDepartment,filmBinding,filmAgeRating FROM tbl_dvds WHERE filmDepartment $regexp")or die(mysql_error());
break;
}
$rows=mysql_num_rows($childitems);?>
<li class="nonselect"><a href="?cat=<?php echo $id?>"><?php echo $row['catName']." (".$rows.")"?></a></li><?php
}
}?>
cheers mate!