Frage

Ich habe ein Formular, in dem Benutzer eine unbegrenzte Anzahl von Datenzeilen eingeben. Sie kommen in Form von Eingabe unabhängig von Anzahl der Zeilen auf dem Bildschirm, dass sie sich wünscht.

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

Ich frage mich, ob, wenn das Formular gebucht und ich erhalte diese Datensätze in der $_POST['MYDATA'] Array, wenn ich garantiert werden kann, dass sie in der gleichen Reihenfolge angeordnet werden, wie sie auf dem Bildschirm geschrieben wurden. Oder werden sie durch die uniqid() bestellt werden, die zufällig generiert wird?

Der Grund, warum ich eine eindeutige ID verwenden, anstatt nur ganze Zahlen, die leichter zu Folge wären, ist, dass die Benutzer Zeilen entfernen und zusätzliche Zeilen hinzufügen mit Hilfe von Javascript auf dieser Seite. Es wäre zu schwierig für Kollisionen zu überprüfen.

War es hilfreich?

Lösung

Die W3 spec enthält keine Vorschriften über welcher Reihenfolge Werte einer Form sollte, in einem Datensatz zusammengebaut werden, um technisch können Sie sicher nicht sein. Auf der anderen Seite habe ich nicht einen Fall (aus zahlreichen Browsern auf zahlreiches OSes im Laufe der Jahre) gesehen, in denen Daten nicht in Source-Listing-Bestellung geliefert haben. Ich habe wirklich nicht für die Fälle untersucht, wenn die Änderung des Standard (UI generierte) tabindex Werte.

Sie können immer sortieren das Array ( asort ), nachdem Sie haben es empfangen werden sicher über das, was Sie bestellen Werte gerade lesen.

Andere Tipps

Es ist eine Art Garantie von HTML4.01 (für -urlencoded, aber es wird davon ausgegangen, für / form-data identisch sein) und alle gängigen Browser senden sie die formular~~POS=TRUNC in der Reihenfolge, wie sie in dem Dokument aufgeführt sind.

Also ja, sie durch ihr Aussehen bestellt werden, nicht durch die zufällige UUID.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top