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"; $footer = "
\n"; $middle = "