Pues si te entiendo bien, quieres mostrar los datos de la tabla productos, y no el id de la variable
id_cat sino
nombrecat. Si este es el caso puedes solucionar tu problema utilizando un join. Por ejemplo supongamos que quieres hacer una búsqueda por el nombre del producto, entonces tu qwery tendría que ser algo como esto:
$qwery= "SELECT p.id 'ID DE PRODUCTO', p.nombre 'NOMBRE DE PRODUCTO', p.detalles 'DETALLES DE PRODUCTO', c.nombrecat 'NOMBRE DE LA CATEGORIA' FROM producto p, categorias c WHERE (p.nombre LIKE '%$variable_producto%') AND (c.id_cat=p.id_cat)
";
pero, que significa esto?

??
SELECT p.id 'ID DE PRODUCTO', p.nombre 'NOMBRE DE PRODUCTO', p.detalles 'DETALLES DE PRODUCTO', c.nombrecat 'NOMBRE DE LA CATEGORIA'
bueno, simplemente le decimos a la base de datos que queremos recuperar los campos id, nombre y detalles de la tabla producto, además de que también queremos recuperar el campo nombrecat de la tabla categoria.
FROM producto p, categorias c WHERE (p.nombre LIKE '%$variable_producto%') AND (c.id_cat=p.id_cat)
ahora le indicamo a la BD que estos datos estan en la tabla producto y categorias (p y c son alias que se pueden utilizar siempre que sean definidos despues del nombre de la tabla), lo importante de todo esto es la condición WHERE, en este caso en particular le estamos indicando que compare la variable $variable_producto con el campo nombre de la tabla producto y que los id´s_cat de ambas tablas coincidan para que se muestre el nombre o descripcion en lugar del identificador.
Siento que me estoy extendiendo sin saber realmente si esto es la ayuda que buscas, así que si puedes ser mas específico intentaria ayudarte mas.
Por cierto administradores, esto que hice es correcto? leí en las reglas que no se puede dar código hecho, aunque también leí que si pongo código debo explicarlo, si lo que hice no es correcto, por favor, eliminenlo.
Salu2 a todos =)