Puoi fare in due modi:
1. con php, mettendo due submit: una ti salva/elabora la richiesta e l'altra ti aggiunge una righa.Es:
Codice PHP:
<?php
$data = (isset($_POST['data'])) ? $_POST['data'] : [];
$newRow = true;
$nextIndex = count($data);
if(isset($_POST['save'])){
$newRow = false;
echo "Salvo/eleboro richiesta<br/>";
var_dump($data);
}
?>
<form method="post">
<?php foreach($data as $index => $value): ?>
<input type="text" value="<?php echo $value['lunghezze'] ?>" name="data[<?php echo $index ?>][lunghezze]">
<input type="text" value="<?php echo $value['quantita'] ?>" name="data[<?php echo $index ?>][quantita]">
<input type="text" value="<?php echo $value['codici'] ?>" name="data[<?php echo $index ?>][codici]"><br/>
<?php endforeach ?>
<?php if($newRow): ?>
<input type="text" value="" name="data[<?php echo $nextIndex ?>][lunghezze]">
<input type="text" value="" name="data[<?php echo $nextIndex ?>][quantita]">
<input type="text" value="" name="data[<?php echo $nextIndex ?>][codici]"><br/>
<?php endif ?>
<input type="submit" value="Aggiungi" name="add" />
<input type="submit" value="Invia" name="save" />
</form>
PS: Se vuoi l'array come hai scritto dovresti cambiare la logica per "ricrearti" gli input, in quando un semplice foreach non basta.
In questo esempio ho semplificato la struttura dei dati, ma il concetto è quello.
2. Aggiungere i nuovi campi con javascript (es. con jquery per risparmiarti la scrittura di un po' di codice)...chiedi però nella sezione javascript