Foros del Web » Programando para Internet » PHP »

Buscar coincidencias desde tabla mysql y reemplazar

Estas en el tema de Buscar coincidencias desde tabla mysql y reemplazar en el foro de PHP en Foros del Web. Hola amigos... a ver si algun experto me puede hechar luz sobre una duda. Tengo una base de datos con dos tablas: Textos: +--------------------------------------------------------------+ | ...
  #1 (permalink)  
Antiguo 19/09/2012, 15:40
 
Fecha de Ingreso: febrero-2009
Ubicación: Cordoba, Argentina
Mensajes: 9
Antigüedad: 13 años, 6 meses
Puntos: 0
Buscar coincidencias desde tabla mysql y reemplazar

Hola amigos...

a ver si algun experto me puede hechar luz sobre una duda.
Tengo una base de datos con dos tablas:

Textos:

+--------------------------------------------------------------+
| id | texto |
+----+---------------------------------------------------------+
| 1 | Este es un texto que escribio Juan Perez a Luis Gonzalez |
+----+---------------------------------------------------------+


Personas:

+----------------------------------------+
| id | nombre |
+----+-----------------------------------+
| 1 | juan perez |
+----+-----------------------------------+
| 2 | luis gonzalez |
+----+-----------------------------------+




Objetivo:
Mediante una consulta (Select * from Textos... etc) extraigo el texto para mostrarlo (formateado con css en un html)
Busco establecer la manera de que busque en toda la tabla "Personas" y me reemplace la salida de "texto" por algo asi:

Código HTML:
Ver original
  1. "Este es un texto que escribio <a href="ver.php?id=1">Juan Perez</a>para <a href="ver.php?id=2">Luis Gonzalez</a>"

He probado con str_replace() pero buscando una sola palabra, pero quiero buscar en varias (todos los registros de una tabla)...
Alguien me puede dar una orientacion por que camino tomar?

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 19/09/2012, 18:28
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.339
Antigüedad: 12 años, 6 meses
Puntos: 177
Respuesta: Buscar coincidencias desde tabla mysql y reemplazar

Yo lo haría poniendo el id del usuario en un nuevo campo en la tabla user, entonces relacionas las 2 tablas,
SELECT * FORM textos
JOIN personas ON textos.id_user = personas.id

de esa manera sabrás del quien es cada texto, y podrás imprimir el nombre usando el campo nombre
__________________
la la la
  #3 (permalink)  
Antiguo 19/09/2012, 18:38
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 14 años
Puntos: 2236
Respuesta: Buscar coincidencias desde tabla mysql y reemplazar

Estás tratando de hacer algo como las menciones en twitter o facebook?

En twitter es relativamente fácil porque tienes la @ como punto de partida para saber si hay menciones o no, sólo las buscas con una expresión regular, verificas que sea usuario válido y realizas el reemplazo.

En facebook se hace conforme vas escribiendo, con "autocompletado AJAX".

Buscar nombres en todo el texto y comparar con la base de datos, creo podría llegar a ser muy pesado y lento; lo mismo si lees todos los usuarios y recorres para reemplazar, con pocos usuarios tal vez podría funcionar, pero si el sitio llega a tener muchos usuarios y actividad, no lo creo posible.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 19/09/2012, 18:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 4 meses
Puntos: 2534
Respuesta: Buscar coincidencias desde tabla mysql y reemplazar

Además que tal si uso un nombre como parte del mensaje sin querer mencionar a nadie.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 19/09/2012, 23:46
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 10 años, 4 meses
Puntos: 33
Respuesta: Buscar coincidencias desde tabla mysql y reemplazar

Hola

Sería posible que ampliaras la tabla de la base de datos?

Una solución que me ha venido a la cabeza a priori es la siguiente:

Crea una tabla intermedia que relaciones textos con menciones, por ejemplo:

Tabla mention:

Código:
Texto | User | In | Fin |
Podrías guardar algo así (no se si puedes hacerlo en el momento de insertar el texto en la base de datos, y luego reemplazar con substr() en php, obteniendo los valores de "In" y "Fin".

Es un poco "chapuza" pero a priori y sin saber cómo funciona tu sistema web es lo primero que se me ha ocurrido

Espero te sirva

Saludos

Etiquetas: coincidencias, html, mysql, reemplazar, registro, tabla
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 21:31.