renombrar ficheros y mardar a archivos a carpetas disitntas

tengo un formulario para subir archivos al servidor en el que una de las input es de tipo select (hay que seleccionar entre la categoria 1 o categoria 2). mi problema es que quiero guardar el archivo:

en una carpeta1 si se trata de un archivo de la categoria 1

en una carpeta2 si se trata de un archivo de la categoria 2

ahora mismo lo tengo de manera que todos los archivos sea cual sea su categoria se van a una carpeta general porque no se asignarles otra ruta.

Otra cosa quiero que el archivo sea renombrado automaticamente demanera que el nuevo nombre sea el id (int, unsigned,primary, A-I(autoincremento)) de una tabla de datos
porque si un usuario sube un archivo con un nombre que ya existe ya empiezan los problemas y asi yo podria tambien identificar que usuario envio ese archivo.
agradezco su ayuudaaaaaaaaaa. no pude hoy ni dormir....