Autor Tema: [Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]  (Leído 17153 veces)

Desconectado -Pituko-

  • PHPero Experto
  • *****
  • Mensajes: 954
  • Karma: 20
  • Sexo: Masculino
  • ¡Hala Madrid!
    • Ver Perfil
[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« en: 07 de Marzo de 2012, 22:56:34 pm »
Sencillo sistema de alertas en vivo

Bueno, creo que no es la gran cosa ni nada y de hecho es sencillo de hacer; aunque creo que puede ser de utilida. Éste consiste en que tu envías una alerta e "instantáneamente" llega a quien esté en el siio web sin tener que actualizar, además cuenta con autoborrado de los mensajes que ya no se van a leer por nadie más y el registro de alertas vistas.

Tiene un intervalo de actualización de entre 0.1 segundos pero siempre hay una demora que pede ser de hasta 2 segundos. Consta de tan sólo 2 archivos, alertas.php y el archivo donde se visualizan las alertas.

alertas.php:
Código: [Seleccionar]
<?php
$datos 
= array(
"server" => "",
"user" => "",
"pass" => "",
"database" => ""
);
//NO TOCAR DESDE ESTE PUNTO SI NO SABES PHP//
$datos[&#39;conexion&#39;] = mysql_connect($datos[&#39;server&#39;], $datos[&#39;user&#39;], $datos[&#39;pass&#39;])or die("No se ha podido conectar al servidor MySQL.");
mysql_select_db($datos[&#39;database&#39;], $datos[&#39;conexion&#39;])or die("La base de datos no existe.");
if(!isset($_GET[&#39;subir&#39;])) {
$con mysql_query("SELECT * FROM alertas");
while($m mysql_fetch_array($con)) {
$tiempo time() - $m[&#39;time&#39;];
$lsk mysql_query("SELECT * FROM vistas WHERE idalert = ".$m[&#39;id&#39;]." AND ip = &#39;".$_SERVER[&#39;REMOTE_ADDR&#39;]."&#39;");
if($tiempo 60) {
if(mysql_num_rows($lsk) == 0) {
echo "<script> \n";
echo " alert(\"".htmlspecialshars($m[&#39;texto&#39;])."\");";
echo "\n</script>\n";
mysql_query("INSERT INTO vistas (idalert, ip) VALUES (".$m[&#39;id&#39;].", &#39;".$_SERVER[&#39;REMOTE_ADDR&#39;]."&#39;)");
}
} else {
mysql_query("DELETE FROM alertas WHERE id = &#39;".$m[&#39;id&#39;]."&#39;");
mysql_query("DELETE FROM vistas WHERE idalert = &#39;".$m[&#39;id&#39;]."&#39;");
}
}
} else {
if(!isset($_POST[&#39;enviar&#39;])) {
?>

<form action="" method="post">
<textarea id="texto" name="texto"></textarea><br />
<input type="submit" id="enviar" name="enviar" />
</form>
<?php
} else {
if(!empty($_POST[&#39;texto&#39;])) {
mysql_query("INSERT INTO alertas (texto, time) VALUES (&#39;".$_POST[&#39;texto&#39;]."&#39;, &#39;".time()."&#39;)");
echo "Alerta enviada";
} else {
echo "Llena el campo de texto";
}
}
}
?>


Código de visualización (ahora verán que sencillo  :D):
Código: [Seleccionar]
<div id="alertas">
<?php include("alertas.php"); ?>
</div>
<script>
function conn() {
$("#alertas").load("alertas.php");
}
setInterval("conn()", 100);
</script>

Estructura SQL:
Código: [Seleccionar]
CREATE TABLE alertas (
  id int(20) NOT NULL AUTO_INCREMENT,
  texto varchar(500) NOT NULL,
  `time` int(10) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE vistas (
  id int(50) NOT NULL AUTO_INCREMENT,
  idalert int(20) NOT NULL,
  ip varchar(12) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Las alertas se muestran si el usuario visita el sitio web por un intervalo de 60 segundos desde que la alerta fue enviada, esto se puede modificar en la siguiente línea:
Código: [Seleccionar]
if($tiempo < 60) {

¡No me funciona! ¿Qué hago?
Deberías fijarte si tienes incluido en el archivo donde se visualizan las alertas la librería jQuery, si no lo tienes pues agrégala. No recomiendo la última versión porque agregas peso adicional que no es necesario, utiliza la mas vieja que puedas que contenga la función .load() (Desconozco cuál es)

¿Cómo puedo enviar alguna alerta?
Pues de forma muy sencilla, solo visita /alertas.php?subir

¿Por qué los caracteres acentuados no se visualizan?
Supongo que son problemas de la codificación del archivo del jQuery, para mostrar los caracteres del español necesita tener la codificación ISO-8859-1 -Europa Occidental-, o usar &ntilde; &aacute; etc., pero alert() muestra solo texto (es decir, te mostrara Hola amigos, ¿C&oacute;mo est&aacute;n? por ejemplo).

No es el mejor script y tiene varios problemas pero estos los pueden modificar ustedes si es que lo desean, lo mio es tan sólo un aporte.

Bueno, eso es todo, supongo que ya no cabe más información respecto a esto ;).
« Última modificación: 07 de Marzo de 2012, 22:58:55 pm por -Pituko- »

Comunidad PHPeros

[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« en: 07 de Marzo de 2012, 22:56:34 pm »

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #1 en: 07 de Marzo de 2012, 23:53:26 pm »
Si mal no recuerdo, esta era la duda de un usuarios ya hace unos meses atrás.
Si se vuelve a pasar por el foro, espero que se de cuenta que su duda ya se encuentra resuelta.
Saludos y gracias.
Twitter: @JoakoM010



Desconectado -Pituko-

  • PHPero Experto
  • *****
  • Mensajes: 954
  • Karma: 20
  • Sexo: Masculino
  • ¡Hala Madrid!
    • Ver Perfil
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #2 en: 08 de Marzo de 2012, 00:01:01 am »
Si mal no recuerdo, esta era la duda de un usuarios ya hace unos meses atrás.
Si se vuelve a pasar por el foro, espero que se de cuenta que su duda ya se encuentra resuelta.
Saludos y gracias.
¿Por que crees que lo subí?, gracias por el comentario.

Desconectado MEJORENHO

  • PHPer@ Fijo
  • ***
  • Mensajes: 204
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
    • Beeme
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #3 en: 20 de Marzo de 2012, 03:39:27 am »
Un aporte buenísimo ^^

Gracias Pituko, creo que además es posible que le saque partido, no como sistema de alertas, pero supongo que podré adaptarlo ¿no?.


Buenisisisisisisisisisiisisiimo xd

Desconectado Mixvice

  • PHPero Experto
  • *****
  • Mensajes: 687
  • Karma: 32
  • Sexo: Masculino
  • ¡Y Tu Papá Tambien!
    • Ver Perfil
    • Tuhabbo
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #4 en: 20 de Marzo de 2012, 03:56:26 am »
Con esto no se supone que se estaría cargando el archivo alertas.php cada rato?

Desconectado MEJORENHO

  • PHPer@ Fijo
  • ***
  • Mensajes: 204
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
    • Beeme
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #5 en: 20 de Marzo de 2012, 04:02:18 am »
Con esto no se supone que se estaría cargando el archivo alertas.php cada rato?

Si, pero dependiendo que quieras hacer sirve o no...

Una idea que me ha dado entre este tema y otro... para saber quien está online en tiempo real en mi web lo que puedes hacer es poner un div o iframe oculto que no se vea nada de nada, y ahí cargar una página para que a cada rato actualize la base de datos... Eso no lo había pensado hasta que lo vi... Ver el foro también inspira y más en estos tiempos de crisis, en los que yo por lo menos no estoy para tirar nada.. xdddddddd


Desconectado Mixvice

  • PHPero Experto
  • *****
  • Mensajes: 687
  • Karma: 32
  • Sexo: Masculino
  • ¡Y Tu Papá Tambien!
    • Ver Perfil
    • Tuhabbo
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #6 en: 20 de Marzo de 2012, 05:55:04 am »
Si, pero dependiendo que quieras hacer sirve o no...

Una idea que me ha dado entre este tema y otro... para saber quien está online en tiempo real en mi web lo que puedes hacer es poner un div o iframe oculto que no se vea nada de nada, y ahí cargar una página para que a cada rato actualize la base de datos... Eso no lo había pensado hasta que lo vi... Ver el foro también inspira y más en estos tiempos de crisis, en los que yo por lo menos no estoy para tirar nada.. xdddddddd

En ese caso estarías consumiendo ancho de banda, algo que sería un desperdicio si tienes limitada aunque todas te ofrecen ilimitado ahora. Creo que lo mejor sería hacer la llamada cada 3 minutos o al menos cada minuto asi no desperdicias tanto.

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #7 en: 20 de Marzo de 2012, 06:39:37 am »
En ese caso estarías consumiendo ancho de banda, algo que sería un desperdicio si tienes limitada aunque todas te ofrecen ilimitado ahora. Creo que lo mejor sería hacer la llamada cada 3 minutos o al menos cada minuto asi no desperdicias tanto.

Un tagboard consume aun mas...
Twitter: @JoakoM010



Desconectado MEJORENHO

  • PHPer@ Fijo
  • ***
  • Mensajes: 204
  • Karma: 3
  • Sexo: Masculino
    • Ver Perfil
    • Beeme
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #8 en: 20 de Marzo de 2012, 06:44:31 am »
En ese caso estarías consumiendo ancho de banda, algo que sería un desperdicio si tienes limitada aunque todas te ofrecen ilimitado ahora. Creo que lo mejor sería hacer la llamada cada 3 minutos o al menos cada minuto asi no desperdicias tanto.

Hombre lo haría para que recargarse cada 45 segundos o así, y lo que recargaría sería un simple codigo php... vamos un update en mysql que no consume tanto como un tagboard, por poner el ejemplo que puso Joaquín xdd

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #9 en: 20 de Marzo de 2012, 07:13:50 am »
Hombre lo haría para que recargarse cada 45 segundos o así, y lo que recargaría sería un simple codigo php... vamos un update en mysql que no consume tanto como un tagboard, por poner el ejemplo que puso Joaquín xdd

La consulta es del lado del servidor, por eso no tenemos mucho problema. El problema viene de que se tiene que cargar el archivo como tal (Lado cliente) en un intervalo muy corto.

Cada carga consume la transferencia del cliente sin que el lo sepa, cosa que no sabemos si es limitada o no.
Saludos.
Twitter: @JoakoM010



Desconectado maska

  • PHPer@ Fijo
  • ***
  • Mensajes: 126
  • Karma: 2
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #10 en: 20 de Marzo de 2012, 22:52:08 pm »
¿Es esta librería?

<script language="JavaScript" src="js/jquery-1.5.1.min.js"></script>
<script language="JavaScript" src="js/jquery-ui-1.8.13.custom.min.js"></script>

De ser esa, a mi no me aparece la alerta. Haber si me podrías ayudar. Gracias.

Desconectado Mixvice

  • PHPero Experto
  • *****
  • Mensajes: 687
  • Karma: 32
  • Sexo: Masculino
  • ¡Y Tu Papá Tambien!
    • Ver Perfil
    • Tuhabbo
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #11 en: 20 de Marzo de 2012, 23:05:46 pm »
La consulta es del lado del servidor, por eso no tenemos mucho problema. El problema viene de que se tiene que cargar el archivo como tal (Lado cliente) en un intervalo muy corto.

Cada carga consume la transferencia del cliente sin que el lo sepa, cosa que no sabemos si es limitada o no.
Saludos.

Muy cierto, habia olvidado la transferencia limitada del cliente, por ejemplo un movil conectado a su red 3g que visita nuestra web estaría cargando el archivo cada rato de un sistema de alertas en vivo en el que deseguro enviarán una alerta cada semana, sigo opinando por el bien del que implemente este script en su sitio, ponga un intervalo mayor a 30s.

Y si el tagboard consume mucho mas xd
« Última modificación: 20 de Marzo de 2012, 23:15:34 pm por Mixvice »

Desconectado maska

  • PHPer@ Fijo
  • ***
  • Mensajes: 126
  • Karma: 2
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #12 en: 21 de Marzo de 2012, 20:12:04 pm »
A mi sigue sin aparecerme la alerta. Le agregué la librería y no me aparece en pantalla lo que escribo.

Esta es la librería que le agregué.
Código: [Seleccionar]
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">

// cargamos la librería jQuery
google.load("jquery", "1.3.2", {uncompressed:true});

</script>

Saludos.

Desconectado -Pituko-

  • PHPero Experto
  • *****
  • Mensajes: 954
  • Karma: 20
  • Sexo: Masculino
  • ¡Hala Madrid!
    • Ver Perfil
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #13 en: 25 de Marzo de 2012, 06:36:32 am »
En ese caso estarías consumiendo ancho de banda, algo que sería un desperdicio si tienes limitada aunque todas te ofrecen ilimitado ahora. Creo que lo mejor sería hacer la llamada cada 3 minutos o al menos cada minuto asi no desperdicias tanto.
No es por molestar, pero hice cálculos y gasta alrededor de 3MB en un día aproximadamente (si la consola de Chrome no me engaña :D). No creo que sea mucho, ni se desperdicie tanto.

A mi sigue sin aparecerme la alerta. Le agregué la librería y no me aparece en pantalla lo que escribo.

Esta es la librería que le agregué.
Código: [Seleccionar]
<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">

// cargamos la librería jQuery
google.load("jquery", "1.3.2", {uncompressed:true});

</script>

Saludos.
Utiliza la librería de la dirección:
http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js

Un aporte buenísimo ^^

Gracias Pituko, creo que además es posible que le saque partido, no como sistema de alertas, pero supongo que podré adaptarlo ¿no?.


Buenisisisisisisisisisiisisiimo xd
Lo puedes adaptar a lo que quieras :). Gracias por el comentario ;).

Desconectado Ripper

  • PHPerit@
  • *
  • Mensajes: 10
  • Karma: 0
  • Sexo: Masculino
    • Ver Perfil
    • Google
Re:[Aporte] Sistema de alertas en vivo [PHP, MYSQL Y JQUERY]
« Respuesta #14 en: 25 de Marzo de 2012, 13:19:46 pm »
Buen aporte ;)