Quasi sicuramente sbagli con i nomi degli input. Io farei così:
codice:
function datazone(){
...
$sql = ..
...
while($row = ...) {
...
<select name="update[<?php echo $row['iddata'] ?>]['data_gen']" id="data_gen">
<option>...</option>
...
</select>
<select name="update[<?php echo $row['iddata'] ?>]['data_spec']" id="data_spec">
<option>...</option>
...
</select>
...
}
}
Nuovo item:
codice:
...
var currentItem = 0;
$('#addnew').click(function(){
currentItem++;
var row = '<tr><td><select id=... name=\'insert[' +currentItem + '][data_gen]\' ><option> .... ';
$('#data').append(row);
}
Salvataggio:
codice:
...
foreach($_POST['update'] as $id => $values){
$sql = 'UPDATE datazione set data_ge = :data_gen, .... WHERE iddat = :iddata ';
...
$stmt->bindParam(':iddata', $id, PDO::PARAM_INT);
$stmt->bindParam(':data_gen', $values['data_gen'], PDO::PARAM_INT);
...
}
foreach($_POST['insert'] as $values){
$sql = 'INSERT INTO datazione(id, ...) VALUES (:data_gen, .... )';
...
$stmt->bindParam(':data_gen', $values['data_gen'], PDO::PARAM_INT);
...
}
PS: Non ho capito come mai i dati tipo data_gen, li prendi da una join ma poi li salvi sulla tabella