Foros del Web » Programando para Internet » PHP »

Extraer datos de un campo en MySQL usando PHP

Estas en el tema de Extraer datos de un campo en MySQL usando PHP en el foro de PHP en Foros del Web. Hola amigos, bueno un poco complicada la pregunta pero hay les va. Tengo un campo en mi base de datos llamado "comentarios" alli guardo los ...
  #1 (permalink)  
Antiguo 11/12/2013, 16:03
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 14 años
Puntos: 7
Extraer datos de un campo en MySQL usando PHP

Hola amigos, bueno un poco complicada la pregunta pero hay les va.

Tengo un campo en mi base de datos llamado "comentarios" alli guardo los comentarios de mis usuarios y dentro del comentario un código de identificación que aparece al final del comentario. El problema es que este codigo se ha guardado junto al contenido del comentario en el campo "comentarios".

Ej: Hola mundo, mi nombre es Jonh. Code:847345625865782546 (Todos los codigos empiezan asi tienen la misma cantidad de caracteres)

Este codigo se sopone que debio guardarse en un campo diferente

Mi problema es que ahora quiero guardar ese codigo en un campo diferente, pero actualmente hay 1,500 comentarios y sacarlos uno por uno para meternos en otro campo no sera nada facil.

Mi prenguta! Existe la posibilidad de crear un script que detecte ese codigo dentro del contenido del comentario y lo suba a otro campo.

Cualquier ayuda sera bienvenida!

Saludos!
  #2 (permalink)  
Antiguo 11/12/2013, 17:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Extraer datos de un campo en MySQL usando PHP

Cita:
Iniciado por shamaka Ver Mensaje
Tengo un campo en mi base de datos llamado "comentarios" alli guardo los comentarios de mis usuarios y dentro del comentario un código de identificación que aparece al final del comentario. El problema es que este codigo se ha guardado junto al contenido del comentario en el campo "comentarios".

Ej: Hola mundo, mi nombre es Jonh. Code:847345625865782546 (Todos los codigos empiezan asi tienen la misma cantidad de caracteres)

Este codigo se sopone que debio guardarse en un campo diferente
Basicamente metiste la pata a lo grande al insertar los datos y ahora hay que repararlo... ¿Es así?

Bueno, si, hay forma, más de una en realidad, así que dependerá de cómo lo quieres hacer: ¿Con SQL o con PHP? Porque de las dos se puede.

Por otro lado, ¿reparaste el script mal escrito que hizo que dos datos se metieran en el mismo campo de la tabla? ¿O sigue guardando basura?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/12/2013, 17:42
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 14 años
Puntos: 7
Respuesta: Extraer datos de un campo en MySQL usando PHP

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Basicamente metiste la pata a lo grande al insertar los datos y ahora hay que repararlo... ¿Es así?

Bueno, si, hay forma, más de una en realidad, así que dependerá de cómo lo quieres hacer: ¿Con SQL o con PHP? Porque de las dos se puede.

Por otro lado, ¿reparaste el script mal escrito que hizo que dos datos se metieran en el mismo campo de la tabla? ¿O sigue guardando basura?
Gracias por responder man, bueno el tema el Script ya esta arreglado. Los codigos a partir de ayer se guardan en otro campo. PHP, MySQL me da lo mismo, lo que no quiero es tener que buscarlos y moverlos uno por uno
  #4 (permalink)  
Antiguo 11/12/2013, 17:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Extraer datos de un campo en MySQL usando PHP

Bueno, desde el SQL, hay varias formas de lograrlo, por lo que te pasaré un modo. Desde PHP puro, la lógica es parecida, pero deberás iterar todos los registros de una consulta dada para actualizarlos de a uno.
Suponiendo que ese texto está en un campo llamado "comentario", y que el número debe ir en otro llamado código, podríamos hacerlo así de la siguiente forma.

Primero separamos el codigo al otro campo:
Código MySQL:
Ver original
  1. UPDATE tabla
  2. SET codigo = RIGHT(comentario, 18)
  3. WHERE LEFT(RIGHT(comentario, 23), 5) = 'Code:';
Luego eliminamos todo lo referente al código del campo:
Código MySQL:
Ver original
  1. UPDATE tabla
  2. SET comentario = LEFT(comentario, (LENGTH(comentario) - 23))
  3. WHERE LEFT(RIGHT(comentario, 23), 5) = 'Code:';

Por supuesto, antes de ejecutar esto habría que tomarse el tiempo de comprobar que la condición puesta en este WHERE funciona correctamente, para lo cual sería bueno que probaras un SELECT con igual condición:
Código MySQL:
Ver original
  1. FROM tabla
  2. WHERE LEFT(RIGHT(comentario, 23), 5) = 'Code:';

Esta consulta debería devolver sólo aquellos registros que deben ser modificados. Pruébalo y me dices.

Nota final: Las dos sentencias deben hacerse separadamente y en el mismo orden en que las he puesto, o perderás todos los códigos.
¿Queda claro?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 11/12/2013, 18:00
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 14 años
Puntos: 7
Respuesta: Extraer datos de un campo en MySQL usando PHP

Excelente hermano, ahora lo pruebo!!!
  #6 (permalink)  
Antiguo 11/12/2013, 18:31
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 14 años
Puntos: 7
Respuesta: Extraer datos de un campo en MySQL usando PHP

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, desde el SQL, hay varias formas de lograrlo, por lo que te pasaré un modo. Desde PHP puro, la lógica es parecida, pero deberás iterar todos los registros de una consulta dada para actualizarlos de a uno.
Posiblemente has escuchado mucho esto, pero soy muy novato. He intentado usarlo con PHP pero no me funciona, podrías ayudarme a traducirlo ???

Lo he intentado asi:

Código PHP:
mysql_query("SELECT *
FROM users
WHERE LEFT(RIGHT(test, 23), 5) = 'Code:'"
); 
Claro, con el codigo de conexion a la base de datos.
  #7 (permalink)  
Antiguo 11/12/2013, 18: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: 17 años
Puntos: 2658
Respuesta: Extraer datos de un campo en MySQL usando PHP

Prueba primero manualmente en phpMyadmin. Es más sencillo.
De hecho, estas son tareas que no se deben hacer por programación, sino con una interfaz para usar SQL puro, como precisamente esa.
Es lo que se suele denominar tareas administrativas de base de datos.
__________________
¿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/12/2013, 19:23
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 14 años
Puntos: 7
Respuesta: Extraer datos de un campo en MySQL usando PHP

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Prueba primero manualmente en phpMyadmin. Es más sencillo.
De hecho, estas son tareas que no se deben hacer por programación, sino con una interfaz para usar SQL puro, como precisamente esa.
Es lo que se suele denominar tareas administrativas de base de datos.
Oka man, deja pruebo y te cuento como me fue
  #9 (permalink)  
Antiguo 11/12/2013, 19:26
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 14 años
Puntos: 7
Respuesta: Extraer datos de un campo en MySQL usando PHP

Lo he intentado, me ha salido esto:


MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). (La consulta tardó 0.0029 seg)
  #10 (permalink)  
Antiguo 11/12/2013, 19:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Extraer datos de un campo en MySQL usando PHP

Cita:
Iniciado por shamaka Ver Mensaje
Lo he intentado, me ha salido esto:


MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). (La consulta tardó 0.0029 seg)
Eso significaría que los registros no contienen lo que supones que tienen...
¿Podrías postear un conjunto de registros que cumplan con el problema? Como ejemplo para ver mejor cómo están en este momento, y ver lo que realmente hay 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)
  #11 (permalink)  
Antiguo 11/12/2013, 19:50
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 14 años
Puntos: 7
Respuesta: Extraer datos de un campo en MySQL usando PHP

Ok. Las pruebas las estoy haciendo a pequeña escala, pero la tabla original es asi:

Tebla = users

Colunnas = ID - nombre - apellido - password - comentarios - usuario - fechaR - codigo; Este ultima recien añadida (Para guardar el codigo del que hablamos)


Uno de los registro seria asi:

ID: 1

Nombre: Jonh

Apellido: Smit

Password: 12345

Comentarios: Hola, me acabo de registrar, gracias por sus servicios. Code:847345625865782546

fechaR (Fecha de registro): 01-12-2013

Eso es todo lo que hay en esa tabla. Ese "Code:XXXXXXX" que esta mas arriba, se mezclo con el comentario, justo ese es el error, lo que debo hacer es sacar todos los codigos de todos los comentarios para meterlos en su campo correcto.

Agredezco mucho la ayuda de ante mano man
  #12 (permalink)  
Antiguo 11/12/2013, 20:33
 
Fecha de Ingreso: noviembre-2010
Mensajes: 116
Antigüedad: 14 años
Puntos: 7
Respuesta: Extraer datos de un campo en MySQL usando PHP

Hey man, he estado probando y te cuento que lo que me has dado hace justo la funcion que necesito! Pero hay un problema, que solo ejecuta la funcion cuando: Code:847345625865782546 esta solo en el campo, si tiene mas contenido no funciona. :( Esto pues me deja a mitad de camino jejejeje
  #13 (permalink)  
Antiguo 12/12/2013, 06:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Extraer datos de un campo en MySQL usando PHP

Veo muy, pero muy difícil que suceda lo que dices... Básicamente imposible.
Mira, RIGHT(string, length) devuelve los length caracteres de string a partir de la derecha, lo que si la longitud de tu parte numérica es constante, deberían ser 23.
LEFT(I]string[/I], length) hace lo mismos, pero desde la izquierda, y LENGTH() devuelve la longitud real en caracteres.
Con ese esquema, si lo razonas, no debería haber fallo.
De todos modos, podemos hacer lo siguiente, que será algo más sencillo, aunque la sintaxis parezca no serlo.

Prueba esto:
Código MySQL:
Ver original
  1.     comentario comentarioCompleto,  
  2.     SUBSTRING_INDEX(comentario, 'Code:', -1) ParteCodigo,
  3.     SUBSTRING_INDEX(comentario, 'Code:', 1) ParteComentario
  4. FROM users
  5. WHERE LOCATE(comentario, 'Code:') > 0;

Y si funciona bien, hacemos esto:
Código MySQL:
Ver original
  1. UPDATE tabla
  2. SET codigo = SUBSTRING_INDEX(comentario, 'Code:', -1)
  3. WHERE LOCATE(comentario, 'Code:') > 0;

Código MySQL:
Ver original
  1. UPDATE tabla
  2. SET comentario = SUBSTRING_INDEX(comentario, 'Code:', 1)
  3. WHERE LOCATE(comentario, 'Code:') > 0;

Siempre en phpMyadmin, por supuesto
__________________
¿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: campo, mysql, usando, 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




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