Tu problema no es de PHP, sino de MySQL y sería mejor usar JOIN.
Primero, déjame decirte que es más conveniente que en la tabla productos utilices id de categoría y no el nombre, porque si modificas el nombre te vas a meter en muchos líos.
Luego, si lo que quieres es mostrar productos por categoría, entonces tu tabla principal debe ser la de productos:
Ok, ahora la consulta:
Si vas a listar todos los productos, convendría ordenarlos por idcat, para que salgan agrupados:
ORDER BY p.idcat
Si vas a mostrar solo los productos de una categoría entonces agrega un filtro:
WHERE p.idcat = ???
Debes reemplazar
??? por el id de categoría a mostrar.
Luego, en el select debes especificar id y nombre de categoría, ejemplo: