Foros del Web » Programando para Internet » PHP »

Crear tabla para recoger datos en array por fila

Estas en el tema de Crear tabla para recoger datos en array por fila en el foro de PHP en Foros del Web. Hola a todos, como veis soy nuevo en el foro y "semi nuevo" en PHP. Se que hay temas parecidos, pero ninguno de los que ...
  #1 (permalink)  
Antiguo 04/02/2013, 15:21
 
Fecha de Ingreso: febrero-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Crear tabla para recoger datos en array por fila

Hola a todos, como veis soy nuevo en el foro y "semi nuevo" en PHP.

Se que hay temas parecidos, pero ninguno de los que he leído ha conseguido aclarar mis dudas.

El caso es que estoy creando una tabla que se formará según las indicaciones del usuario a lo largo de varios pasos; En el primero indica número de filas y columnas, en el segundo los titulos de ambas y en el tercero, que es cuando se crea la tabla y donde estoy atascado, se introduciran unos valores que los quiero recoger en un array por fila para después usarlos en el paso 4 para hacer diferentes operaciones.

Pondré solo el código de este último paso pero si es necesario más me lo haceis saber.

A este punto llego bien, se forma la tabla con los títulos de filas y columnas, también me crea el array, pero al mostrarlo, obviamente, solo hay uno formado por los valores de toda la tabla.

¿Como debo hacer para que genere automáticamente la tabla y pueda recoger los datos en un array por fila?

Gracias de antemano.

Código PHP:
function paso3($TitulosColum$TitulosFilas) {
    echo 
"<form action='' method='POST'>";
    echo 
"<h2>Introduce los datos.</h2>";
    echo 
"<table border='2'><th></th>";
    foreach (
$TitulosColum as $valor)
        {
        echo 
"<th>$valor</th>";
    }
    foreach (
$TitulosFilas as $valor)
        {
        echo 
"<tr><td>$valor</td>";
            for (
$i=1$i <= count($TitulosColum); $i++) 
            {
                echo 
"<td><input type='text' name='valores[]'></td>";
            }
        echo 
"</tr>";
    }
    echo 
"<p><input type='submit' name='paso4' value='Ir al paso 4'>";
    echo 
"<input type='reset' value='Limpiar'></p>";
    echo 
"</form>";

  #2 (permalink)  
Antiguo 04/02/2013, 15:42
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 16 años, 11 meses
Puntos: 270
Respuesta: Crear tabla para recoger datos en array por fila

Tienes 2 bucles anidados, para filas, y columnas.Porque quieres un array de 2 dimensiones.Pero en el atributo name del input solo tienes 1 dimension.
El name del input deberia ser valores[$i][$valor]
  #3 (permalink)  
Antiguo 05/02/2013, 09:55
 
Fecha de Ingreso: febrero-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Crear tabla para recoger datos en array por fila

Muchas gracias, ha sido impresionante, rápido, directo y correcto.

Ahora me estoy peleando para conseguir la forma de recoger los arrays fuera de la función, aunque solo he llegado a mostrar los datos y no se con que nombres me llegan realmente para usarlos.
Pongo ambos códigos ya que lo he adaptado un poco.

Gracias por la rápida respuesta, ojalá llegue yo algún día a poder ayudar. ;)

Código PHP:
function paso3($TitulosColum$TitulosFilas) {
    echo 
"<form action='' method='POST'>";
    echo 
"<h2>Introduce los datos.</h2>";
    echo 
"<table border='2'><th></th>";
    foreach (
$TitulosColum as $valor){
        echo 
"<th>$valor</th>";
    }
    foreach (
$TitulosFilas as $valor){
        echo 
"<tr><td>$valor</td>";
            for (
$i=1$i <= count($TitulosColum); $i++) 
            {
                echo 
"<td><input type='text' name='datos[$i][$valor]' value='$valor $i'></td>";
            }
        echo 
"</tr>";
    }
    echo 
"<p><input type='submit' name='paso4' value='Ir al paso 4'>";
    echo 
"<input type='reset' value='Limpiar'></p>";
    echo 
"</form>";

Código PHP:
if (isset($_REQUEST['paso4'])){

    
$datos=$_REQUEST['datos'];
    foreach (
$datos as $valor){
        foreach (
$valor as $subvalor){
            echo 
$subvalor."<br />";
        }
    }

  #4 (permalink)  
Antiguo 05/02/2013, 09:59
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Crear tabla para recoger datos en array por fila

Ya puedes ayudar, con lo que sabes.. nunca sera perfecto.
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #5 (permalink)  
Antiguo 05/02/2013, 15:06
 
Fecha de Ingreso: febrero-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Crear tabla para recoger datos en array por fila

Creo que me rindo, no alcanzo a comprender como funciona y con lo poco que se, me siento limitado para poder acabar de recoger los datos.
Consigo mostrar todos los datos recorriendo la variable $datos que se que contiene 3 array, pero no se realmente, con el código que me ha facilitado dashtrash, con que nombre llegan los array o como debo "recogerlos" para que estén cada fila de datos en uno diferente.
He intentado jugar con un count de $datos para con un for separar los datos y meterlos en tres array a los que yo les de un nombre, pero ya estoy jugando a la lotería a ver si suena la flauta y nada.
Si pudieseis explicar por encima como o con que nombres se formas nos array en la tabla, creo que podría continuar yo solo o al menos seguir un camino lógico.

De todas formas gracias porque ya estoy a las puertas de mi objetivo. ;)
  #6 (permalink)  
Antiguo 05/02/2013, 16:00
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 16 años, 11 meses
Puntos: 270
Respuesta: Crear tabla para recoger datos en array por fila

var_dump es tu amigo.Haz var_dump de $_POST.
  #7 (permalink)  
Antiguo 06/02/2013, 01:55
 
Fecha de Ingreso: febrero-2013
Mensajes: 16
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Crear tabla para recoger datos en array por fila

¡Que grande ese var_dump! Me ha ayudado a verlo mejor y he podido asignar un nombre a cada array para después poderlos mostrar o utilizar con el siguiente código, aunque supongo que habrá algo mejor o una función más directa.

Código PHP:
if (isset($_REQUEST['paso4']))
{
    
$i=1;
    foreach(
$_REQUEST['datos'] as $valor)
    {
        
$Mi_array[$i]=$valor;
        
var_dump($Mi_array[$i]);
        
$i++;
    }
    
var_dump($Mi_array[1]);
    
var_dump($Mi_array[2]);
    
var_dump($Mi_array[3]);



Pero me he dado cuenta de otro problema y es que no me recoge los datos "por filas" si no "por columnas". No se si podré cambiar esto en el código o si tendré que cambiar el concepto de la recogida de datos para que el usuario sepa que los datos se recogerán de arriba a abajo.

Un ejemplo del resultado de una tabla 3x3.
array (size=3)
1 =>
array (size=3)
'fila_1' => string 'fila_1 Columna_1' (length=16)
'fila_2' => string 'fila_2 Columna_1' (length=16)
'fila_3' => string 'fila_3 Columna_1' (length=16)
2 =>
array (size=3)
'fila_1' => string 'fila_1 Columna_2' (length=16)
'fila_2' => string 'fila_2 Columna_2' (length=16)
'fila_3' => string 'fila_3 Columna_2' (length=16)
3 =>
array (size=3)
'fila_1' => string 'fila_1 Columna_3' (length=16)
'fila_2' => string 'fila_2 Columna_3' (length=16)
'fila_3' => string 'fila_3 Columna_3' (length=16)

PD: Aunque hable de "usuario", esto no es ningún proyecto para nada, estoy estudiando y a raíz de un ejercicio con una tabla de pedidos, se me ocurrió intentar si esto se podía hacer, así que me puse por mera curiosidad.

Etiquetas: fila, recoger, 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 09:37.