Domanda

Ho una forma in cui gli utenti inseriscono un numero illimitato di righe di dati. Arrivano al modulo inserendo qualunque sia il numero di righe sullo schermo che essi desiderano.

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

Mi chiedo se, quando il modulo viene inviato e ricevo questi record nella matrice $_POST['MYDATA'] se mi si può garantire che essi saranno ordinati nella stessa sequenza in cui sono state inviate sullo schermo. O saranno ordinati dal uniqid() che è generato in modo casuale?

La ragione per cui io uso un ID univoco, invece di soli numeri interi che sarebbe più facile da sequenza, è che gli utenti possono rimuovere le righe e aggiungere altre righe utilizzando JavaScript in quella pagina. Sarebbe troppo difficile da verificare la presenza di collisioni.

È stato utile?

Soluzione

Il W3 spec non include norme sulla quale ordine I valori di un modulo devono essere assemblati in un insieme di dati, quindi tecnicamente non si può essere sicuri. D'altra parte, non ho visto un caso (da numerosi browser su numerosi sistemi operativi nel corso degli anni) in cui i dati non sono stati forniti in fonte-messa in vendita di ordine. Non ho davvero provato per i casi quando si cambia l'impostazione predefinita (UI) generato valori tabIndex.

Si può sempre ordinare l'array ( asort ) dopo aver ricevuto per essere sicuro di quello che ordina che stai leggendo valori.

Altri suggerimenti

E 'una sorta di garantito da HTML4.01 (per -urlencoded, ma si presume essere identico per i form-data /), e tutti i browser attuali presentare i campi del modulo nell'ordine in cui sono elencati nel documento.

Quindi sì, essi sono ordinate per il loro aspetto, non per l'UUID casuale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top