Matt,
First, I assume your database looks like this:
link_cat [table for link categories]
link_cat_id
link_cat
link_cat_order
link_cat_active
link[table for links]
link_id
link_cat_id
link_name
link_url
link_description
link_order
link_active
On the back end, you'll be adding categories and then adding links to those categories. You'll be ordering them based on the order field (you should order them 10, 20, 30, etc. so that you can add one in between if you want), and you'll be able to make any link or any link category inactive so that you can hide it without deleting it. (I make active = 1, inactive = 2.)
On the front end, you'll have this:
#
# Start by getting all the active categories,
# ordered by link_cat_order
$sql_cat = "
SELECT * FROM link_cat
WHERE link_cat_active = 1
ORDER BY link_cat_order";
if ($res_cat = mysql_query($sql_cat)) {
while ($row_cat = mysql_fetch_array($res_cat)) {
echo "$row_cat[link_cat]<br>";
#
# Now get all the links for this cat
$sql_link = "
SELECT * FROM link
WHERE
link_cat_id = $row_cat[link_cat_id] AND
link_active = 1 ORDER BY link_order";
if ($res_link = mysql_query($sql_link)) {
while ($row_link = mysql_fetch_array($res_link)) {
echo "<a href='$row_link[link_url]'>$row_link[link_name]</a><br>";
#
# Description is optional, so check to see if it's there
if ($row_link[link_description]) {
echo "$row_link[link_description]<br>";
}
echo "<br>";
}
} else {
echo mysql_error();
}
}
} else {
echo mysql_error();
}