Foros del Web » Programando para Internet » PHP »

Extraer cadena de texto de MysQl con PHP

Estas en el tema de Extraer cadena de texto de MysQl con PHP en el foro de PHP en Foros del Web. Hola amigos, tuve la necesidad de convertir un arreglo en texto con 'implode' para poder guardar ese arreglo como texto en mi base de datos ...
  #1 (permalink)  
Antiguo 25/02/2014, 10:17
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Extraer cadena de texto de MysQl con PHP

Hola amigos, tuve la necesidad de convertir un arreglo en texto con 'implode' para poder guardar ese arreglo como texto en mi base de datos y me funcionó bien. de modo que lo que inserto en X campo queda de la siguiente manera:

+----------------------------------+---------
| cod_vict |
+----------------------------------+--------
| 10,11,12,13,14,15,16,17,18,19,20 |
+----------------------------------+---------

Ahora quiero extraer esos datos para imprimirlos por pantalla mostrando los códigos que aparecen arriba y su respectiva descripción.

Lo estoy tratando de hacer de la siguiente manera pero solo me muestra el primer dato, osea me muestra el
Código HTML:
Ver original
  1. 10

Dejo mi codigo si por favor alguien me puede guiar o colaborar:

Código PHP:
Ver original
  1. <?php include ("../conex.php");?>
  2. <?php
  3.         $sql="SELECT cabeza_fam.cod_cabeza_fam,cabeza_fam.cod_vict,victimizante.cod_vict
  4.               FROM cabeza_fam,victimizante
  5.               WHERE cabeza_fam.cod_vict=victimizante.cod_vict AND cod_cabeza_fam=56
  6.        ";
  7.         $result=mysql_query($sql,$link);
  8.         echo "<table width=80% border><tr><td>cod_vict</td>";
  9.         while($row=mysql_fetch_object($result)){
  10.     echo str_replace(',', '<br />', $row->cod_vict);    
  11.         echo "</table>";  }
  12.  
  13. ?>
  #2 (permalink)  
Antiguo 25/02/2014, 11:22
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Extraer cadena de texto de MysQl con PHP

Me parece que cabeza_fam.cod_vict y victimizante.cod_vict están entrando en conflicto, sería mejor que en la consulta le des un alias a cada campo.

Código MySQL:
Ver original
  1.     cabeza_fam.cod_cabeza_fam, cabeza_fam.cod_vict AS cab_codVict, victimizante.cod_vict AS vict_codVict
  2.     cabeza_fam, victimizante
  3.     cab_codVict = vict_codVict
  4.     cod_cabeza_fam = 56

De este modo, los datos de cabeza_fam.cod_vict y victimizante.cod_vict los imprimirás así:

Código PHP:
Ver original
  1. echo $row->cab_codVict; //cabeza_fam.cod_vict
  2. echo $row->vict_codVict; //victimizante.cod_vict

Y aplicas el reemplazo de las comas por el salto de línea en la variable que corresponda.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 25/02/2014, 12:16
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Extraer cadena de texto de MysQl con PHP

Hola gracias por tu sugerencia , ya lo hice pero ahora me sale este error:

Código HTML:
Ver original
  1. Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\SICA_WEB_VIOTA\sistema\informes\extraer_array.php on line 9
  #4 (permalink)  
Antiguo 25/02/2014, 12:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Extraer cadena de texto de MysQl con PHP

Muéstranos el código actualizado y el de la línea 9 del archivo extraer_array.php. Si quieres que te ayudemos, acostúmbrate a brindar la información completa, por favor.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 25/02/2014, 12:41
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Extraer cadena de texto de MysQl con PHP

Código PHP:
Ver original
  1. <?php include ("../conex.php");?>
  2. <?php
  3.         $sql="SELECT cabeza_fam.cod_cabeza_fam,cabeza_fam.cod_vict AS cab_codVict,victimizante.cod_vict AS vict_codVict
  4.               FROM cabeza_fam,victimizante
  5.               WHERE cab_codVict=vict_codVict AND cod_cabeza_fam = 56
  6.        ";
  7.         $result=mysql_query($sql,$link);
  8.         echo "<table width=80% border><tr><td>cod_vict</td>";
  9.         while($row=mysql_fetch_object($result)){
  10.         //echo "<tr><td> $row->cod_vict</tr>";    
  11.         //echo str_replace(',', '<br />', $row->cod_vict);
  12.         echo str_replace(',', '<br />', $row->cab_codVict);
  13.         echo str_replace(',', '<br />', $row->vict_codVict);
  14.         echo "</table>";  }
  15.  
  16. ?>
  #6 (permalink)  
Antiguo 25/02/2014, 12:50
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Extraer cadena de texto de MysQl con PHP

Si lo que pasa es que la tabla 'victimizante' esta relacionada con la tabla 'cabeza_fam'. En 'cabeza_fam' guardo muchos datos entre estos 'cod_vict' osea, el codigo del hecho victimizante. Por lo tanto, al querer mostrar los datos del formulario debo ir hasta la tabla 'victimizante' para extraer el detalle o descripción del hecho victimizante. por ejemplo:

codigo descripcion

10 Abandono o despojo forzado de tierras
11 Actos terroristas
  #7 (permalink)  
Antiguo 25/02/2014, 12:51
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Extraer cadena de texto de MysQl con PHP

Y de todas esas líneas de código, ¿cuál es la que corresponde con la línea número 9 del archivo extraer_array.php que es la que se indica en el mensaje de alerta?

Y solamente para descartar errores en la consulta, pruébala en phpMyadmin para ver si devuelve los resultados esperados.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 25/02/2014 a las 12:59
  #8 (permalink)  
Antiguo 25/02/2014, 13:30
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Extraer cadena de texto de MysQl con PHP

Hola mirala linea numero 9 de mi editor de texto es
Código MySQL:
Ver original
  1. while($row=mysql_fetch_object($result)){

Hice la siguiente consulta en php myadmin

Código MySQL:
Ver original
  1. SELECT cabeza_fam.cod_cabeza_fam,cabeza_fam.cod_vict AS cab_codVict,victimizante.cod_vict AS vict_codVict             FROM cabeza_fam,victimizante  WHERE cab_codVict=vict_codVict AND cod_cabeza_fam = 56

Y me salio el siguiente error:

Código HTML:
Ver original
  1. #1054 - Unknown column 'cab_codVict' in 'where clause'
  #9 (permalink)  
Antiguo 25/02/2014, 13:32
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Extraer cadena de texto de MysQl con PHP

Mira la imagen es este link., se ve mejor

http://www.subirimagenes.net/i/140225083924393916.png
  #10 (permalink)  
Antiguo 25/02/2014, 15:14
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Extraer cadena de texto de MysQl con PHP

Creo que cometí un error en la condición de la consulta. Prueba con esto:

Código MySQL:
Ver original
  1.     cabeza_fam.cod_cabeza_fam, cabeza_fam.cod_vict AS cab_codVict, victimizante.cod_vict AS vict_codVict
  2.     cabeza_fam, victimizante
  3.     cabeza_fam.cod_vict = victimizante.cod_vict
  4.     cod_cabeza_fam = 56
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 25/02/2014, 22:58
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Extraer cadena de texto de MysQl con PHP

Hola Alexis gracias. Disculpa abusar de tu confianza pero es que lo necesito. Resulta que necesito traer de la tabla 'victimizante' el detalle o descipcion de los codigos y como en la consulta que me ayudaste a plantear me trae los codigos pense que era asi de simple tambien traer las descripciones pero no.

Mira como lo estoy tratando de hacer:

Código PHP:
Ver original
  1. <?php include ("../conex.php");?>
  2. <?php
  3.         $sql="SELECT cabeza_fam.cod_cabeza_fam,cabeza_fam.cod_vict AS cab_codVict,victimizante.cod_vict AS vict_codVict,victimizante.dtalle_vict AS Victima_detalle
  4.               FROM cabeza_fam,victimizante
  5.               WHERE cabeza_fam.cod_vict = victimizante.cod_vict AND cod_cabeza_fam = 56
  6.        ";
  7.         $result=mysql_query($sql,$link);
  8.         echo "<table width=50% border><tr><td>cod_vict</td><td>Descripcion</td></tr>";
  9.         while($row=mysql_fetch_object($result)){
  10.         echo "<tr><td>".str_replace(',', '<br />', $row->cab_codVict)."</td>";
  11.         echo "<td>". str_replace(',', '<br />', $row->Victima_detalle)."</td></tr>";
  12.  
  13.         echo "</table>";  }
  14.  
  15. ?>

Pues en eralidad si me trae el detalle pero de solo el primer numero que aparece en la imagen que es el 10, de resto queda en blanco. me podrias sugerir algo por favor para que aparezan todos con su respectiva descipcion.

http://www.subirimagenes.net/i/140226060435220374.png
  #12 (permalink)  
Antiguo 25/02/2014, 23:52
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Extraer cadena de texto de MysQl con PHP

Te puedes apoyar utilizando la función FIND_IN_SET() de MySQL.

Código MySQL:
Ver original
  1.     cabeza_fam.cod_cabeza_fam, cabeza_fam.cod_vict AS cab_codVict, victimizante.cod_vict AS vict_codVict, victimizante.dtalle_vict AS Victima_detalle
  2.     cabeza_fam, victimizante
  3.     FIND_IN_SET(victimizante.cod_vict, cabeza_fam.cod_vict)    
  4.     cod_cabeza_fam = 56

Hice una prueba con dos tablas estructuradas de la siguiente manera:

Código Tablas:
Ver original
  1. TABLA A:
  2.     Id         Cod
  3.      1      1,2,3,4,5
  4.      2        6,7,8
  5.  
  6. TABLA B:
  7.     Id      Comentario
  8.      1         Uno
  9.      2         Dos
  10.      3         Tres
  11.      4        Cuatro
  12.      5        Cinco
  13.      6         Seis
  14.      7        Siete
  15.      8         Ocho

Y con esta consulta:

Código MySQL:
Ver original
  1.     A.Cod, B.Comentario
  2.     B INNER JOIN A
  3.     FIND_IN_SET(B.Id, A.Cod)

Y obtuve este resultado:

Código HTML:
Ver original
  1. RESULTADO:
  2.       Cod        Comentario
  3.    1,2,3,4,5         Uno
  4.    1,2,3,4,5         Dos
  5.    1,2,3,4,5         Tres
  6.    1,2,3,4,5        Cuatro
  7.    1,2,3,4,5        Cinco
  8.      6,7,8           Seis
  9.      6,7,8          Siete
  10.      6,7,8           Ocho

No sé si buscas obtener un resultado similar, supongo que sí, de cualquiera manera debes analizar el código que te estoy proporcionando para adaptarlo a tus necesidades.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 25/02/2014 a las 23:59
  #13 (permalink)  
Antiguo 26/02/2014, 07:43
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Extraer cadena de texto de MysQl con PHP

hola alexis una pregunta, ¿por que hubo la necesidad de darle un alias a cada variable para que funcionara la consulta? ¿exactamente para que funciona el FIND_IN_SET()?

Oye el FIND_IN_SET() funciono muy bien. lo que pasa es que cuando consulto todos los registros de la tabla 'cabeza_fam' me salen registros repetidos ya que por ejemplo una persona puede tener varios hechos victimizantes, por ejemplo el usuario jose tito tiene 10,11,12,13,14,15,16,17,18,19,20 por lo tanto al consultar todos los registros se va a repetir 11 veces el usuario en la consulta, 'Blanca rozo' tiene dos hechos victimizantes 16,17 porlo tanto se repite en en dos filas.

Bueno para ilustrar mejor lo que pasa voy a dejar el codigo y una imagen de los resultados:


Código PHP:
Ver original
  1. <?php include ("../conex.php");?>
  2. <?            
  3.         $sql="SELECT cabeza_fam.cod_cabeza_fam,cabeza_fam.cod_vict AS cab_codVict,victimizante.cod_vict AS vict_codVict,victimizante.dtalle_vict,
  4.                      cabeza_fam.nombres_cab,apellidos_cab
  5.               FROM cabeza_fam,victimizante
  6.               WHERE FIND_IN_SET(victimizante.cod_vict,cabeza_fam.cod_vict)  
  7.        ";
  8.         $result=mysql_query($sql,$link);
  9.         echo "<table width=50% border=0 align=center cellpadding=1 cellspacing=1><tr>
  10.         <td colspan=2 bgcolor=#CEE3F6 class=titulos2><b><center>codigo</center></b></td>
  11.         <td colspan=2 bgcolor=#CEE3F6 class=titulos2><b><center>Descripcion</center></b></td>
  12.         <td colspan=2 bgcolor=#CEE3F6 class=titulos2><b><center>Nombres</center></b></td>";
  13.         while($row=mysql_fetch_object($result)){
  14.         echo "<tr><td colspan=2 bgcolor=#F2F5A9 class=titulos2 align=left>".str_replace(',', '<br />', $row->vict_codVict)."</td>
  15.        <td colspan=2 bgcolor=#F2F5A9 class=titulos2 align=left>$row->dtalle_vict</td>
  16.        <td colspan=2 bgcolor=#F2F5A9 class=titulos2 align=left>$row->nombres_cab $row->apellidos_cab</td></tr>";    
  17.         }
  18.         echo "</table>";
  19.        
  20.         ?>


Imagen
http://www.subirimagenes.net/i/140226042754225246.png

Última edición por andre___5025; 26/02/2014 a las 09:22
  #14 (permalink)  
Antiguo 26/02/2014, 10:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Extraer cadena de texto de MysQl con PHP

Según el manual oficial de MySQL:

Cita:
Iniciado por Manual oficial de MySQL
FIND_IN_SET(str,strlist)

Retorna un valor en el rango de 1 a N si la cadena str está en la lista de cadenas strlist consistente de N subcadenas. Una lista de cadenas es una cadena compuesta de subcadenas separadas por caracteres ',' . Si el primer argumento es una cadena constante y el segundo es una columna de tipo SET, la función FIND_IN_SET() está optimizada para usar aritmética de bit. Retorna 0 si str no está en strlist o si strlist es la cadena vacía. Retorna NULL si algún argumento es NULL. Esta función no funciona apropiadamente si el primer argumento contiene un carácter de coma (',') .
Los alias son para que evitar conflictos entre los campos de una tabla y otra que tengan el mismo nombre.

Como los códigos cod_vict de ambas tablas son los mismos, en lugar de mostrar la lista de códigos de la primera tabla (los valores separados por comas), mejor muestra el del que tiene la descripción, al fin y al cabo, es el mismo número.

Por ejemplo, aplicando esto al ejemplo que mostré:

Código MySQL:
Ver original
  1.     B.Id, B.Comentario
  2.     B INNER JOIN A
  3.     FIND_IN_SET(B.Id, A.Cod)

Obtengo lo siguiente:

Código HTML:
Ver original
  1. RESULTADO:
  2.       Cod        Comentario
  3.        1            Uno
  4.        2            Dos
  5.        3            Tres
  6.        4           Cuatro
  7.        5            Cinco
  8.        6            Seis
  9.        7            Siete
  10.        8            Ocho

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 26/02/2014 a las 10:37
  #15 (permalink)  
Antiguo 26/02/2014, 11:30
 
Fecha de Ingreso: septiembre-2013
Ubicación: Bogota
Mensajes: 139
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Extraer cadena de texto de MysQl con PHP

Hola alexis. mira esta aimagen por favor:

http://www.subirimagenes.net/i/140226063244355748.png

¿Existe alguna forma de que por ejemplo, en el usuario 'Jose Tito Linares' que tiene varios hechos victimizantes
10
11
12
13
14
15
16
17
18
19
20
En el campo descripcion me aparezcan todas las descripciones del respectivo codigo?
es que solo me aparece la primera . Mira el codigo de la magen es este

Código PHP:
Ver original
  1. <?php include ("../conex.php");?>
  2. <?            
  3.    $sql="SELECT cabeza_fam.cod_cabeza_fam,cabeza_fam.cod_vict AS cab_codVict,victimizante.cod_vict AS vict_codVict,victimizante.dtalle_vict,
  4.                      cabeza_fam.nombres_cab,apellidos_cab
  5.               FROM cabeza_fam,victimizante
  6.               WHERE FIND_IN_SET(victimizante.cod_vict,cabeza_fam.cod_vict) GROUP BY cod_cabeza_fam
  7.        ";
  8.         $result=mysql_query($sql,$link);
  9.         echo "<table width=50% border=0 align=center cellpadding=1 cellspacing=1><tr>
  10.         <td colspan=2 bgcolor=#CEE3F6 class=titulos2><b><center>codigo</center></b></td>
  11.         <td colspan=2 bgcolor=#CEE3F6 class=titulos2><b><center>Descripcion</center></b></td>
  12.         <td colspan=2 bgcolor=#CEE3F6 class=titulos2><b><center>Nombres</center></b></td>";
  13.         while($row=mysql_fetch_object($result)){
  14.         echo "<tr><td colspan=2 bgcolor=#F2F5A9 class=titulos2 align=left>".str_replace(',', '<br />', $row->cab_codVict)."</td>
  15.        <td colspan=2 bgcolor=#F2F5A9 class=titulos2 align=left>$row->dtalle_vict</td>
  16.        <td colspan=2 bgcolor=#F2F5A9 class=titulos2 align=left>$row->nombres_cab $row->apellidos_cab</td></tr>";    
  17.         }
  18.         echo "</table>";
  19.        
  20.         ?>
  #16 (permalink)  
Antiguo 26/02/2014, 12:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Extraer cadena de texto de MysQl con PHP

Dos cosas:

En lugar de esto:

Código PHP:
Ver original
  1. echo "<tr><td colspan=2 bgcolor=#F2F5A9 class=titulos2 align=left>" . str_replace(',', '<br />', $row->cab_codVict) . "</td>

Pon esto:

Código PHP:
Ver original
  1. echo "<tr><td colspan=2 bgcolor=#F2F5A9 class=titulos2 align=left>" . $row->vict_codVict . "</td>

Así imprimirás el código correspondiente a cada detalle. Otra cosa más; si los datos que agrupaste con comas tienen espacios en medio, no va a funcionar bien, deben estar juntos como en 1,2,3,4,5.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: cadena, mysql, select, sql
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 13:37.