Foros del Web » Programando para Internet » PHP »

Creando sistema de notificaciones

Estas en el tema de Creando sistema de notificaciones en el foro de PHP en Foros del Web. Hola, he hecho un sistema de amigos con solicitudes y aceptar dichas solicitudes, del estilo de facebook. La cuestión es que ahora estoy en el ...
  #1 (permalink)  
Antiguo 13/04/2012, 09:58
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Creando sistema de notificaciones

Hola, he hecho un sistema de amigos con solicitudes y aceptar dichas solicitudes, del estilo de facebook. La cuestión es que ahora estoy en el paso de que le aparezca la notificación al perfil del usuario al que se le envió una petición.
El código me funciona y me da la notificación pero cuando acepto la solicitud y en la base de datos esto queda constado me sigue saliendo la misma notificación.

Explico como lo he hecho un poco el sistema para que se entienda: Hay una base de datos llamado amigos con 3 campos, de, para y estado. de es el id del emisor de la solicitud. Para es el id del que recibe la solicitud. Estado es el estado de la solicitud, si es 0 nadie ha mandado solicitud, si es 1 alguien la ha eviado pero el otro no la ha aceptado y si es 2 ya son amigos.

Aqui dejo el código:
Por cierto, idsesion es el id del usuario que ha iniciado sesion, es decir el que recibe la solicitud.

Código PHP:
    $conexion= mysql_connect("x","x","x") or die("Error al conectar"); 
    mysql_select_db("x",$conexion) or die ("Error la seleccionar la base de  datos "); 
    $result=mysql_query("SELECT * FROM amigos WHERE para = '$idsesion'",$conexion);
        $semuestra=mysql_fetch_array($result);
        
        $emisor=$semuestra["de"];
        $estado=$semuestra["estado"];
        
    $pruebo=mysql_query("SELECT nombre, apellidos FROM registrados WHERE id='".$emisor."'",$conexion);
    $bien=mysql_fetch_array($pruebo);
    $name=$bien['nombre'];
    $surname=$bien['apellidos'];

    if($estado==1){
    ?>
    <input type="button" class="botonsoli" id="botonsoli" name="botonsoli" value="Tienes una solicitud de amistad de <?php echo " ".$name." ".$surname." "?>." onclick="location.href='perfil.php?id=<?php echo $emisor?>'" />
    <?php
    
}
    if(
$estado==2){
    
?>
    no tienes notificaciones
    <?php
    
}
Os agradecería muchísimo la ayuda ya que llevo unos días sin avanzar por este problema, gracias.
  #2 (permalink)  
Antiguo 13/04/2012, 10:22
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Creando sistema de notificaciones

Por lo que veo no recorres todos los registros de la tabla amigos por lo tanto el resultado siempre será el del primer registro encontrado.
Quiero decir que un usuario puede tener notificaciones de varios amigos, pero solo seleccionas una notificación x.

saludos,
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 13/04/2012, 10:28
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Respuesta: Creando sistema de notificaciones

Cita:
Iniciado por santris Ver Mensaje
Por lo que veo no recorres todos los registros de la tabla amigos por lo tanto el resultado siempre será el del primer registro encontrado.
Quiero decir que un usuario puede tener notificaciones de varios amigos, pero solo seleccionas una notificación x.

saludos,
Primero de todo, gracias por contestar. Segundo, como podría recorrer a todos los usuarios de la tabla que cumpieran esa condición? Gracias.
  #4 (permalink)  
Antiguo 13/04/2012, 10:48
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Creando sistema de notificaciones

Cita:
Iniciado por ananda Ver Mensaje
Primero de todo, gracias por contestar. Segundo, como podría recorrer a todos los usuarios de la tabla que cumpieran esa condición? Gracias.
Con el famoso while:

Ojo!! es solo un ejemplo así no funcionaría.
Código PHP:
<?php
    
while($semuestra=mysql_fetch_array($result)){     
        
$emisor=$semuestra["de"];
        
$estado=$semuestra["estado"];    
        
$pruebo=mysql_query("SELECT nombre, apellidos FROM registrados WHERE id='".$emisor."'",$conexion);
        
$bien=mysql_fetch_array($pruebo);
        
$name=$bien['nombre'];
        
$surname=$bien['apellidos'];    
        if(
$estado==1){
        
?>
            <input type="button" class="botonsoli" id="botonsoli" name="botonsoli" value="Tienes una solicitud de amistad de <?php echo " ".$name." ".$surname." "?>." onclick="location.href='perfil.php?id=<?php echo $emisor?>'" />
        <?php
        
}
        if(
$estado==2){
        
?>
            no tienes notificaciones
        <?php
        
}
    }
?>
__________________
Tu álbum de cromos online!!
  #5 (permalink)  
Antiguo 13/04/2012, 11:07
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Creando sistema de notificaciones

No es un problema de código, más bien es conceptual.

Una posible estructura sería:

selecciono el usuario en cuestión.

selecciono las notificaciones de ese usuario (tabla amigos)

miro el numero de notificaciones que tiene (mysql_nums_rows)

recorro con todas las notificaciones (while($var=mysql_fetch_array){)
realizo las acciones para cada notificación
(})
__________________
Tu álbum de cromos online!!
  #6 (permalink)  
Antiguo 13/04/2012, 13:51
Avatar de ananda  
Fecha de Ingreso: enero-2012
Mensajes: 345
Antigüedad: 12 años, 3 meses
Puntos: 14
Respuesta: Creando sistema de notificaciones

Lo he hecho así para ver si me salía bien pero ahora me sale tanto la notificación como un cartel de : No tienes notificaciones XD


Código PHP:
$result=mysql_query("SELECT * FROM amigos WHERE para = '$idsesion' AND estado='1'",$conexion);
    while($semuestra=mysql_fetch_array($result)){ 
    
        $emisor=$semuestra["de"]; 
        $estado=$semuestra["estado"];     
        
        $pruebo=mysql_query("SELECT nombre, apellidos FROM registrados WHERE id='".$emisor."'",$conexion); 
        $bien=mysql_fetch_array($pruebo); 
        $nombreemisor=$bien['nombre']; 
        $apellidosemisor=$bien['apellidos'];

if($estado==1){    
        ?> 
            <input type="button" class="botonsoli" id="botonsoli" name="botonsoli" value="Tienes una solicitud de amistad de <?php echo " ".$nombreemisor." ".$apellidosemisor." "?>." onclick="location.href='perfil.php?id=<?php echo $emisor?>'" /> 
        <?php 
        
}
        
if(
$estado==2){
  
?>
  No tienes notificaciones
  <?php
    
}
No entiendo porque esta mal, en la base de datos tengo una amistad con estado 2, es decir que son amigos, y he puesto que solo salgan los resultados que el estado sea 1, y sigue saliendo igual... sabes por que ocurre esto? gracias.
  #7 (permalink)  
Antiguo 13/04/2012, 14:02
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Creando sistema de notificaciones

Realmente solo seleccionas los que tienen estado = 1, pero como tienes una condición que dice:
Código PHP:
if($estado==2){
  ?>
  No tienes notificaciones
  <?php
    
}
pues te muestra es ese mensage, si no quieres mostrarlo quítalo y crea una condicion dependiendo del número de registros que encuentre:

Código PHP:
$num_semuestra=mysql_num_rows($result);
if(
$num_semuestra>0){

aquí realizas el while con el resto del código etc

}
else 
echo 
"No tienes notificaciones"
__________________
Tu álbum de cromos online!!

Etiquetas: creando, mysql, notificaciones, sistema, sql, usuarios
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 06:17.