Foros del Web » Programando para Internet » PHP »

Notifiacacion de mensajes privados php

Estas en el tema de Notifiacacion de mensajes privados php en el foro de PHP en Foros del Web. Hola a todos! Tengo un codigo php en donde se pueden mandar mensajes privados entre usuarios si me llega un nuevo mp en mensajes me ...
  #1 (permalink)  
Antiguo 03/03/2011, 20:28
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Notifiacacion de mensajes privados php

Hola a todos!
Tengo un codigo php en donde se pueden mandar mensajes privados entre usuarios si me llega un nuevo mp en mensajes me muestra el titulo y un .png de nuevo eso esta bien.
Pero ahora quiero hacer en donde este el usuario muestre con javascript que tiene mensajes nuevos nada mas.
Primero tengo una session para comprobar.
Codigo:
Código PHP:
   <?php
    
include 'new_messages.php';  
session_start();
 
if (isset(
$_SESSION['userid'])) {
    
// variables de las sesiones
    
$userid $_SESSION['userid'];
    
$username $_SESSION['username'];
      
        echo 
'<li class="menu_seleccionado"><a href="index.php"><span>Inicio</span></a></li>
        <li><a href="./mensajes"><span>Mensajes</span></a></li>
        
    </ul>
        </div> '
;
    }else{
echo 
'
<li class="menu_seleccionado"><a href="index.php"><span>Inicio</span></a></li>
        login
    </div> 

</div>

</div>'
;
}
?>
new_messages.php
Código PHP:
<?php

   
include 'conexion.php';

$userid $_GET['id'];
                
$get_messages mysql_query("SELECT message_id FROM messages WHERE to_user='$username' ORDER BY message_id DESC") or die(mysql_error());
                
$get_messages2 mysql_query("SELECT * FROM messages WHERE to_user='$username' ORDER BY message_id DESC") or die(mysql_error());
                
$num_messages mysql_num_rows($get_messages);
                
$id $_GET['id'];
                echo 
'<tr>';
                for(
$count 1$count <= $num_messages$count++)
                {
                
                    
$row mysql_fetch_array($get_messages2);
                  
                if(
$row['message_read'] == 0)
                {
                    
?>
                    <script type="text/javascript">
                    document.getElementById('notifications').innerHTML='<b style=color:green;>Tienes mensajes nuevos</b>';
                    </script>
                <?php    
                
}
                }
    }else{
    }
?>
En la base de datos para probar inserto un mensaje y no me muestra nada.
Me tendria que mostrar tienes mensajes nuevos.
Quien pueda ayudarme se los agradezco mucho.
Saludos
  #2 (permalink)  
Antiguo 03/03/2011, 20:42
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Notifiacacion de mensajes privados php

No sera mas facil agregarle un campo a la tabla "mensajes" que diga "nuevo" y ese cargarlo con un 1 cuando se inserta, y si lo lees ponerle 0... de esa manera tu consulta para ver si existe solo sera un select count() as nuevos from mensajes where nuevo = 1 y para mostrarlo si nuevos > 0 = javascript.

Just an idea

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 03/03/2011, 21:07
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Respuesta: Notifiacacion de mensajes privados php

Ok gracias por la respuesta.
Entonces me aconsejas que agrege a la tabla mensajes por ejemplo un campo 'nuevo' y dentro que tenga enum('0','1') si los mensajes que tiene no son leidos ahi compruebo con count si hay en nuevo 0 entonces tiene mensajes sin leer y cuando los lea a 'nuevo' le cambio por valor 1.
Muchas gracias.
  #4 (permalink)  
Antiguo 03/03/2011, 21:18
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Notifiacacion de mensajes privados php

Sip... porque no recargas la busqueda de mensajes nuevos en la base de datos ,dado que lo estas haciendo con dos consultas y me imagino que el campo de usuario es un texto.

Ahora podras buscar un integer y en una sola consulta puedes saber cuantos mensajes nuevos hay para cualquier usuario

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 03/03/2011, 21:25
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Respuesta: Notifiacacion de mensajes privados php

Mas o menos estoy haciendo asi:
Código PHP:
<?php
$str 
"SELECT COUNT(nuevo = 0) FROM messages";
                
//ejecutamos la consulta
                
$sql mysql_query($str) or die(mysql_error());
                
$resultadomysql_fetch_row($sql);
                echo 
"Mensajes sin leer:".$resultado[0];    
?>
Probando insertando un msj de prueba en la base de datos y haciendo este codigo no me muestra nada.
Gracias
  #6 (permalink)  
Antiguo 03/03/2011, 21:33
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Notifiacacion de mensajes privados php

Prueba asi:
Código PHP:
        $str "SELECT COUNT(*) as nuevos FROM messages WHERE nuevo = 0";
        
//ejecutamos la consulta
        
$sql mysql_fetch_array(mysql_query($str));
        echo 
"Mensajes sin leer: ".$sql['nuevos']; 
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 03/03/2011, 21:41
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Respuesta: Notifiacacion de mensajes privados php

Para comprobar si hay mensajes nuevos puedo hacer un if por ejemplo
Porque sino me va a mostrar el numero de nuevo 0 o 1.
Código PHP:
$str "SELECT COUNT(*) as nuevos FROM messages WHERE nuevo = 0";
        
//ejecutamos la consulta
        
$sql mysql_fetch_array(mysql_query($str));
       if ( 
$str =0){
      echo 
"Mensajes sin leer: ".$sql['nuevos']; 
     }else{
    echo 
'no tienes mensajes nuevo';

Gracias

Etiquetas: mensajes, privados
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 17:15.