En Mysql tienes la instrucción SQL: COUNT() .. con eso puedes "contarl" el total de registros que te pueda arrojar una sentencia SQL condicionada bajo tus parámetros.
A su vez usas como "clave forámea" (FK) el campo "idcat" .. así que tendras que hacer una condición tipo "si el idcat de una tabla y de la otra son iguales (aquí ya tendras la relación hecha) y .. ademas (es tu caso) por tal otra condición como el idcat concreto.
Código PHP:
// conecta a tu BD .. selecciona tu BD .. etc.
$sql="SELECT COUNT (*) FROM categoriaenlaces,enlaces WHERE categoriaenlaces.idcat=enlaces=.idcat AND enlaces.idcat='".$_GET['idcat']."'";
$consulta=mysql_query($sql) or die (mysql_error());
$total_esta_categoria=mysql_result($consulta,0);
echo $total_esta_categoria;
La sentencia SQL se puede optimizar mucho usando "uniones" de Msyql .. como el INNERT JOIN o similares .. (si quieres más iformación sobre esto usa el foro de "Base de datos" y detalla que estás usando Mysql!)
Lo otro que pides, sería la misma condición SQL anterior .. pero además con la condición de fecha (de el campo de fecha que guardes) con respecto a la actual (fecha: NOW() si guardas en tu BD un DATETIME . .o CURDATE() si guardas sólo fecha en un DATE). Para esto tienes las funciones de tratamiento de fechas de Mysql en:
www.mysql.com/date
Un saludo,