guardar la ip, el nombre de usuario, nombre completo y la fecha, para esto tengo la siguiente tabla
t_accesos
-------------
id_acceso
ip_acceso
fecha_accesp
nom_user
nombre
las condiciones de este proceso serian:
- si la ip no esta en la tabla haga el insert llenando todos los campos de la tabla
- si la ip esta registrada, compare el nom_user
-- si el nom_user se encuentra en la tabla solo que actualice la fecha_accesp
-- si el nom_user no es el mismo (aunque la ip sea la misma) inserte en un campo aparte
la idea es que puedan entrar diferentes usuarios desde la misma maquina (misma ip) y que se registren sus accesos 1 sola vez, si vuelven a entrar solo que se actualice su fecha de acceso (osea las ips podrian repetirse pero los nom_user no deberian repetirse)
Por lo que tengo el siguiente codigo:
al momento de loguearse, despues que se ha comprado el usuario y su contraseña pongo:
Código PHP:
$ip = $_SERVER['REMOTE_ADDR']; //tomo la ip que hace la peticion
$existe = mysql_num_rows(mysql_query("select ip_acceso from t_accesos where ip_acceso='$ip'")); //consulto si hay almenos una ip igual a la que hace la peticion
if($existe!="0"){ //si la ip esta registrada
$cons = mysql_query("select * from t_accesos where ip_acceso='$ip'") or die(mysql_error());
$ban = "0";
while($reg = mysql_fetch_array($cons,MYSQL_ASSOC)){ //hago el ciclo que recorre las ips que sean las mismas que la que hace la peticion
$ip_existe = $reg['ip_acceso']; //guardo en variable la ip registrada en la bd
$id_existe = $reg['id_acceso']; //guardo en variable el id de la ip registrada en la bd
$nom_user_existe = $reg['nom_user']; //guardo en variable el nom_user (nombre de usuario) de la ip registrada en la bd
if($ip_existe==$ip){ //pregunto si la ip registrada en la bd y la que hace la peticion es la misma (creo que esta condicion ya no tiene mucho caso)
if($nom_user_existe==$BD_nom_user){ //si los nombres de usuario coinciden (el de la bd y el del que se esta logueando) hago el update solo de la fecha de acceso
$sql_update = "update t_accesos set fecha_acceso=NOW() where ip_acceso='$ip' and nom_user='$BD_nom_user'";
mysql_query($sql_update) or die("Problemas al ejecutar update SQL1 ".mysql_error());
$ban = "1";//tuve que hacer esta bandera porque aunque ya habia un registro igual entraba al update y al insert, entonces actualizaba y volvia insertar el mismo registro
}
else{ //entonces si la bandera ya habia pasado por el update ya no era necesario este insert
if($ban != "1"){
$sql_insert = "insert into t_accesos(ip_acceso, fecha_acceso, nom_user, nombre) values('$ip', NOW(), '$BD_nom_user', '$BD_nombre')";
mysql_query($sql_insert) or die("Problemas al insertar SQL1 ".mysql_error());
}
}
}
}
}
else{ //si la ip no esta registrada entonces inserta el nuevo registro
$sql_insert = "insert into t_accesos(ip_acceso, fecha_acceso, nom_user, nombre) values('$ip', NOW(), '$BD_nom_user', '$BD_nombre')";
mysql_query($sql_insert) or die("Problemas al insertar SQL1 ".mysql_error());
}
Código:
y quisiera volver a entrar trollensio lopez, lo que hace es actualizar el que ya esta y agregar otro y queda esto:id_acceso 1 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user fuken nombre fukensio perez id_acceso 2 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user trollen nombre trollensio lopez
Código:
y si quisiera trollensio volver a entrar, actualizaria esos dos y agregaria otro:id_acceso 1 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user fuken nombre fukensio perez id_acceso 2 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user trollen nombre trollensio lopez id_acceso 3 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user trollen nombre trollensio lopez
Código:
peroo si ahora fuera fukencio el que entrara, solo le actualiza la fechaid_acceso 1 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user fuken nombre fukensio perez id_acceso 2 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user trollen nombre trollensio lopez id_acceso 3 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user trollen nombre trollensio lopez id_acceso 4 ip_acceso 10.16.1.123 fecha_acceso 21-02-2013 nom_user trollen nombre trollensio lopez
porque se supone que es el primer registro, entonces en el ciclo es la primer coincidencia y hace el update y por la bandera ya no hace el insert.
segun yo como que me hace falta otra bandera, pero ya no veo por donde y con que condicion podria ser??