La parte javascript dovrebbe essere modificata così per semplificare un pò
codice:
<script>
$(document).ready(function(){
var i=0;
$('#add').click(function(){
i++;
$('#dynamic_field').append('<tr id="row'+i+'"> <td><input type="text" name="name[]" placeholder="inserisci ingrediente" class="form-control name_list" /></td> <button type="button" name="remove" data-id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
$('#dynamic_field').append('<tr id="row'+i+'"> <td><input type="text" name="qt[]" placeholder="inserisci ingrediente" class="form-control qt_list" /></td> <button type="button" name="remove" data-id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
}
);
$(document).on('click', '.btn_remove', function(){
var button_id = $(this).data("id");
$('#row'+button_id+'').remove();
});
$('#add_name').on('submit', function(e){
e.preventDefault(); //Blocca il form submit
const myForm = $(this);
$.ajax({
url:"ricette.php",
method:"POST",
data: myForm.serialize(),
success:function(data)
{
alert(data);
console.log(data);// Con console log puoi vedere tutti i dati dalla console e non in un alert
myForm.trigger('reset'); //reset di tutta la form
},
error: function(){
//qui puoi fare qualcosa se fallisce la chimata (non l'errore gestito da PHP)
},
always: function(){
//qui puoi fare qualcosa sia che vada in success o in error
}
});
});
</script>
Nell'append degli elementi al posto di id="..." metti un data-id="..."
codice:
<button type="button" name="remove" data-id="'+i+'" class="btn btn-danger btn_remove">
Nel PHP potresti fare quindi questo
codice:
<?php
$connect = mysqli_connect("localhost", "root", "", "miodb");
$number = count($_POST["name"]);
echo $number;
$result = array("error"=>false, "data"=>array());
if($number > 0)
{
//Se tutto ok nel ciclo puoi riempire l'array da ritornare altrimenti potrai inserire errori vari o altro
for($i=0; $i<$number; $i++)
{
if(trim($_POST["name"][$i] != ""))
{
$sql = "INSERT INTO prova (campo,qt) VALUES('".mysqli_real_escape_string($connect, $_POST["name"][$i])."','".mysqli_real_escape_string($connect, $_POST["qt"][$i])."')";
$insert = mysqli_query($connect, $sql);
if(!$insert){
$result['error'] = true; //O altro diverso da false
}else{
$result['data'][$i] = "Inserimento ok per indice " . $i; // o qualsiasi cosa tu voglia ricevere lato javascript
}
}
}
}
else
{ //qui valorizzi in caso di errore
$result['error'] = "Compilare i nomi!";
}
//Erorre o success, ritorni il result per capire cosa è avvenuto lato server
header('Content-Type', 'application/json');
echo json_encode($result); //questo sara il data nel success() di jQuery.ajax e si vedrà in console.
?>
Devi solo fare un check per vedere come sarà formattato ora l'array in POST per leggere sia i name che le quantità