2010-12-09 13 views
18

Tengo un formulario donde los usuarios ingresan un número ilimitado de filas de datos. Llegan al formulario ingresando cualquier cantidad de filas en la pantalla que deseen.¿Está garantizado el orden de las ENTRADAS en un POST para las entradas de matriz en PHP?

<?php 
$numRows = $_GET['NUM_ROWS_REQUESTED']; 

?> 
<form method="post"> 
<?php 
for($i = 0; $i < $numRows ;$i++) { 
    $uuid = uniqid(); 
?> 

    <input type="text" name="MYDATA[<?php print $uuid; ?>][FIRST_NAME]" /> 
    <input type="text" name="MYDATA[<?php print $uuid; ?>][LAST_NAME]" /> 
<?php 
} 
?> 
</form> 

Me pregunto si, cuando el formulario se envió y recibo estos registros en la matriz $_POST['MYDATA'] si se puede garantizar que van a ser ordenados en el mismo orden en que fueron publicadas en la pantalla. ¿O estarán ordenados por el uniqid() que se genera al azar?

La razón por la que utilizo una ID única en lugar de solamente enteros que serían más fáciles de secuenciar, es que los usuarios pueden eliminar filas y agregar filas adicionales usando javascript en esa página. Sería muy difícil verificar colisiones.

+0

Si no está seguro. Ordénalo. – DampeS8N

+0

@ DampeS8N Realmente no tengo nada para ordenar. El orden de las entradas en la pantalla cuando las ingresan es el orden deseado. Sin hacer AJAX para recuperar la fecha del sistema, eso no será confiable ya que javascript usa la fecha de su PC. Esperaba evitar el análisis de filas existentes en javascript al crear nuevas filas. –

+1

Puede agregar una entrada oculta con 'MYDATA [] [SORT_ORDER] 'como nombre y un contador como valor. También puedes usar un contador como $ uuid. Si aún necesita un UUID, puede dejar que el servidor lo genere o usar el inverso de mi primer ejemplo: una entrada oculta con 'MYDATA [] [UUID] 'como nombre y $ uuid como valor. – ontrack

Respuesta

9

El W3 spec no incluye reglas sobre el orden en que los valores de un formulario se deben ensamblar en un conjunto de datos, por lo que técnicamente no puede estar seguro. Por otro lado, no he visto un caso (de numerosos navegadores en numerosos sistemas operativos a lo largo de los años) en el que los datos no se han proporcionado en el orden de publicación de la fuente. Realmente no he probado casos al cambiar los valores predeterminados (UI generados) de tabindex.

Siempre puede ordenar la matriz (asort) después de haberla recibido para asegurarse de qué orden está leyendo valores.

6

Es un tipo de garantía por HTML4.01 (para -urlencoded, pero se supone que es idéntica para/form-data), y todos los navegadores actuales envían los campos de formulario en el orden en que aparecen en el documento.

Así que sí, están ordenados por su apariencia, no por el uuid aleatorio.

+3

En HTML5 no es explícito, pero a menudo hacen referencia al " orden de árbol "(estructura DOM) para elementos de formulario: http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#multipart-form-data – mario

Cuestiones relacionadas