Foros del Web » Programando para Internet » PHP »

10 últimos visitantes

Estas en el tema de 10 últimos visitantes en el foro de PHP en Foros del Web. Pues quisiera mostrar los 10 ultimos visitantes registrados en mi web. tengo una tabla usuarios con un campo llamado "ultimo" en varchar() y lo he ...
  #1 (permalink)  
Antiguo 26/03/2004, 08:30
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
10 últimos visitantes

Pues quisiera mostrar los 10 ultimos visitantes registrados en mi web.

tengo una tabla usuarios con un campo llamado "ultimo" en varchar()

y lo he intentado sacar asi :

<?
$ip2 = $REMOTE_ADDR ;
$ultimos = $HTTP_COOKIE_VARS[unick] ;
$resp = mysql_query("select * from usuarios where ip='$ip2'") ;
if(mysql_num_rows($resp) == 0) {
mysql_query("insert into usuarios (ip2,ultimo) values ('$ip2','$ultimos') where nick='$datos[nick]'") ;
}
else {
mysql_query("update usuarios set ultimo='$ultimos' where nick='$datos[nick]'") ;
}
?>
<?=$ultimos?>

y asi solo consigo mostrar al ultimo solamente

a ver si me podeis ayudar plz

Salu2
  #2 (permalink)  
Antiguo 26/03/2004, 08:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Mas que al último .. lo que vés es sólo el nick de si mismo .. para nada del último usuario que se ingresó a tu tabla 'usuarios' de tu BD.

Código PHP:
<?
// Conecta a tu BD ...
$sql="SELECT * FROM usuarios ORDER BY id DESC LIMIT 10";
$consulta=mysql_query($sql) or die (mysql_error));
while (
$registro=mysql_fetch_array($consulta){
echo 
$registro['nick']."<br>";
}
?>
Debes hacer una consulta SQL tipo SELECT a tu BD ordenando por el "ID" (supongo que usaras un camo tipo "ID" autonumérico y unico? ...) y Limitando a 10 resultados .. O mejor guardate la fecha en un campo DATETIME (con NOW() al hacer tu INSERT) y ordenar por fecha ... (así hasta podrías decir cuando entro quien .. Y si lo usas también como campo más extra para el UPDATE tendrías la fecha última de interacción con el sistema ...)


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 26/03/2004 a las 09:00
  #3 (permalink)  
Antiguo 26/03/2004, 09:20
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
Cluster pero asi lo q consigues es q te muestre los ultimos registrados en la web, y yo lo q kiero mostrar es q de los usuarios registrados de la web, me muestre los ultimos 10 q han visitado la pagina. Seguramente me exprese mal antes sorry.
  #4 (permalink)  
Antiguo 26/03/2004, 09:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero .. ¿donde te guardas la fecha que visitó por última vez tu usuario? .. deberías ordenar por ese tipo de campo (ORDER BY fecha...)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 26/03/2004, 09:55
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
eso es lo q kiero saber Cluster XD entonces uso la funcion now() para guardar la fecha q entro por ultima vez y creo una celda nueva en la tabla "usuarios" por ejemplo... fecha2

voy a probar...

salu2 y muchas gracias por ayudarme Cluster (otra vez)
  #6 (permalink)  
Antiguo 26/03/2004, 10:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si, .. crea un campo extra a tu tabla de usuarios "fecha2" si quieres . .usa un campo tipo DATETIME y .. para hacer tu INSERT o UPDATE que ya haces usa la función NOW() de Mysql que ya dá ese dato de fecha actual del servidor sin más complicacinoes .. luego ordena al hacer el "SELECT" que te puse de ejemplo por ese campo "fecha2" ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 26/03/2004, 13:06
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
he hecho esto...

<?
$ultimo = $HTTP_COOKIE_VARS[unick] ;
mysql_query("update $tabla_usuarios set NOW(fecha2) and ultimo='$ultimo' where id='$id'") ;
include("config.php");
$sql="SELECT * FROM usuarios ORDER BY fecha2 DESC LIMIT 10";
$consulta=mysql_query($sql) or die (mysql_error);
while($registro=mysql_fetch_array($consulta)) {
echo registro['nick'];
}
?>

... y me muestra todos los nicks registrados en la web :

a ver si sabeis como seria, q me estoy deskiciando ya jajaj
salu2
  #8 (permalink)  
Antiguo 26/03/2004, 14:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El NOW() como función de Msyql se asigna a tu campo .. no se usa como "parámetro ..." el nombre del campo. Los operadores lógicos son para el WHERE campo=valor AND otrocampo=valor .. pero no para el "SET" del Update .. (revisa algún manual de SQL para Mysql ..)

Código PHP:
mysql_query("update $tabla_usuarios set fecha2=NOW(), ultimo='$ultimo' where id='$id'"

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 26/03/2004 a las 14:44
  #9 (permalink)  
Antiguo 26/03/2004, 14:52
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
<?
$ultimo = $HTTP_COOKIE_VARS[unick] ;
mysql_query("update $tabla_usuarios set fecha2=NOW() and ultimo='$ultimo' where id='$id'") ;
include("config.php");
$sql="SELECT * FROM usuarios ORDER BY fecha2 DESC LIMIT 10";
$consulta=mysql_query($sql) or die (mysql_error);
while($registro=mysql_fetch_array($consulta)) {
echo registro['nick'];
}
?>

y nada... pero esq yo no veo esto muy factible con lo q yo pretendo... no deberia tener 1 tabla en la DB donde se fueran registrando los 10 ultimos nicks segun se vayan conectando a la web? y luego con una consulta mostrar los 10?? y q al llegar a 10 si se conectase otro (11) el primero se borrara y se metiera el ultimo y asi? Yo en mi pagina web tengo unos perfiles de usuario, donde el ususario mete su avatar, firma, rollo, edad, etc.. pues kiero q en el perfil a demas de eso poner 1 apartado de ultimas 10 visitas recibidas... te han visitado: "talnick", "talnick"... asi hasta 10...

mira por ejemplo este enlace:

http://www.media-vida.net/perfil.php?name=KiNGPiNG

y veras...

Últimos visitantes:
NetDevil OverDoSSe DervicK K_Himura nOrtH_cOmInG S3B4 Tott1 pLaNeLL5 MeLoNCiTo uplink

eso es lo q kiero conseguir
Siento por ser tan pesado de todo pero me interesa mucho ese sistema

salu2

Última edición por Gotrek; 26/03/2004 a las 15:05
  #10 (permalink)  
Antiguo 26/03/2004, 15:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues si .. así deberia ser .. pero esto es como todo .. NO puedes sentarte a diseñar una aplicación haciendo el código YA .. tienes que evaluar que necesitas y luego desarrollarlo

Por ejemplo

Ususarios
Id_usuario
nick
blabla

visitas_activas
id_visita
id_usuario --> tu cookie del usuario (pero que sea el ID_usuario)
IP
fecha_ingreso
fecha_última_iteraccion_con_el_sistema

Las visitas las relacionarias con el usuario (tablas) bajo el ID del usuario.

la tabla que actualizarias sería la de "visitas_activas" y no la de "usuarios". Ahora en tus consultas .. para obtener ese nick deberías hacer consultas condicionales que intervengan ambas tablas

SELECT usuarios.nick FROM usuarios,visitas_activas ORDER BY visitas_activas.fecha DESC LIMIT 10

Si quieres complicarte puedes ir rotando esos 10 registros .. pero si quieres almacenar un registro de vistias completo para arrojar estadísticas completas .. deja que la tabla crezca con las visitas ..

Pero lo dicho .. antes de tirar una sóla línea de "PHP" antes debes sentarte y diseñar tu modelo de datos . tus Base de datos (tablas) con sus relaciones entre ellas .. pensar las sentencias SQL que te van hacer falta y de ahí a trasncribirlo a "PHP" ...

Aquí he pretendido darte alguna idea general (bajo mi punto de vista) .. estudialo y planteate diferentes alternativas ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 26/03/2004, 15:14
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
Esto era lo q keria Cluster :D mestaba estrujando el coco en como podria hacerlo y ahora esto si pinta mucho mejor con lo q kiero. Muchas gracias de nuev, trabajare sobre ello.

Salu2
  #12 (permalink)  
Antiguo 26/03/2004, 15:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok, .. te recomiendo leer los manuales de:

www.mysql-hispano.com

sobre todo el de "normalización", "SQL" y "Principios de diseño de bases de datos"
que hay .. así veras un poco mejor como es eso de "modelar base de datos" (a nivel básico) y datos en general ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 26/03/2004 a las 15:25
  #13 (permalink)  
Antiguo 26/03/2004, 18:29
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 20 años, 1 mes
Puntos: 0
xq pongo ...

<?
include("config.php");
$resp4 = mysql_query("select * from $tabla_usuarios where id='$id'") ;
$datos4 = mysql_fetch_array($resp4) ;
$id2 = $_COOKIE[unick] ;
$fecha2 = time() ;
$ip = $REMOTE_ADDR ;
mysql_query("insert INTO visitas_activas (id,id_visita,ip,fecha_ultima) value ('$datos4[id]','$id2','$ip','$fecha2')") ;
?>

y no se introducen los datos en la tabla visitas_activas???
  #14 (permalink)  
Antiguo 28/03/2004, 20:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa preferentemente comillas simples como nombres de indices de arrays:

$_COOKIE['unick']

Y .. para la variable de servidor REMOTE_ADDR .. usa también los arrays superglobales:

$_SESSION['REMOTE_ADDR']

Revisa tu BD si se crea el registro (pero sin datos) o no se crea ..

Usa estructuras tipo:

msyql_query(.....) or die (mysql_error());

para intentar identificar algún problema con SQL o de conexión ...

Para tu campo fecha_ultima de tu BD usa camos DATETIME y guarda la fecha actual con la función de Mysql: NOW() (sin comillas simples en la sentencia SQL) en lugar de time() de PHP.

Fijate que estás haciendo ..

id .. de tu tabla "visitas_activas" se supone que es un campo autoincremental (y único) así que no sé por qué lo asignas a $datos4[id] .. en id_visita estás guardarndo: $_COOKIE[unick] que no sé si es un Identificador (numerico) o es el "nick" nombre .. En fin .. que tienes un enorme lio ahí ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:29.