Foros del Web » Programando para Internet » PHP »

leer array de array?

Estas en el tema de leer array de array? en el foro de PHP en Foros del Web. Holas, investigando pude construir este codigo: <?php include("conex.php"); $link=Conectarse(); $SacandoDatos1=mysql_query("select * FROM datos1 ",$link); $campos = mysql_num_fields($SacandoDatos1); $borde=2; // esta linea es para ver acentos ...
  #1 (permalink)  
Antiguo 29/05/2010, 22:27
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
leer array de array?

Holas, investigando pude construir este codigo:

<?php
include("conex.php");
$link=Conectarse();

$SacandoDatos1=mysql_query("select * FROM datos1 ",$link);

$campos = mysql_num_fields($SacandoDatos1);
$borde=2;

// esta linea es para ver acentos y ñ
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
// para achicar el texto
echo "<style type=\"text/css\">
<!-- .body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 9px;
}--></style>";

echo "<body>";

echo "<table border=$borde>";

while($row=mysql_fetch_array($SacandoDatos1))
{
echo "<tr>";
for($c=0; $c<$campos; $c++)
{
echo "<td>".$row[$c]."</td>";
}
echo "</tr>";

}
echo "</table>";
echo "</body>";
?>

*********
funciona, me muestra todos los datos de mi tabla datos1, pero aqui viene mi pregunta, dentro de mi tabla datos1 tengo 2 campos que son array, eso no se como leerlos y mostrarlos en la tabla que muestro en html. ejemplo, uno de los campos es titulo (txt) y otro clave (array)

si los valores almacenados fueran:
titulo="casa"
clave="grande, nueva, madera"

al usar el codigo anterior me muestra:

casa array

y en ves de array quiero que salga: grande, nueva, madera
por favor alquien que me ilumine, gracias
  #2 (permalink)  
Antiguo 30/05/2010, 00:19
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: leer array de array?

Hola
Hay varios modos, intenta este
Código PHP:
Ver original
  1. for($c=0; $c<$campos; $c++)
  2. {
  3.    //ejemplo donde diremos que 4 es clave
  4.    if($c == 4)
  5.   {
  6.       for($d = 0; $d < count($row[$c]); $d++)
  7.      {
  8.          echo $row[$c][$d];
  9.      }
  10.   }
  11.   else
  12.   {
  13.      echo "<td>".$row[$c]."</td>";
  14.   }
  15. }

Si no funciona asi, entonces por favor comenta como guardas ese campo
especificamente, y si puedes adjuntar texto de como queda guardado
tanto mejor
saludos
  #3 (permalink)  
Antiguo 30/05/2010, 01:52
Avatar de eZakto  
Fecha de Ingreso: julio-2008
Mensajes: 214
Antigüedad: 15 años, 9 meses
Puntos: 5
Respuesta: leer array de array?

Con un foreach. Primero compruebas si el valor es un array o no. En caso de serlo, foreach:
Código PHP:
Ver original
  1. <?php
  2. if(is_array($campo))
  3. {
  4.     foreach($campo as $valor)
  5.     {
  6.         echo $valor . ', ';
  7.     }
  8. }
  9. else
  10. {
  11.     echo $campo;
  12. }
  13. ?>

Si campo es un texto, simplemente lo mostrará. Si es un array, lo recorrerá y por cada elemento lo mostrará seguido de una coma y un espacio.

Es un mero ejemplo, se puede mejorar.

Saludos.
__________________
eZakto™
  #4 (permalink)  
Antiguo 30/05/2010, 08:24
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
De acuerdo Respuesta: leer array de array?

Holas, gracias a los dos por responder, multiporgramador la respuesta no funciono, escribio un texto fuera de mi tabla, tampoco me dio error.

Asi es como recojo los valores en un formulario:

<input type="checkbox" name="clave[]" value="Agua" /> Agua <br />
.
.
.
<input type="checkbox" name="clave[]" value="Frio" /> Frio <br />

y asi lo paso a mi archivo que procesa los datos

$claves=$_POST['clave'];

y con esta sentencia los grabo en la base de datos:

$insertar_datos1 = mysql_query("insert into datos1(titulo, claves) values ('$titulo', '$claves')",$link);

cuando reviso la base de datos con phpadmin, en el campo clave veo la palabra array, creo recordar que llegue a utilizar implode para ver el contenido de ese campo, lamentablemente he perdido mis archivos con los que experimento, junto con mi computadora en un robo k hubo en mi casa, pero eso es otra historia.

Ezakato

no comprendo el codigo, se k es ilustrativo, pero me parece que los datos de mi tabla pasan por $row[ ] y en campos solo me ayuda a construir la tabla html y ubicar en cada celda el valor de $row, gracias de todas formas

Última edición por teksukamen; 30/05/2010 a las 09:47
  #5 (permalink)  
Antiguo 30/05/2010, 09:50
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: leer array de array?

Holas, se me ocurrio usar implode y modifique el codigo de esta manera:

Código PHP:
while($row=mysql_fetch_array($SacandoDatos1))  
{    
    echo 
"<tr>";    
     for(
$c=0$c<$campos$c++) 
     {   
         
$clave=$row[$c];
        if (
is_array($clave))
        {
            echo 
"<td>".implode($clave,", ")."</td>";
        }
        else {echo 
"<td>".$row[$c]."</td>";}
     }    
     echo 
"</tr>";          
     

inspirado claro en el codigo de ezakto, aun asi no me muestro el valor del array solo la palabra array... :(
  #6 (permalink)  
Antiguo 30/05/2010, 14:52
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: leer array de array?

Holas, pues con el codigo anterior me da este error:

Warning: implode() [function.implode]: Invalid arguments passed

Si uso el codigo de mortiprogramador solo me toma la primera letra del campo, es decir, solo muestra la letra A de la palabra Array y no el contenido del mismo. sigo investigando... saludos
  #7 (permalink)  
Antiguo 30/05/2010, 14:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: leer array de array?

la función implode() está mal...

por eso siempre hay que leer el manual
http://php.net/implode

y por cierto, te convendría igual leer una referencia de arreglos...
http://php.net/array
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 30/05/2010, 19:18
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: leer array de array?

Hola
Bueno, tu problema viene incluso desde el insert, pues como ya has notado guardas la palabra Array, solo eso, no estas guardando los valores que envias por post

Hay varias maneras de solucionarlo, pero te dejo esta

Código PHP:
$claves=$_POST['clave']; 
 
$titulo='casacesar';
if(
count($claves) > 1) {
for(
$c 0$c count($claves); $c++)
{
 
$claves2 .= $claves[$c];
 
  if(
$c count($claves) - )
   
$claves2 .= ','

}
echo 
$claves2;
$insertar_datos1 mysql_query("insert into datos1(titulo, claves) values ('$titulo', '$claves2')",$conn); 
Con esto, insertará lo siguiente en mi ejemplo:


Código MySQL:
Ver original
  1. +-----------+-----------+
  2. | titulo    | claves    |
  3. +-----------+-----------+
  4. | casacesar | Agua,Frio |
  5. +-----------+-----------+

Hasta aquí, ya hemos guardado correctamente el array, ahora
para visualizarlo hay que hacer este proceso:

Código PHP:
for($c=0$c<$campos$c++)
{
   
//ejemplo donde diremos que 4 es clave
   
if($c == 1)
  {
  
$claves explode(","$row[$c]);
    echo 
"<td>";
      for(
$d 0$d count($claves); $d++)
     {
         echo 
$claves[$d];
           if(
$d count($claves) - )
            echo 
','
     }
     echo 
"</td>"
  }
  else
  {
     echo 
"<td>".$row[$c]."</td>";
  }


Mostrando lo siguiente

Código HTML:
casacesar |Agua,Frio
Espero te sirva
saludos
  #9 (permalink)  
Antiguo 30/05/2010, 21:45
 
Fecha de Ingreso: junio-2005
Mensajes: 54
Antigüedad: 18 años, 10 meses
Puntos: 0
De acuerdo Solucionado!!! Respuesta: leer array de array?

Hola mortiprogramador, pues en efecto el error venia desde el inicio, tal como lo detectastes, aplique tu codigo y ahora puedo ver el contenido del campo clave,

Al momento de pasar el array pude ver el contenido de todas la palabras que irian dentro del campo clave, no sabia que se debia guardar de esa manera, Gracias nuevamente con esto queda terminado este post, y ojala que le sirva a alguien mas... saludos

para terminar, nada se puede hacer con los campos donde solo esta la palabra array, es decir, solo es esa palabra a secas sin contenido?
  #10 (permalink)  
Antiguo 30/05/2010, 22:33
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Solucionado!!! Respuesta: leer array de array?

Hola

Cita:
Iniciado por teksukamen Ver Mensaje
para terminar, nada se puede hacer con los campos donde solo esta la palabra array, es decir, solo es esa palabra a secas sin contenido?
Sip, hasta donde yo conozco al parecer solo esa palabra a secas,
es decir, debes editar esos registros poniendole las caracteristicas nuevamente
ya sea por el formulario, o si tienes de pronto un listado con esas características,
te saldría más rápido un update a ese campo con los valores de cada registro!!

saludos

Etiquetas: Ninguno
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:07.