Pergunta

Eu tenho um formulário em que os usuários inserem um número ilimitado de linhas de dados. Eles chegam ao formulário inserindo qualquer número de linhas na tela que desejam.

<?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>

Estou me perguntando se, quando o formulário é publicado e recebo esses registros no $_POST['MYDATA'] Array Se eu puder garantir que eles serão encomendados na mesma sequência que foram publicados na tela. Ou eles serão ordenados pelo uniqid() Isso é gerado aleatoriamente?

A razão pela qual eu uso um ID exclusivo em vez de apenas números inteiros, que seria mais fácil de sequenciar, é que os usuários podem remover linhas e adicionar linhas adicionais usando JavaScript nessa página. Seria muito difícil verificar colisões.

Foi útil?

Solução

o W3 Spec Não inclui regras sobre o que os valores de um formulário devem ser montados em um conjunto de dados; portanto, tecnicamente, você não pode ter certeza. Por outro lado, não vi um caso (de vários navegadores em vários sistemas operacionais ao longo dos anos) em que os dados não foram fornecidos em ordem de listagem de origem. Eu realmente não testei para os casos ao alterar os valores do Tabindex padrão (gerado pela interface do usuário).

Você sempre pode classificar a matriz (um tipo) Depois de receber, com certeza sobre qual ordem você está lendo valores.

Outras dicas

É meio garantido por HTML4.01 (para -urlencoded, mas é considerado idêntico para /dados de formulários), e todos os navegadores atuais enviam os campos de formulário na ordem em que estão listados no documento.

Então, sim, eles são ordenados por sua aparência, não pelo Uuid aleatório.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top