Foros del Web » Programando para Internet » PHP »

Arrays y REPLACE()

Estas en el tema de Arrays y REPLACE() en el foro de PHP en Foros del Web. Estimados, Antes que nada quisiera comunicar que esto parece ser mas de MySQL pero la verdad creo que pertenece mas a PHP, si estoy mal ...
  #1 (permalink)  
Antiguo 12/07/2011, 16:26
Avatar de function  
Fecha de Ingreso: abril-2010
Mensajes: 278
Antigüedad: 14 años
Puntos: 13
Arrays y REPLACE()

Estimados,

Antes que nada quisiera comunicar que esto parece ser mas de MySQL pero la verdad creo que pertenece mas a PHP, si estoy mal ruego mover este post a donde corrsponde.

Tengo lo siguiente:
Código PHP:
Ver original
  1. //arrays con contendio a cambiar
  2. $one = array('Montreal','Canada');
  3. $two = array('<strong>Montreal</strong>','<strong>Canada</strong>');
  4. $sql = mysql_query("UPDATE comentarios SET articulos=REPLACE(articulos,'???','???')."')");

como puedo cambiar las palabras que tengo dentro de un array (el array en realidad tiene casi 150 palabras pero pongo estas dos como ejemplo), la verdad es que no me sale, no coge las palabras, será que no se hacer bien la concatenación?

Ayuda porfa
__________________
~# echo Hemos logrado la independencia, pero no la libertad >> SimonBolivar
  #2 (permalink)  
Antiguo 12/07/2011, 19:04
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Arrays y REPLACE()

La verdad que no entiendo lo que querás hacer
__________________
la la la
  #3 (permalink)  
Antiguo 13/07/2011, 10:39
Avatar de function  
Fecha de Ingreso: abril-2010
Mensajes: 278
Antigüedad: 14 años
Puntos: 13
Respuesta: Arrays y REPLACE()

Cita:
Iniciado por truman_truman Ver Mensaje
La verdad que no entiendo lo que querás hacer

No se que parte no se entiende?

A ver si me hago entender mejor:

Tengo un listado de palabras (mas de 150) las cuales quiero reemplazar dentro de la base de datos mediante REPLACE(), pero REPLACE() me deja hacerlo solamete mediante palabra por palabra o caracter por caracter, es decir:

REPLACE(articulo, 'hola', 'adios') // cambio todos los hola por adios dentro del campo articulo

pero la idea es cambiar las 150 palabras que tengo dentro de un array por otras que tengo dentro de otro array, es decir:

Código PHP:
Ver original
  1. $one = array('Montreal','Canada');
  2. $two = array('<strong>Montreal</strong>','<strong>Canada</strong>');

como hago para poner esos dos arrays dentro del REPLACE(articulo, $one, $two) // asi no hace nada y no funciona

Me hice entender ahora?
__________________
~# echo Hemos logrado la independencia, pero no la libertad >> SimonBolivar
  #4 (permalink)  
Antiguo 13/07/2011, 10:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Arrays y REPLACE()

Lo que pasa es que quieres mezclar los dos lenguajes y eso es imposible, PHP solamente puede generar lenguaje SQL, pero no puedes decirle que genere un SQL que lea variables de PHP, es imposible.

Lo único que puedes hacer (desde PHP) es iterar por todos los registros que tienes y uno a uno ir haciendo el replace (usando str_replace) y luego guardando en la base de datos el resultado.

Saludos.
  #5 (permalink)  
Antiguo 13/07/2011, 11:04
Avatar de function  
Fecha de Ingreso: abril-2010
Mensajes: 278
Antigüedad: 14 años
Puntos: 13
Respuesta: Arrays y REPLACE()

Cita:
Iniciado por GatorV Ver Mensaje
Lo que pasa es que quieres mezclar los dos lenguajes y eso es imposible, PHP solamente puede generar lenguaje SQL, pero no puedes decirle que genere un SQL que lea variables de PHP, es imposible.

Lo único que puedes hacer (desde PHP) es iterar por todos los registros que tienes y uno a uno ir haciendo el replace (usando str_replace) y luego guardando en la base de datos el resultado.

Saludos.

Agradezco tu respuesta GatorV,
Me propones que haga perimeo un select:
Código PHP:
Ver original
  1. echo str_replace($one,$two,$echo['contenido']);

y despues o inmediatamente hacer el UPDATE?
__________________
~# echo Hemos logrado la independencia, pero no la libertad >> SimonBolivar
  #6 (permalink)  
Antiguo 13/07/2011, 11:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Arrays y REPLACE()

Yo pienso que tienes dos alternativas, una la que ya te menciono GatorV, que consiste en extraer el valor de la BD y hacer todos los reemplazos con PHP para posteriormente actualizar la BD.

Otra, es generar la cadena de SQL requerida para hacer todos los reemplazos.

Esta segunda técnica tiene la ventaja de que afecta a todos los registros con una sola consulta, mientras que la primera extrae uno a uno los resultados y actúa en consecuencia.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 13/07/2011, 11:10
Avatar de function  
Fecha de Ingreso: abril-2010
Mensajes: 278
Antigüedad: 14 años
Puntos: 13
Respuesta: Arrays y REPLACE()

Cita:
Iniciado por pateketrueke Ver Mensaje
Yo pienso que tienes dos alternativas, una la que ya te menciono GatorV, que consiste en extraer el valor de la BD y hacer todos los reemplazos con PHP para posteriormente actualizar la BD.

Otra, es generar la cadena de SQL requerida para hacer todos los reemplazos.

Esta segunda técnica tiene la ventaja de que afecta a todos los registros con una sola consulta, mientras que la primera extrae uno a uno los resultados y actúa en consecuencia.
Exacto era lo que queria hacer, que afectara todos los registros con una sola ejecución, pero creo que debo hacerla como dijo GatorV una a una y ejecutar la consulta la cantidad de veces que tenga que reemplazar, cierto?, porque no hay manera de hacer la ejecución REPLACE() una sola vez pero los cambios de todos, por ende es mejor cambiar 155 veces que 5800 veces (cantidad de articulos inscritos), cierto?
__________________
~# echo Hemos logrado la independencia, pero no la libertad >> SimonBolivar
  #8 (permalink)  
Antiguo 13/07/2011, 11:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Arrays y REPLACE()

Lo que te dice Pateketrueke es generar la consulta con las "n" cantidades, quedaría algo así:
Código SQL:
Ver original
  1. UPDATE TABLE SET articulos = REPLACE(REPLACE(articulos, 'Montreal', '<strong>Montreal</strong>'), 'Canada', '<strong>Canada</strong>'))

Aunque creo que de esa forma solo puedes hacer 32 reemplazos (es decir encadenar 32 Replace).

Saludos.
  #9 (permalink)  
Antiguo 13/07/2011, 12:11
Avatar de function  
Fecha de Ingreso: abril-2010
Mensajes: 278
Antigüedad: 14 años
Puntos: 13
Respuesta: Arrays y REPLACE()

Cita:
Iniciado por GatorV Ver Mensaje
Lo que te dice Pateketrueke es generar la consulta con las "n" cantidades, quedaría algo así:
Código SQL:
Ver original
  1. UPDATE TABLE SET articulos = REPLACE(REPLACE(articulos, 'Montreal', '<strong>Montreal</strong>'), 'Canada', '<strong>Canada</strong>'))

Aunque creo que de esa forma solo puedes hacer 32 reemplazos (es decir encadenar 32 Replace).

Saludos.
Muchisimas gracias a los dos, lo intenaré, al menos 32 veces es menor que una a una, ya que asi generaré solo 5 o 6 ejecuciones en lugar de 150 o mas

Saludos y gracias nuevamente
__________________
~# echo Hemos logrado la independencia, pero no la libertad >> SimonBolivar

Etiquetas: arrays, mysql
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 18:55.