Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/02/2016, 11:20
Avatar de dobleamarilla
dobleamarilla
 
Fecha de Ingreso: febrero-2016
Ubicación: Barcelona
Mensajes: 2
Antigüedad: 8 años, 3 meses
Puntos: 0
Pregunta Atasco con PHP/MySQLi

Presentación

Hola! Soy nuevo en el foro, aunque llevo bastante tiempo visitando esta página , y he podido ver que hay usuarios que son realmente programadores muy buenos. Yo tengo conocimientos muy básicos de programación, y en estos momentos estoy diseñando una web por mi cuenta.

Creo este post para pedir ayuda a alguien que se maneje mejor que yo en este mundo y me oriente un poco para salir de un atasco en el diseño de mi página web (no pido que me lo den hecho! sólo que me digan por donde puedo tirar jeje).

Contexto

Os comento. Estoy trabajando con PHP, javaScript y MySQL. Tengo un bloque en la web que se trata de una especie de carrusel de imágenes y que abajo de este hay dos botones: Aceptar y Rechazar (cada imagen representa otro usuario cargado con un ID desde PHP). Si se acepta, se envía con una función AJAX información a la base de datos, en particular a una tabla llamada meGustan. Agrego que al hacer clic en Aceptar o Rechazar carga otro usuario con su imagen correspondiente. La estructura de esta tabla es la siguiente:
meGustan: ID (clave primaria) - ID_RULETA (este es el ID del usuario que aparece en el carrusel). Por lo tanto, si el usuario de la sesión (por ej. id = 10) acepta al usuario de la imagen (por ej. id_ruleta = 15) se añade una nueva fila en la tabla MeGustan:

id: 10, id_ruleta: 15.

Si has llegado hasta aquí me imagino que ya sabrás de que va la temática de la web .

Bueno, aquí viene uno de los problemas, aunque este es inevitable: cada usuario sesión aceptará a MUCHOS usuarios del carrusel, y cada aceptación o "megusta" implica tener una nueva fila en la tabla MeGustan y, en definitiva, con muchos usuarios esto crearía un problema de memoria/rendimiento.

El otro problema (en consecuencia del anterior) y un requisito indispensable, es que no se pueden repetir los mismos usuarios (a los que ya he aceptado) en el carrusel. Es decir, si yo le he dado a me gusta a fulanita, fulanita no puede volver a aparecerme en el carrusel.

A mi sólo se me ocurre obtener un array de todos los usuarios a los que les he dado "megusta" al cargar la página, e inventarme algún método con bucles para preparar un string/consulta SQL con tantas condiciones como usuarios haya dado a "megusta", para que MySQL me devuelva otro usuario que cumpla con los requisitos (que no le haya dado a me gusta antes). Es la única solución que he encontrado, pero creo que es muy bestia hacer algo como:

Código PHP:
$sql "SELECT id FROM usuarios WHERE id != c AND id != d AND ..."
Y poner un AND por cada usuario al que le haya dado "megusta"...

Resumen

Necesito obtener de la BD un usuario que NO aparezca en una matriz/array de muchas posiciones, y sólo se me ocurre hacerlo de una manera poco eficiente.

Cualquier idea que tengáis es bienvenida .

Muchas gracias por la atención, saludos!