Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Busqueda en MySQL

Estas en el tema de Busqueda en MySQL en el foro de Mysql en Foros del Web. Hola, bue Estoy teniendo un problema, hago un sistema de amistad y queria saber como puedo hacer para buscar por palabras en mysql. Osea es ...
  #1 (permalink)  
Antiguo 03/04/2011, 09:16
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 1
Busqueda en MySQL

Hola, bue

Estoy teniendo un problema,
hago un sistema de amistad y queria saber como puedo hacer para buscar por palabras en mysql.

Osea es asi.


Estan los comentarios en un perfil.
Donde quiero que solamente se muestran los comentarios de sus amigos.

hay 2 comentarios almacenados en las base de datos.

Comentario hecho por: Hercules - Texto = Que lindo Dia!
Comentario hecho por: Esteban - Texto = Recien llego de viaje!

Pero... Solamente Hercules es mi amigo, entonces solamente
en mi perfil se tienen que mostrar los comentarios de Hercules, y no de Esteban.
Y obvio tambien los mios y de mis otros amigos...


Espeero que me puedan ayudar a hacer algo asi.
No sabia como explicar bien, y se me enredo todo ajaja.

Saludos Amigos!
  #2 (permalink)  
Antiguo 03/04/2011, 18:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Busqueda en MySQL

sin la estructura de tus tablas es dificil darte una consulta.
como se relacioanan los comentarios con los usuarios? y con los amigos?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 03/04/2011, 21:32
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Busqueda en MySQL

Osea es asi tipo Twitter.
Pero algo diferente.

Ingreso a la web, me logeo, y en el index aparece un box para dejar comentarios,
cualquier comentario.
Y Si vos sos mi amigo, ves esos comentarios, yo veo el comentario de todos mis amigos y mis amigos ven todos mis comentarios, tanto el mio, como el de sus otros amigos y el de ellos.

Eso es lo que quiero lograr.
Pero lo que no puedo hacer es que se muestren los comentarios solamente de amigos.

Por ejemplo al enviar un comentario se inserta en la db, "deusuario" - "texto" - "fecha" -
y quedaria asi - "Pedro" - "Hoy es lindo dia" - "04/03/2011" -

Y quiero que solamente puedan ver ese comentarios, los amigos de pedro y obvio pedro.

Me comprendes?
No tengo estructurada la db todavia, la cambio cada 2 minutos.
  #4 (permalink)  
Antiguo 03/04/2011, 21:38
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Busqueda en MySQL

Lo que no comprendo es como no vas a tener una estructura de la base de datos. Las tablas que manejas y los campos que tienen.

Por ejemplo... el "hoy es lindo dia" lo puso pedro el 04/03/2011. Donde lo puso? se lo puso a alguien? se lo puso el mismo? donde se almacena esta información?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 03/04/2011, 21:45
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Busqueda en MySQL

No se lo puso a nadie, Osea los comentarios son en general.

Es como el sistema de Twitter, que aparecen las publicaciones de toda la gente que seguis.
Esto quiero que sea algo igual, pero solamente vean esas publicaciones tus amigos.

Como te dije anteriormente, se guardaria en la DB algo asi.
"deusuario" - "texto" - "fecha" -
y quedaria asi - "Pedro" - "Hoy es lindo dia" - "04/03/2011" -


Algo asi quedaria estructurada, pero los campos los cambio, por ejemplo
o agrego una o quito otra, para intentar hacer lo que necesito, pero no puedo.
  #6 (permalink)  
Antiguo 11/04/2011, 06:44
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Busqueda en MySQL

Alguien que me pueda seguir ayudando?
  #7 (permalink)  
Antiguo 11/04/2011, 07:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Busqueda en MySQL

Mira:
- No tienes una estructura ni medianamente estable de base de datos, y nosotros trabajamos con bases de datos, no con ficciones.
- No tienes claros los procesos que deberían recibir y emitir datos en tu sistema, por lo que inferimos que tampoco has modelado el funcionamiento de la página. Obviamente, el modelo de clases ni siquiera existe.
- No te has documentado de cómo se organizan y funcionan sistemas similares a Twitter.
- Tampoco has buscado ejemplo de las estructuras de datos que soportan esos servicios (y que son fáciles de conseguir), por lo que estás diseñando la aplicación virtualmente en el aire.
- Tampoco nos das información útil o precisa del modelo de tu base como para saber hacia dónde orientarte...

Seamos sinceros: No nos estas dando mucho por donde trabajar y menos aún para ayudarte. ¿No te parece?
Como mínimo, tendrías que documentarte sobre lo que usa Twitter, como para tener una idea de qué es lo que tienes que hacer...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 11/04/2011, 19:35
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Busqueda en MySQL

Claro, la estructura de la DB la cambio mucho para intentar
conseguir algun resultado pero no puedo.

En Twitter, inicias sesion, y en vez de la Home comun que esta te muestra una lista de todos
los tweets de los usuarios que vos seguis, y obvio los tuyos.

Yo quiero algo igual a ese sistema, que solamente se muestre los comentarios de los usuarios que son tus amigos.

Por ejemplo la tabla de usuarios la tengo algo asi.

username | userid | friends |
Pedro | 1 | Alberto, Agustin, Obama, Albert |


Y en la consulta tendria que ser algo asi.


Código PHP:
Ver original
  1. <?
  2. $sql = "SELECT friends FROM users WHERE username = '$Session_name'";
  3. $sql = mysql_query($sql) or die(mysql_error());
  4. while($row = mysql_fetch_array($sql))
  5. {
  6. $amigos = $row['friends'];
  7. }
  8. ?>

y la consulta para averiguar los comments de amigos.

Código PHP:
Ver original
  1. <?
  2. $sql = "SELECT * FROM comments WHERE fromuser='$amigos";
  3. $result = mysql_query($sql);
  4. while($row = mysql_fetch_array($result))
  5. {
  6. echo "<tr><td><ol class=\"statuses\"><li>";
  7. echo "<span class=\"thumb\">";
  8. echo "<a href=\"profile.php?id=\"".$row['fromuserid']."\">";
  9. echo "<img height=\"48\" src=\"i/unknown.jpg\" width=\"48\" /></a></span>";
  10. echo "<span class=\"status-body\"><span class=\"status-content\"><strong>";
  11. echo "<a href=\"profile.php?id=\"".$row['fromuserid']."\">";
  12. echo "".$row['fromuser']."</a>:</strong> </span>";
  13. echo "<span class=\"entry-content\">".$row['text']."</span></span><br />";
  14. echo "<span class=\"meta\"><span>".$row['date']."</span></span>";
  15. echo "</span></ol></li><br /><br />";
  16. echo "<hr width=\"420\" style=\"margin-left:-10px;\"/><br /><br /></tr></td>";
  17. }
  18. ?>

y ahi ya muestra los comentarios de los amigos del usuario.
Pero no funciona y nose como hacer para que funcione-.

Espero puedas ayudarme amigo.
  #9 (permalink)  
Antiguo 11/04/2011, 21:47
Avatar de arepavieja  
Fecha de Ingreso: marzo-2011
Mensajes: 207
Antigüedad: 13 años, 2 meses
Puntos: 9
Respuesta: Busqueda en MySQL

mmmmm... todos los amigos están en una cadena, y supongo que esos nombres son únicos dentro de todos los usuarios almacenados, amigos o no. para comparar con cada uno de ellos deberías separarlos y luego extraer uno por uno de la base de datos para ver si son realmente amigos. A mi parecer tienes mal estructurada la base de datos. Si quieres seguirla usando de esa manera te recomiendo: hacer un explode a la variable $usuarios, luego hacer el COUNT del array, y fijar un ciclo con una consulta para que compare con cada uno de ellos.
__________________
La educación y la cortesía abren todas las puertas.
  #10 (permalink)  
Antiguo 11/04/2011, 23:35
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Busqueda en MySQL

Cita:
Iniciado por arepavieja Ver Mensaje
mmmmm... todos los amigos están en una cadena, y supongo que esos nombres son únicos dentro de todos los usuarios almacenados, amigos o no. para comparar con cada uno de ellos deberías separarlos y luego extraer uno por uno de la base de datos para ver si son realmente amigos. A mi parecer tienes mal estructurada la base de datos. Si quieres seguirla usando de esa manera te recomiendo: hacer un explode a la variable $usuarios, luego hacer el COUNT del array, y fijar un ciclo con una consulta para que compare con cada uno de ellos.
Gracias por tu respuesta, no soy muy avanzado en esto, si me pudieras dejar un ejemplo te agradeceria mucho, ya que no se usar eso de array :(
  #11 (permalink)  
Antiguo 12/04/2011, 05:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Busqueda en MySQL

En el modelo relacional no existen los campos multivaluados, es decir, columnas donde se almacenan más de un valor correspondientes a algún concepto. En ese sentido no se debe usar un campo para guardar los nombres de diversos amigos de una persona, ya que para eso existen las relaciones de cardinalidad N:N.
Cuando tienes una relación entre dos entidades tal que responda a la frase "X puede tener muchos Y, y cada Y puede tener a su vez muchos X", eso implica que existe una relación N:N (muchos a muchos) y por definición del modelo, esa relación determina la existencia de otra tabla que administre esa relación. Siempre.
En tu caso, lo que existe es una relación de "un usuario tiene muchos amigos y cada amigo a su vez puede tener muchos amigos". Eso implica una relación N:N de la tabla usuarios consigo misma. En esa tabla, la PK de cada usuario se combina, en diferentes registros, con la PK que corresponde al amigo en cuestión, y luego la búsqueda de los amigos de un usuario se hace simplemente con una consulta.
El diagrama básico de Twitter y de diferentes redes sociales es mas o menos (tomado de Database Answers):



En este diagrama puedes ver que los usuarios están en la tabla "My", la relación de amistad está determinada por la tabla "Contacts", El tipo de relación con esa persona está en "Contact_Role", y los mensajes de uno a otro en "My_Messages".

Ese es el esquema, cada red puede tener detalles diferentes, pero la estructura es mas o menos similar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 12/04/2011, 07:50
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Busqueda en MySQL

No es de mala onda, ni de nada malo, pero no entendi casi nada.
Voy a mirar mas y veo aver que hago.

Gracias igual :S
  #13 (permalink)  
Antiguo 12/04/2011, 07:55
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Busqueda en MySQL

vBArgentina no puedes pretender hacer un sistema como twitter en el que trabajan cientos de ingenieros sin tener los conceptos basicos de bases de datos relacionales.

No lo tomes a mal tu, pero te vendría bien tomarte unos días de solo estudio, de lectura, de pruebas y de entender todos los conceptos que esto conlleva. Te aseguro que con un panoramama claro, podrás sacar adelante tu desarrollo.

Toma la respuesta de gnzsoloyo como un golpecito en la cabeza que te dice.... esto no es tan sencillo como parece y necesito estudiar bastante.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #14 (permalink)  
Antiguo 12/04/2011, 08:02
 
Fecha de Ingreso: octubre-2010
Ubicación: Mountain View, United States.
Mensajes: 87
Antigüedad: 13 años, 6 meses
Puntos: 1
De acuerdo Respuesta: Busqueda en MySQL

Cita:
Iniciado por huesos52 Ver Mensaje
vBArgentina no puedes pretender hacer un sistema como twitter en el que trabajan cientos de ingenieros sin tener los conceptos basicos de bases de datos relacionales.

No lo tomes a mal tu, pero te vendría bien tomarte unos días de solo estudio, de lectura, de pruebas y de entender todos los conceptos que esto conlleva. Te aseguro que con un panoramama claro, podrás sacar adelante tu desarrollo.

Toma la respuesta de gnzsoloyo como un golpecito en la cabeza que te dice.... esto no es tan sencillo como parece y necesito estudiar bastante.

saludos
Si, se que no es nada facil y que puede llevar tiempo y requiere conocimientos
por eso tambien quiero aprender, voy a comenzar a intentar entender lo que me quiso decir @gnzsoloyo y voy a ver si puedo solucionarlo.


Gracias a todos los que me respondieron este tema.

Saludos.
  #15 (permalink)  
Antiguo 12/04/2011, 08:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Busqueda en MySQL

Un vistazo básico y explicado como para entenderlo de forma accesible lo puedes encontrar en estos artículos de Wikipedia (el resto de la literatura es más técnica):
Modelo relacional
Modelo Entidad-Relación
Base de datos relacional

Hay algunos tutoriales en Maestros del Web, que puedes leer y son bastante buenos.

Ten paciencia. No es dificil, simplemente es diferente a lo que has visto en programación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: php, busquedas
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 08:51.