Salve
Sto cercando di realizzare un form dove attraverso un pulsante add si possono inserire pi� righe per poi fare l'inserimento multiplo di ci� che si � inserito e devo avere la possibilit� di andare ad aggiornare i campi gi� presenti nel db.
Questo � il codice che ho fatto fino ad ora, riesco ad aggiungere un singolo record, ma mi da errore sull'inserimento multiplo e se voglio fare l'update funziona solo sull'ultimo campo inserito, mentre dovrei poter modificare tutti i campi dei vari record.
e l'action salvacodice:function datazione() { global $conn; $id = $_GET['id']; $out='<table id="data" class="table display">'; $out.='<thead>'; $out.='<tr><th>Generica</th><th>Specifica</th><th>Da</th><th>Secolo</th><th>A</th><th>Secolo</th><th>Descrizione</th><th>Definizione</th></tr>'; $out.='</thead>'; $out.='<tbody>'; $sql = 'SELECT *, secoli1.secolo AS data_in, secoli2.secolo AS data_fin, prefisso1.pref AS pref_in, prefisso2.pref AS pref_fin, datazione.id AS iddata FROM datazione '; $sql .= 'INNER JOIN siti_archeo ON datazione.id_sito = siti_archeo.id '; $sql .= 'INNER JOIN data_gen ON datazione.id_data_gen = data_gen.id '; $sql .= 'INNER JOIN data_spec ON datazione.id_data_spe = data_spec.id '; $sql .= 'INNER JOIN prefisso AS prefisso1 ON datazione.id_pref1 = prefisso1.id '; $sql .= 'INNER JOIN prefisso AS prefisso2 ON datazione.id_pref2 = prefisso2.id '; $sql .= 'INNER JOIN secoli AS secoli1 ON datazione.id_sec_in = secoli1.id '; $sql .= 'INNER JOIN secoli AS secoli2 ON datazione.id_sec_fin = secoli2.id '; $sql .= 'INNER JOIN ogtd ON datazione.id_ogtd = ogtd.id '; $sql .= 'INNER JOIN ogtt ON datazione.id_ogtt = ogtt.id '; $sql .= 'WHERE datazione.id_sito = '.$id.' ORDER BY iddata ASC'; $stmt = $conn->prepare($sql); $stmt->execute(); $out.='<form name="info_datazione" action="?azione=salva_datazione" method="post" enctype="multipart/form-data">'; $out.='<input type="hidden" id="id" name="id" value="'.$id.'">'; $out.='<input type="hidden" id="azione" name="azione" value="salva_datazione">'; while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $out.='<input type="hidden" id="iddata" name="iddata" value="'.$row['iddata'].'">'; $out.='<tr>'; $out.='<td>'.$row['iddata'].'</td>'; $out.='<td><select id="data_gen" name="data_gen"> <option value="'.$row['id_data_gen'].'" selected="selected">'.$row['n_data_gen'].'</option> '.data_gen ().' </select> </td>'; $out.='<td><select id="data_spec" name="data_spec"> <option value="'.$row['id_data_spe'].'" selected="selected">'.$row['n_data_spec'].'</option> '.data_spec ().' </select> </td>'; $out.='<td><select id="pref" name="pref"> <option value="'.$row['id_pref1'].'" selected="selected">'.$row['pref_in'].'</option> '.prefisso ().' </select> </td>'; $out.='<td><select id="secolo" name="secolo"> <option value="'.$row['id_sec_in'].'" selected="selected">'.$row['data_in'].'</option> '.secoli ().' </select> </td>'; $out.='<td><select id="pref_a" name="pref_a"> <option value="'.$row['id_pref2'].'" selected="selected">'.$row['pref_fin'].'</option> '.prefisso ().' </select> </td>'; $out.='<td><select id="secolo_a" name="secolo_a"> <option value="'.$row['id_sec_fin'].'" selected="selected">'.$row['data_fin'].'</option> '.secoli ().' </select> </td>'; $out.='<td><select id="ogtd" name="ogtd"> <option value="'.$row['id_ogtd'].'" selected="selected">'.$row['nome_ogtd'].'</option> '.ogtd ().' </select> </td>'; $out.='<td><select id="ogtt" name="ogtt"> <option value="'.$row['id_ogtt'].'" selected="selected">'.$row['nome_ogtt'].'</option> '.ogtt ().' </select> </td>'; $out.='</tr>'; } $out.='</tbody>'; $out.='</table>'; $out.='<div class="col-md-12 col-xs-12">'; $out.='<div class="col-md-6 col-xs-12"><input name="sub" type="submit" value="Salva cronologia"/> </div>'; $out.='<div class="col-md-6 col-xs-12"><input type="button" id="addnew" name="addnew" value="Aggiungi cronologia" /><input type="hidden" id="items" name="items" value="1" /> </div> '; $out.='</div>'; $out.='</form>'; return($out); }
questo � il javascript per aggiungere pi� righe al formcodice:function salva_datazione() { global $conn; $iddata = $_POST['iddata']; $id = $_POST['id']; $items = $_POST['items']; for($r = 1; $r < $items; $r++) { $data_gen = $_POST['data_gen'.$r]; $data_spec = $_POST['data_spec'.$r]; $pref = $_POST['pref'.$r]; $secolo = $_POST['secolo'.$r]; $pref_a = $_POST['pref_a'.$r]; $secolo_a = $_POST['secolo_a'.$r]; $ogtd = $_POST['ogtd'.$r]; $ogtt = $_POST['ogtt'.$r]; $sql = 'INSERT INTO datazione (id_sito, id_data_gen, id_data_spe, id_pref1, id_sec_in, id_pref2, id_sec_fin, id_ogtd, id_ogtt) VALUES('.$id.', '.$data_gen.', '.$data_spec.', '.$pref.', '.$secolo.', '.$pref_a.', '.$secolo_a.', '.$ogtd.', '.$ogtt.') '; $stmt = $conn->prepare($sql); $stmt->execute(); } if ($iddata == $iddata ){ $data_gen = $_POST['data_gen']; $data_spec = $_POST['data_spec']; $pref = $_POST['pref']; $secolo = $_POST['secolo']; $pref_a = $_POST['pref_a']; $secolo_a = $_POST['secolo_a']; $ogtd = $_POST['ogtd']; $ogtt = $_POST['ogtt']; $sql='UPDATE datazione SET id_sito=:id, id_data_gen =:data_gen, id_data_spe =:data_spec, id_pref1 =:pref, id_sec_in =:secolo, id_pref2 =:pref_a, id_sec_fin =:secolo_a, id_ogtd =:ogtd, id_ogtt =:ogtt'; $sql .=' WHERE datazione.id=:iddata '; $stmt = $conn->prepare($sql); $stmt->bindParam(':iddata',$iddata,PDO::PARAM_INT); $stmt->bindParam(':id',$id,PDO::PARAM_INT); $stmt->bindParam(':data_gen',$data_gen,PDO::PARAM_INT); $stmt->bindParam(':data_spec',$data_spec,PDO::PARAM_INT); $stmt->bindParam(':pref', $pref, PDO::PARAM_INT); $stmt->bindParam(':secolo', $secolo, PDO::PARAM_INT); $stmt->bindParam(':pref_a', $pref_a, PDO::PARAM_INT); $stmt->bindParam(':secolo_a', $secolo_a, PDO::PARAM_INT); $stmt->bindParam(':ogtd', $ogtd, PDO::PARAM_INT); $stmt->bindParam(':ogtt', $ogtt, PDO::PARAM_INT); $stmt->execute(); } }
In questo modo quando aggiungo una riga e compilo il form e salvo mi salva il dato nel db, non funziona per� l'inserimento multiplo. E per quanto riguarda l'aggiornamento mi aggiorna solo l'ultimo campo inseritocodice:<script type="text/javascript"> //<![CDATA[ $(document).ready(function() { var currentItem = 1; $('#addnew').click(function(){ currentItem++; $('#items').val(currentItem); var strToAdd = '<?php echo '<tr><td><select id="data_gen'.item().'" name="data_gen'.item().'"><option value="" selected="selected"></option>'.data_gen ().'</select></td><td><select id="data_spec'.item().'" name="data_spec'.item().'"><option value="" selected="selected"></option>'.data_spec ().'</select></td><td><select id="pref'.item().'" name="pref'.item().'"><option value="" selected="selected"></option>'.prefisso ().'</select></td><td><select id="secolo'.item().'" name="secolo'.item().'"><option value="" selected="selected"></option>'.secoli ().'</select></td><td><select id="pref_a'.item().'" name="pref_a'.item().'"><option value="" selected="selected"></option>'.prefisso ().'</select></td><td><select id="secolo_a'.item().'" name="secolo_a'.item().'"><option value="" selected="selected"></option>'.secoli ().'</select></td><td><select id="ogtd'.item().'" name="ogtd'.item().'"><option value="" selected="selected"></option>'.ogtd ().'</select></td><td><select id="ogtt'.item().'" name="ogtt'.item().'"><option value="" selected="selected"></option>'.ogtt ().'</select></td></tr>'?>'; $('#data').append(strToAdd); }); }); //]]> </script>
Per l'azione di salvataggio ho provato anche cosi, ma non funziona proprio
codice:function salva_datazione() { global $conn; $id = $_POST['id']; $iddata = $_POST['iddata']; $data_gen = $_POST['data_gen']; $data_spec = $_POST['data_spec']; $pref = $_POST['pref']; $secolo = $_POST['secolo']; $pref_a = $_POST['pref_a']; $secolo_a = $_POST['secolo_a']; $ogtd = $_POST['ogtd']; $ogtt = $_POST['ogtt']; $sql = 'INSERT INTO datazione (id, id_sito, id_data_gen, id_data_spe, id_pref1, id_sec_in, id_pref2, id_sec_fin, id_ogtd, id_ogtt) VALUES(:iddata, :id, :data_gen, :data_spec, :pref, :secolo, :pref_a, :secolo_a, :ogtd, :ogtt) ON CONFLICT (id) DO UPDATE SET id_sito=:id, id_data_gen =:data_gen, id_data_spe =:data_spec, id_pref1 =:pref, id_sec_in =:secolo, id_pref2 =:pref_a, id_sec_fin =:secolo_a, id_ogtd =:ogtd, id_ogtt =:ogtt'; $stmt = $conn->prepare($sql); $stmt->bindParam(':iddata',$iddata,PDO::PARAM_INT); $stmt->bindParam(':id',$id,PDO::PARAM_INT); $stmt->bindParam(':data_gen',$data_gen,PDO::PARAM_INT); $stmt->bindParam(':data_spec',$data_spec,PDO::PARAM_INT); $stmt->bindParam(':pref', $pref, PDO::PARAM_INT); $stmt->bindParam(':secolo', $secolo, PDO::PARAM_INT); $stmt->bindParam(':pref_a', $pref_a, PDO::PARAM_INT); $stmt->bindParam(':secolo_a', $secolo_a, PDO::PARAM_INT); $stmt->bindParam(':ogtd', $ogtd, PDO::PARAM_INT); $stmt->bindParam(':ogtt', $ogtt, PDO::PARAM_INT); $stmt->execute(); }

Rispondi quotando