para listar ordenado por categorías y luego por nombre de producto, usas algo así
Código MySQL:
Ver original p.estado,
c.nombre
ON p.idproducto
= pc.producto_idproducto
ON pc.categoria_idcategoria
= c.idcategoria
p.nombre
Esto te mostrará los datos de productos que tienen categoría asignada.
No nos has dicho si tus tablas son MyIsam o InnoDB. Es importante saberlo, pues InnoDB controla la integridad referencial.
Para añadir, primero insertas el producto, luego insertas la categoría si es que no existe, claro, y posteriormente insertas la categoría del producto (con los identificadores del producto y de categoría). Pero si tu duda se refiere a cómo se hace un formulario con selectores, etc., deberías pedir ayuda en el foro de HTML y en el de programación del programa que uses.