johanafm;10937318 wrote:
So if you don't know where a value comes from or where/how it is defined, you still can't assign it to smarty. Also, once you do know $value, there's no point.
Maybe this is something that will help you to understand how is working and to help me... this is a .php file who is generating the data for the details page where I want to run my query. I didn't realize that is important but now I think it is.
<?php
require_once 'init.php';
//Determine link ID
if (ENABLE_REWRITE == 1)
{
preg_match ('#(.*)(_|-)(\d+)\.htm[l]?$#i', request_uri(), $matches);
$id = (!empty ($matches[3]) ? intval ($matches[3]) : 0);
}
else
{
$id = (!empty ($_REQUEST['id']) ? $_REQUEST['id'] : 0);
}
if (!empty ($id))
{
if (!preg_match ('`^[\d]+$`', $id))
{
$tpl->assign('error', "Invalid Link ID");
}
else
{
$rdata = $db->CacheGetRow("SELECT *, DATE_FORMAT(DATE_ADDED, '%M %d, %Y %r') AS `DAT` FROM `{$tables['link']['name']}` WHERE `ID` = ".$db->qstr($id));
$data = array ();
if (!$rdata)
$tpl->assign('error', "Invalid ID [{$id}] passed - not found in database");
else
{
$data['ID'] = $id;
$data['TITLE'] = $rdata['TITLE'];
$data['DESCRIPTION'] = $rdata['DESCRIPTION'];
$data['URL'] = $rdata['URL'];
$data['CATEGORY_ID'] = $rdata['CATEGORY_ID'];
$data['OWNER_NAME'] = $rdata['OWNER_NAME'];
$data['DATE_ADDED'] = $rdata['DAT'];
$data['HITS'] = $rdata['HITS'];
$data['PAGERANK'] = $rdata['PAGERANK'];
$data['RATE_COUNT'] = $rdata['RATE_COUNT'];
$data['RATE'] = $rdata['RATE'];
$data['RATE_ENABLED'] = $rdata['RATE_ENABLED'];
$site_url = (substr (SITE_URL, -1) != '/' ? SITE_URL.'/' : SITE_URL);
do {
$cdata = $db->GetRow("SELECT `PARENT_ID`, `TITLE` AS `CATEGORY_TITLE`, `CACHE_URL` FROM `{$tables['category']['name']}` WHERE `ID` = '".(empty($parent_id) ? $rdata['CATEGORY_ID'] : $parent_id)."' LIMIT 1");
$CATEGORY_TITLE[] = $cdata['CATEGORY_TITLE'];
$CATEGORY_URL[] = $site_url. (ENABLE_REWRITE == 1 ? trim ($cdata['CACHE_URL']) : 'index.php?c='.$cdata['CATEGORY_ID']);
$parent_id = $cdata['PARENT_ID'];
} while ($parent_id!=0);
$tpl->assign('CATEGORY_TITLE', $CATEGORY_TITLE);
$tpl->assign('CATEGORY_URL', $CATEGORY_URL);
$data['META_KEYWORDS'] = $rdata['META_KEYWORDS'];
$data['META_DESCRIPTION'] = $rdata['META_DESCRIPTION'];
$data['GMAPKEY'] = GMAP_KEY;
unset ($cdata, $site_url);
$odata = $db->GetAll("SELECT * FROM `{$tables['link']['name']}` WHERE `OWNER_EMAIL` LIKE ".$db->qstr($rdata['OWNER_EMAIL'])." LIMIT 0 , 30");
usort ($odata, "cmp");
$data['RELATED'] = "";
foreach ($odata as $value)
if ($value['ID'] !== $id)
{
if (preg_match ("/\/$/", SITE_URL))
$link = SITE_URL."details.php?id=".$value['ID'];
else
$link = SITE_URL."/details.php?id=" . $value['ID'];
$data['RELATED'] .= "<li><a class=\"special\" href=\"{$link}\">{$value['TITLE']}</a></li>\n";
}
if($data['RELATED'])
$data['RELATED'] = "<ul>\n{$data['RELATED']}</ul>\n";
unset ($odata);
}
}
unset ($rdata);
}
else
$tpl->assign('error', "No ID parameter");
$path = array ();
$path[] = array ('ID' => '0', 'TITLE' => _L(SITE_NAME) , 'TITLE_URL' => DOC_ROOT, 'DESCRIPTION' => SITE_DESC);
$path[] = array ('ID' => '0', 'TITLE' => _L('Details'), 'TITLE_URL' => '' , 'DESCRIPTION' => _L('Listing Details'));
$tpl->assign('path', $path);
$tpl->assign($data);
$tpl->assign('MetaKeywords' , (!empty ($data['META_KEYWORDS']) ? trim ($data['META_KEYWORDS']) : trim ($MetaKeywords)));
$tpl->assign('MetaDescription', (!empty ($data['META_DESCRIPTION']) ? trim ($data['META_DESCRIPTION']) : trim ($MetaDescription)));
//Clean whitespace
$tpl->load_filter('output', 'trimwhitespace');
//Compress output for faster loading
if (COMPRESS_OUTPUT == 1)
$tpl->load_filter('output', 'CompressOutput');
//Make output
echo $tpl->fetch('detail.tpl', $id);
unset ($data);
function cmp($a, $b) {
return strcmp ($a["TITLE"], $b["TITLE"]);
}
?>
I did the modification from
do {
$cdata = $db->GetRow("SELECT `PARENT_ID`, `TITLE` AS `CATEGORY_TITLE`, `CACHE_URL`, `CATEGORY_ID` FROM `{$tables['category']['name']}` WHERE `ID` = '".(empty($parent_id) ? $rdata['CATEGORY_ID'] : $parent_id)."' LIMIT 1");
$CATEGORY_TITLE[] = $cdata['CATEGORY_TITLE'];
$CATEGORY_URL[] = $site_url. (ENABLE_REWRITE == 1 ? trim ($cdata['CACHE_URL']) : 'index.php?c='.$cdata['CATEGORY_ID']);
$parent_id = $cdata['PARENT_ID'];
} while ($parent_id!=0);
$tpl->assign('CATEGORY_TITLE', $CATEGORY_TITLE);
$tpl->assign('CATEGORY_URL', $CATEGORY_URL);
to
do {
$cdata = $db->GetRow("SELECT `PARENT_ID`, `TITLE` AS `CATEGORY_TITLE`, `CACHE_URL`, `CATEGORY_ID` FROM `{$tables['category']['name']}` WHERE `ID` = '".(empty($parent_id) ? $rdata['CATEGORY_ID'] : $parent_id)."' LIMIT 1");
$CATEGORY_TITLE[] = $cdata['CATEGORY_TITLE'];
$CATEGORY_URL[] = $site_url. (ENABLE_REWRITE == 1 ? trim ($cdata['CACHE_URL']) : 'index.php?c='.$cdata['CATEGORY_ID']);
$category_id = $cdata['CATEGORY_ID'];
$parent_id = $cdata['PARENT_ID'];
} while ($parent_id!=0);
$tpl->assign('CATEGORY_TITLE', $CATEGORY_TITLE);
$tpl->assign('CATEGORY_URL', $CATEGORY_URL);
and use in the query
$last3 = $db->CacheGetAll("SELECT * FROM `{$tables['link']['name']}` WHERE `STATUS` = 2 AND `CATEGORY_ID` = `$category_id` ORDER BY HITS DESC LIMIT 0,3");
$tpl->assign('last3', $last3);
it's not working.
Also I did another modification
do {
$cdata = $db->GetRow("SELECT `PARENT_ID`, `TITLE` AS `CATEGORY_TITLE`, `CACHE_URL`, `CATEGORY_ID` FROM `{$tables['category']['name']}` WHERE `ID` = '".(empty($parent_id) ? $rdata['CATEGORY_ID'] : $parent_id)."' LIMIT 1");
$CATEGORY_TITLE[] = $cdata['CATEGORY_TITLE'];
$CATEGORY_URL[] = $site_url. (ENABLE_REWRITE == 1 ? trim ($cdata['CACHE_URL']) : 'index.php?c='.$cdata['CATEGORY_ID']);
$CATEGORY_ID[] = $cdata['CATEGORY_ID'];
$parent_id = $cdata['PARENT_ID'];
} while ($parent_id!=0);
$tpl->assign('CATEGORY_TITLE', $CATEGORY_TITLE);
$tpl->assign('CATEGORY_URL', $CATEGORY_URL);
$tpl->assign('CATEGORY_ID', $CATEGORY_ID);
and use:
$last3 = $db->CacheGetAll("SELECT * FROM `{$tables['link']['name']}` WHERE `STATUS` = 2 AND `CATEGORY_ID` = `$CATEGORY_ID` ORDER BY HITS DESC LIMIT 0,3");
$tpl->assign('last3', $last3);
It's still not working. Any other idea?
Thank you.