Question

J'ai une forme où les utilisateurs entrent un nombre illimité de lignes de données. Ils arrivent à la forme en entrant quel que soit le nombre de lignes à l'écran qu'ils désirent.

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

Je me demande si, lorsque le formulaire est affiché et je reçois ces enregistrements dans le tableau de $_POST['MYDATA'] si je peux la garantie qu'ils seront classés dans le même ordre qu'ils ont été affichés à l'écran. Ou seront-ils commandés par le uniqid() qui est généré au hasard?

La raison pour laquelle j'utiliser un identifiant unique au lieu de simplement entiers qui serait plus facile à la séquence, est que les utilisateurs peuvent supprimer des lignes et ajouter des lignes supplémentaires en utilisant javascript sur cette page. Il serait trop difficile de vérifier les collisions.

Était-ce utile?

La solution

Le W3 spécifications ne comprend pas les règles sur quel ordre doivent être assemblés les valeurs d'un formulaire dans un ensemble de données, donc techniquement vous ne pouvez pas être sûr. D'autre part, je ne l'ai pas vu un cas (de nombreux navigateurs sur de nombreux systèmes d'exploitation au fil des ans) où les données ont été fournies à ne pas source de liste ordre. Je n'ai pas vraiment testé pour les cas lors du changement de la valeur par défaut (UI) généré valeurs tabindex.

Vous pouvez toujours trier le tableau ( asort ) après avoir reçu à être sûr de quel ordre vous les valeurs de lecture.

Autres conseils

Il est une sorte de garantie par HTML4.01 (pour -urlencoded, mais il est supposé être identique pour / form-data), et tous les navigateurs actuels soumettent les champs de formulaire dans l'ordre où ils sont énumérés dans le document.

Alors oui, ils sont commandés par leur apparence, et non par le UUID aléatoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top