query('SELECT id FROM category WHERE pid=? AND name=?');
$stmt->bindValue(1, $parent_id, PDO::PARAM_INT);
$stmt->bindValue(2, $cat_last[0], PDO::PARAM_STR);
$stmt->execute();
$stmt->bindColumn(1, $cat_id);
$stmt->fetch(PDO::FETCH_BOUND);
return $cat_id;
}
}
function get_catname($db, $id)
{
if ($id == 0 || $id == 1)
{
return array();
}
else
{
$stmt = $db->query('SELECT pid, name FROM category WHERE id=?');
$stmt->bindValue(1, $id, PDO::PARAM_INT);
$stmt->execute();
$stmt->bindColumn(1, $pid);
$stmt->bindColumn(2, $name);
$stmt->fetch(PDO::FETCH_BOUND);
$fname = get_catname($db, $pid);
$fname[] = $name;
return $fname;
}
}
function print_header($db, $cat_id, $cat_name='')
{
if ($cat_name == '')
{
$cat_name = get_catname($db, $cat_id);
}
$stmt = $db->query('SELECT descr IS NOT NULL FROM category WHERE id=?');
$stmt->bindValue(1, $cat_id, PDO::PARAM_INT);
$stmt->execute();
$stmt->bindColumn(1, $descr_available);
$stmt->fetch(PDO::FETCH_BOUND);
echo '
';
if (count($cat_name))
{
$i = 0;
printf('Top',
str_repeat('../', count($cat_name) - $i));
foreach ($cat_name as $elem)
{
$i++;
$l = str_repeat('../', count($cat_name) - $i);
if (strlen($l))
{
printf(': %s', $l, htmlspecialchars($elem));
}
else
{
printf(": %s", $elem);
}
}
}
else
{
echo 'Top';
};
if ($descr_available)
{
echo ' [?]';
}
echo "
\n";
}
function print_subcats($db, $id)
{
$nr_subcats = array();
$total_count = 0;
$max_priority = 0;
$stmt = $db->query('SELECT priority, count(id) FROM category WHERE pid=? GROUP BY priority UNION SELECT priority, count(id) FROM link WHERE cid=? GROUP BY priority');
$stmt->bindValue(1, $id, PDO::PARAM_INT);
$stmt->bindValue(2, $id, PDO::PARAM_INT);
$stmt->execute();
$stmt->bindColumn(1, $priority);
$stmt->bindColumn(2, $count);
while ($stmt->fetch(PDO::FETCH_BOUND))
{
$total_count += $count;
$max_priority = max($max_priority, $priority);
if (isset($nr_subcats[$priority]))
{
$count += $nr_subcats[$priority];
}
$nr_subcats[$priority] = $count;
}
for ($priority = $max_priority; $priority >= 0; $priority--)
{
if (!isset($nr_subcats[$priority]))
{
continue;
}
$count = $nr_subcats[$priority];
$stmt = $db->query('SELECT name, NULL FROM category WHERE pid=? AND priority=? UNION SELECT name, lid FROM link WHERE cid=? AND priority=? ORDER BY name');
$stmt->bindValue(1, $id, PDO::PARAM_INT);
$stmt->bindValue(2, $priority, PDO::PARAM_INT);
$stmt->bindValue(3, $id, PDO::PARAM_INT);
$stmt->bindValue(4, $priority, PDO::PARAM_INT);
$stmt->execute();
$stmt->bindColumn(1, $subname);
$stmt->bindColumn(2, $lid);
$middle_nr = (int) (($count + 1) / 2);
if ($count >= 8)
{
echo "\n";
$middle = " |