array - Enviar una matriz multidimensional a través de POST con php
html input array multidimensional (2)
Tengo un formulario php que tiene un número conocido de columnas (por ejemplo, diámetro superior, diámetro inferior, tela, color, cantidad), pero tiene un número desconocido de filas, ya que los usuarios pueden agregar filas cuando lo necesiten.
Descubrí cómo tomar cada uno de los campos (columnas) y colocarlos en una matriz propia.
<input name="topdiameter[''+current+'']" type="text" id="topdiameter''+current+''" size="5" />
<input name="bottomdiameter[''+current+'']" type="text" id="bottomdiameter''+current+''" size="5" />
Entonces, lo que termino con el HTML es:
<tr>
<td><input name="topdiameter[0]" type="text" id="topdiameter0" size="5" /></td>
<td><input name="bottomdiameter[0]" type="text" id="bottomdiameter0" size="5" /></td>
</tr>
<tr>
<td><input name="topdiameter[1]" type="text" id="topdiameter1" size="5" /></td>
<td><input name="bottomdiameter[1]" type="text" id="bottomdiameter1" size="5" /></td>
</tr>
...and so on.
Lo que me gustaría hacer ahora es tomar todas las filas y columnas para ponerlas en una matriz multidimensional y enviar sus contenidos por correo electrónico al cliente (preferiblemente en una tabla muy bien formateada). No he podido comprender realmente cómo combinar todas esas entradas y seleccionarlas en una buena matriz.
En este punto, tendré que tratar de usar varias matrices 1D, aunque tengo la idea de que usar una sola matriz 2D sería una mejor práctica que usar varias matrices 1D.
Al enviar, obtendrías una matriz como si se creara así:
$_POST[''topdiameter''] = array( ''first value'', ''second value'' );
$_POST[''bottomdiameter''] = array( ''first value'', ''second value'' );
Sin embargo, le sugiero cambiar los nombres de sus formularios a este formato:
name="diameters[0][top]"
name="diameters[0][bottom]"
name="diameters[1][top]"
name="diameters[1][bottom]"
...
Usando ese formato, es mucho más fácil recorrer los valores.
if ( isset( $_POST[''diameters''] ) )
{
echo ''<table>'';
foreach ( $_POST[''diameters''] as $diam )
{
// here you have access to $diam[''top''] and $diam[''bottom'']
echo ''<tr>'';
echo '' <td>'', $diam[''top''], ''</td>'';
echo '' <td>'', $diam[''bottom''], ''</td>'';
echo ''</tr>'';
}
echo ''</table>'';
}
puede enviar todos los parámetros con dicho nombre:
params[0][topdiameter]
params[0][bottomdiameter]
params[1][topdiameter]
params[1][bottomdiameter]
luego, haces algo como esto:
foreach ($_REQUEST[''params''] as $item) {
echo $item[''topdiameter''];
echo $item[''bottomdiameter''];
}