Resumo lo que hago, a ver si se entiende.
1.- extraigo las categorias del proyecto
2.- con un for las recorro
3.- busco los usuarios que cumplen con cada categoria
4.- actualizo la tabla paralela de usuario que he creado previamente con el contador de categorias
Código PHP:
// CATEGORIAS *********************************
$categoria = $row_proyecto['categoriasproyecto']; // listado de categorias en un campo, del tipo: id1,id2,id14,id23
$categoriaoferta = explode(",",$categoria); // separo las categorias
for ($j=0;$j<count($categoriaoferta);$j++) // bucle para recorrer cada categorias sobre los usuarios
{
mysql_select_db($database_basedatos, $basedatos);
// busco todos los usuarios que cumplen con la categoria a buscar
$query_usuarios = "SELECT * FROM usuarios WHERE categoriasusuario LIKE '%$categoriaoferta[$j]%'";
$usuarios = mysql_query($query_usuarios, $basedatos) or die(mysql_error());
$row_usuarios = mysql_fetch_assoc($usuarios);
do {
// previamente he metido a todos los usuarios en la tabla tabla_usuarios_categorias
// y ahora actualizo los usuario que cumplen tienen esa categoria, sumo +1 al contador numerocategorias e introduzco el id de la categoria en idcategorias.
$updateSQL = "UPDATE tabla_usuarios_categorias SET numerocategorias=numerocategorias+1, idcategorias=CONCAT(idcategorias, '$categoriaoferta[$j],') WHERE idusuario=$usuarios[idusurio]";
mysql_select_db($database_basedatos, $basedatos);
$Result1 = mysql_query($updateSQL, $basedatos) or die(mysql_error());
} while ($row_usuarios = mysql_fetch_assoc($usuarios));
} // fin de for ($j=0;$j<count($categoriaoferta);$j++)