Detail of category, list of products...

10 posts by 3 authors in: Forums > CMS Builder
Last Post: December 15, 2009   (RSS)

Re: [Toledoh] Detail of category, list of products...

OK - hours messy around, and I've come up with this... but why doesn't it work?

<?php header('Content-type: text/html; charset=utf-8'); ?>

<?php

require_once "/home/.merle/fibre_king/fibreking.com/cmsAdmin/lib/viewer_functions.php";

list($productsRecords, $productsMetaData) = getRecords(array(
'tableName' => 'products',
'allowSearch' => '1',
));

?>

<?php

require_once "/home/.merle/fibre_king/fibreking.com/cmsAdmin/lib/viewer_functions.php";

list($product_categoriesRecords, $product_categoriesMetaData) = getRecords(array(
'tableName' => 'product_categories',
'where' => " name = '" .mysql_real_escape_string($productsRecord['product_category']). "' ",
'limit' => '1',
));
$product_categoriesRecord = @$product_categoriesRecords[0]; // get first record

// show error message if no matching record is found
if (!$product_categoriesRecord) {
print "Record not found!";
exit;
}

?>


it can be seen at http://www.fibreking.com.au/web/productsList2.php?product_category=2
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] Detail of category, list of products...

By Dave - December 13, 2009

Hi Tim,

The example link you posted is returning an error, but here's some cleaned up code with comments:

<?php
header('Content-type: text/html; charset=utf-8');
require_once "/home/.merle/fibre_king/fibreking.com/cmsAdmin/lib/viewer_functions.php";

// load products - expects search such as ?product_category=Palletisers
list($productsRecords, $productsMetaData) = getRecords(array(
'tableName' => 'products',
'allowSearch' => true,
));
$firstProduct = @$productRecords[0];

// load category for first product - we're assuming all products are in the same category
list($categoryRecords, $product_categoriesMetaData) = getRecords(array(
'tableName' => 'product_categories',
'where' => " name = '" .mysql_real_escape_string( $firstProduct['product_category'] ). "' ",
'allowSearch' => false,
'limit' => '1',
));
$category = @$categoryRecords[0]; // get first record

// load ALL category records - in case you want to display those as well
list($allCategoryRecords, $allCategoryMetaData) = getRecords(array(
'tableName' => 'product_categories',
'allowSearch' => false,
));

// show errors
if (!$firstProduct) { die("Couldn't find matching product!"); }
if (!$category) { die("Couldn't load category for product!"); }

?>


Hope that helps! Let me know if that works for you.
Dave Edis - Senior Developer
interactivetools.com

Re: [Dave] Detail of category, list of products...

Hi Dave,

Thanks for working on a Sunday night!



http://www.fibreking.com.au/web/productsList2.php?product_category=1 is returning the "Couldn't find matching product!"

whereas

http://www.fibreking.com.au/web/productsList.php?product_category=1 shows that product does match...
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] Detail of category, list of products...

Hi Dave,

Does it matter that products can be applied to multiple categories?

I may be getting an error because the product_category is a multi-select?

Cheers,
Tim
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] Detail of category, list of products...

<h2><?php echo $product_categoriesRecord['name'] ?></h2>
<?php echo $product_categoriesRecord['description'] ?>

<?php foreach ($productsRecords as $record): ?>
<?php if ($record['product_category'] == 'mysql_real_escape_string($product_categoriesRecord['name']') ): ?>
<div id="productItem">
<?php foreach ($record['image'] as $upload): ?>
<a href="<?php echo $record['_link'] ?>"><img align="left" border="0" src="<?php echo $upload['urlPath'] ?>" width="<?php echo $upload['width'] ?>" height="<?php echo $upload['height'] ?>" alt='' /></a>
<?php endforeach ?>
<h3><?php echo $record['title'] ?></h3>
<?php echo $record['summary'] ?>
</div>
<?php endif ?>
<?php endforeach; ?>

<?php if (!$productsRecords): ?>
No records were found!<br/><br/>
<?php endif ?>


Still doesn't work... I need a break!
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] Detail of category, list of products...

The only other thing I can think of it having a details page, with a php include... but can you have a query on an include... ie.

<?php
include("list.php?product_categories=Palletisers");
?>


Sorry for the bunch of posts... hope you understand my problem!
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] Detail of category, list of products...

Hi Guys,

Any help on this would surely be appreciated!

Cheers,
Tim
Cheers,

Tim (toledoh.com.au)

Re: [Toledoh] Detail of category, list of products...

By Chris - December 15, 2009

Hi Tim,

I'd go with the category details page approach. You won't need to php include another page, however, because you'll be able to add code to list matching products to your category details page.

Generate a details viewer for your category section and add this code to the end of step 1:

list($productsRecords, $productsMetaData) = getRecords(array(
'tableName' => 'products',
'where' => "product_categories LIKE '%\t" . mysql_escape($product_categoriesRecord['num']) . "\t%'",
));


And then you can copy in your product listing code (e.g. foreach ($productsRecords as $record)...)

I hope this helps! If you run into any issues, please post the complete PHP source code for the page you're working on as well as a screenshot of the details of your multi-value list field (Admin > Section Editors > Products > modify the product_categories field.)
All the best,
Chris

Re: [chris] Detail of category, list of products...

Brilliant Chris!

This looks like the goods.

I just added 'allowSearch' => '0' as well, and all works fine!
Cheers,

Tim (toledoh.com.au)