Foros del Web » Programando para Internet » PHP »

Enviar una alerta pop up al recibir un mensaje privado

Estas en el tema de Enviar una alerta pop up al recibir un mensaje privado en el foro de PHP en Foros del Web. Alguana pista para realizar esto. Gracias...
  #1 (permalink)  
Antiguo 12/06/2003, 09:20
 
Fecha de Ingreso: abril-2003
Mensajes: 8
Antigüedad: 14 años, 7 meses
Puntos: 0
Enviar una alerta pop up al recibir un mensaje privado

Alguana pista para realizar esto.
Gracias
  #2 (permalink)  
Antiguo 12/06/2003, 10:41
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
cada que cargas una pagina haces una mini-consulta a la BD, como:

$msgs=mysql_query("select ID from mensajes where destinatario=$userID and status=0");

luego cuentas los registros:

$cuantos=mysql_num_rows($msgs);

Luego, si hay mas de un msg no leido (status=0), mandas un javascript al navegador...
Código PHP:
if ($cuantos>0){
$java"<script language='javsascript'> alert ('Tienes mensajes nuevos');</script>";
}else{
$java="";

Despues en tu head de html, metes algo así:

<html>
<head>
<?= $java; ?>
</head>
etc...


Esa es la idea, que puedes hacer tan compleja como tu quieras...

Saludos!
__________________
Manoloweb
  #3 (permalink)  
Antiguo 12/06/2003, 12:09
 
Fecha de Ingreso: abril-2003
Mensajes: 8
Antigüedad: 14 años, 7 meses
Puntos: 0
Manoloweb te agradezco tu informacion, una vez lo tenga configurado lo posteare.

Un saludo.
  #4 (permalink)  
Antiguo 12/06/2003, 14:53
Avatar de adex  
Fecha de Ingreso: marzo-2002
Ubicación: Lima, Perú, América Latina
Mensajes: 445
Antigüedad: 15 años, 8 meses
Puntos: 0
hacer este tipo de consultas no demoraria en cargar las paginas?

Saludos.
  #5 (permalink)  
Antiguo 12/06/2003, 15:14
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
No, ya que son consultas muy sencillas, pero las cosas no se hacen asi .

La cuestion es guardar una session en la base de datos e ir mirando esa session en cada pagina, y dependiendo del estado de la session mostrar informacion del usuario en este caso msg privados.
__________________
Usuario registrado de Linux #288725
  #6 (permalink)  
Antiguo 12/06/2003, 15:44
Avatar de adex  
Fecha de Ingreso: marzo-2002
Ubicación: Lima, Perú, América Latina
Mensajes: 445
Antigüedad: 15 años, 8 meses
Puntos: 0
epplestun podrias hecharnos una manita en esto por fa. como se pondria la consulta?
  #7 (permalink)  
Antiguo 12/06/2003, 16:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
mm .. bueno .. la consulta SQL ..se podría optimizar más si en lugar de usar msyql_num_rows() usamos:

SELECT COUNT(*) as total FROM mensaje WHERE usuario='pepoito' status='0'

Con eso obtenemos un único registro con el total de mensajes del usario 'pepito' (ahí sustituir por el nombre del usuario activo en la sesión o cookie ..) Y no obtendríamos una consulta con el total de registros que pueda arrojar . .para luego contarlos con mysql_num_rows() con el consiguiente gasto de recursos del Servidor ...

Y .. por supuesto .. si hacemos un "condicional" preguntando a la variable de sesión si está o no definida antes de atacar esa consulta nos ahorrariamos las consultas a Mysql en el caso de que el usuario no esté "Autentificado" en el sistema ..

En fin .. detallitos y depuración hace falta .. el ejemplo de Manoloweb es "ilustrativo" ahora depende Uds. en ponerlo en práctica... xDDD

Un saludo,

pd: .. me faltó el "flag" del estado (variable) .. si el mensaje no ha sido leido .. pero bueno, la base es hacer un COUNT() y no un mysql_num_rows() por optimización ..
__________________
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; 12/06/2003 a las 17:22
  #8 (permalink)  
Antiguo 12/06/2003, 17:16
Avatar de adex  
Fecha de Ingreso: marzo-2002
Ubicación: Lima, Perú, América Latina
Mensajes: 445
Antigüedad: 15 años, 8 meses
Puntos: 0
Gracias cluster por la importante explicacion !!!

saludos
  #9 (permalink)  
Antiguo 13/06/2003, 04:18
Avatar de jonk  
Fecha de Ingreso: julio-2002
Ubicación: Barakaldo
Mensajes: 104
Antigüedad: 15 años, 4 meses
Puntos: 0
yo no lo tengo como pop up sino como un include

Código PHP:
include ("conectarbd.php");
if ($nickUsuarioL)
{
$iden=$nickUsuarioL;
mysql_select_db($NombreBD, $IdConexion); 
$nmp ="SELECT count(*) as count FROM ibforos_usuario_mensajes  where para='$iden' and estado='0'"; 
$Consultanmp = mysql_query($nmp, $IdConexion); 
$NFilas = mysql_num_rows($Consultanmp); 
for($i=0;$i<$NFilas;$i++)  { 
$vnmp = mysql_fetch_array($Consultanmp); 
$resultd=$vnmp['0'];
if ($vnmp['0'] >= 1)
{
?>
Tienes <? echo $vnmp['0'];?>&nbsp;Mensaje(s) Privado nuevo(s)
<?
}
else
{
}
}
}
?>
__________________

MyWay. A mi manera
http://myway.i-barakaldo.com
  #10 (permalink)  
Antiguo 13/06/2003, 09:58
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Jonk, creo que tienes un error conceptual en tu script.

Select count(*) te regresa siempre UNA sola fila (a menos que tengas un group by, o similar), es decir, solo te da un campo con el numero de registros encontrados. Por lo tanto tu script, a la hora de contar las filas resultantes solo te dice

1=hay CERO o MAS registros (hay una fila resultante)

El efecto de contar siempre te dirá "hay un registro resultante" sin importar que dicho registro pueda contener un "cero", digamos "4" ó "2", que serían realmente los mensajes pendientes.

En todo caso, yo haría algo asi (solo un pequeño cambio):
Código PHP:
<?
// Comienza...
$NFilas_count mysql_fetch_array($Consultanmp);
$NFilas=$NFilas_count["count"];
// Sigue...
?>
Esto debería hacer que el script funcionara como tu lo esperas...

Saludos!
__________________
Manoloweb
  #11 (permalink)  
Antiguo 13/06/2003, 13:40
Avatar de jonk  
Fecha de Ingreso: julio-2002
Ubicación: Barakaldo
Mensajes: 104
Antigüedad: 15 años, 4 meses
Puntos: 0
no te en tiendo muy bien, mira el ejemplo aver si es lo que dices

www.i-barakaldo.com/ibforos

usuario:prueba
pass: prueba1

luego en perfil puedes acceder alos mensajes privados

__________________

MyWay. A mi manera
http://myway.i-barakaldo.com
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 18:22.