Foros del Web » Programando para Internet » PHP »

Comparar si existe un registro en comun para varios datos recibidos por array

Estas en el tema de Comparar si existe un registro en comun para varios datos recibidos por array en el foro de PHP en Foros del Web. Buenos dias amigos, TIempo sin pasar por acá, tengo un pequeño problema, hice un sistema de Chat y acabo de añadir la funcionalidad de Chat ...
  #1 (permalink)  
Antiguo 08/02/2013, 10:33
 
Fecha de Ingreso: agosto-2009
Mensajes: 59
Antigüedad: 14 años, 8 meses
Puntos: 0
Comparar si existe un registro en comun para varios datos recibidos por array

Buenos dias amigos,

TIempo sin pasar por acá, tengo un pequeño problema, hice un sistema de Chat y acabo de añadir la funcionalidad de Chat grupal, estando en el listado de conectados, el usuario marca con quien quiere hacer la conferencia y se crea una nueva sala en comun para esos usuarios, esto funciona perfecto.

El problema se presenta cuando quiero consultar si ya existe una sala para esos 3 usuarios, no logro hacerlo. Si pudieran darme una mano se los agradeceria.

Aca pongo el codigo


Código PHP:
Ver original
  1. <?php
  2. header('Content-Type: text/html; charset=iso-8859-1');
  3. include '../includes/conexion.php';
  4. include '../includes/funciones.php';
  5. $mysqli = $_SESSION['db'];
  6.  
  7. $ahora = $_POST['ahora'];
  8.  
  9. $id_creador = $_SESSION['usuario']['admin_id'];
  10. $tot = count($_POST["agregar"]);
  11.  
  12. //verifico primero si estos usuarios ya crearon una sala grupal
  13. if ($tot = 2){
  14.    
  15.     $query = mysql_query("SELECT"); //aqui me quede
  16.    
  17.     }
  18.  
  19. if ($tot < 2){
  20.    
  21.     header ("Location: ../selector.php?action=2&conf=3");
  22.     break;
  23.     }
  24. if ($tot > 5){
  25.            
  26.             header ("Location: ../selector.php?action=2&conf=2");
  27.             break;
  28.         }
  29.         if ($tot <= 5){
  30.        
  31.         $insert = mysql_query("INSERT INTO cev_chat_gettcom_salasconf(fecha) VALUES('$ahora')",$conn);
  32.        
  33.         $cons_sala = mysql_query("SELECT id_sala FROM cev_chat_gettcom_salasconf WHERE fecha = '$ahora'",$conn);
  34.         $sala = mysql_fetch_array($cons_sala);
  35.        
  36.         for ($i = 0; $i < $tot; $i++){
  37.            
  38.             $id_agregar = $_POST["agregar"][$i];
  39.            
  40.             $conversacion1 = mysql_query("INSERT INTO cev_chat_gettcom_salasconf_parti(id_sala,id_participante) VALUES('".$sala['id_sala']."','$id_agregar')",$conn) or die("Error ".mysql_error());
  41.                
  42.             }
  43.             $conversacion = mysql_query("INSERT INTO cev_chat_gettcom_salasconf_parti(id_sala,id_participante) VALUES('".$sala['id_sala']."','$id_creador')",$conn) or die("Error ".mysql_error());
  44.             if ($conversacion){
  45.             header ("Location: ../selector.php?action=2&conf=1");
  46.             }
  47.        
  48.         }
  49. ?>

el problema es que recibo los participantes del chat por medio de un array y no se como hacer la consulta de manera que compruebe los 5 usuarios simultaneo bajo la misma sala.

Espero que puedan ayudarme

Muchas Gracias!

Última edición por douglasroos; 08/02/2013 a las 14:47
  #2 (permalink)  
Antiguo 08/10/2013, 09:21
 
Fecha de Ingreso: octubre-2013
Mensajes: 1
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Comparar si existe un registro en comun para varios datos recibidos por ar

llegue a tu tema buscando casi lo mismo, y ya e que el post tiene mil años pero alomejor a alguien le sirve, porque la verdad no encontre informacion por niun lado.

poniendo de supuesto la sig tabla

Código:
room_id  user_id  
-------  ---------
      1          2
      1          4
      2          1
      2          4
      1          5
para saber el id de la sala de los usuarios 1 y 4:

Código:
SELECT ur1.room_id FROM user_has_room ur1
INNER JOIN user_has_room ur2 ON ur1.room_id = ur2.room_id
WHERE ur1.user_id = 1 AND ur2.user_id = 4
-- WHERE ur1.user_id = 4 AND ur2.user_id = 1 -- funciona de cualquier orden
GROUP BY ur1.room_id
HAVING (SELECT COUNT(1) AS room_count1 FROM user_has_room WHERE room_id = ur1.room_id) = 2;
para mas usuarios se agrega un JOIN por cada usuario, un AND en el where y la cantidad en el HAVING del final

Código:
SELECT ur1.room_id FROM user_has_room ur1
INNER JOIN user_has_room ur2 ON ur1.room_id = ur2.room_id
INNER JOIN user_has_room ur3 ON ur1.room_id = ur3.room_id
WHERE ur1.user_id = 4 AND ur2.user_id = 5 AND ur3.user_id = 2
GROUP BY ur1.room_id
HAVING (SELECT COUNT(1) AS room_count1 FROM user_has_room WHERE room_id = ur1.room_id) = 3
obiamente con una combinacion que no corresponda no devolvera resultados.

es la unica forma en la que se me ocurrio solucionarlo, se que es algo complejo pero funciona

saludos

Etiquetas: comun, html, mysql, registro, select, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:47.