Veo un error en el delete y un posible error en el insert...
En el delete no es DELETE * FROM sino que es DELETE FROM
En el insert es conveniente poner el nombre de los campos
En el select agrego un limit 1 porque te interesa saber si es vacío o no... si tiene 1.000 registros, con uno alcanza, además de que traer todos los campos tampoco tiene ninguna finalidad
Para el if uso la funcion mysql_num_rows,
http://ar.php.net/manual/es/function.mysql-num-rows.php para saber si recibe datos
Para ver los error de mysql es conveniente poner que los muestre. Generalmente, después de una consulta se pone algo como "or die(mysql_error())" para ver los posibles errores de mysql.
Código PHP:
function agregar_visita($pid)
{
global $CONFIG;
$semana=date("W"); //Saber cual es el numero de semana actual
$semana_inserv=date("W")-2; //dos semanas atras
//comprobar si el campo del a semana actual del usuario esta creado sino
//es asi crear uno nuevo
$result = mysql_query("SELECT visitas FROM `visitas_semana` WHERE semana=$semana AND pid=$pid LIMIT 1") or die(mysql_error()) ;
if (mysql_num_rows($result) == 0){
mysql_query("INSERT INTO `visitas_semana` (semana, pid, visitas) VALUES ($semana, $pid, 1)") or die(mysql_error()) ;;
}else{
mysql_query("UPDATE `visitas_semana` SET visitas=visitas+1 WHERE pid=$pid AND semana=$semana") or die(mysql_error()) ;;
}
//Borrar campos inservibles para no llenar la base de datos de basura
mysql_query("DELETE FROM `visitas_semana` WHERE semana<=$semana_inserv AND pid=$pid") or die(mysql_error()) ;;
}
Espero haberte ayudado