Ciao, non mi sembra che sia un sito Joomla, comunque penso che il mancato funzionamento sia nell' id del <select>.
<select type="text" class="form-control" id="select" required>.
Quando leggi il valore con php tenti di recuperare $prodotto = $_POST["prodotto"]; ma 'prodotto' non viene mai inviato. L'id si chiama 'select'. jQuery prova ad inviare un 'prodotto' che non esiste.
Potrebbe non funzionare lo stesso anche con l'id giusto perché <select> non funziona esattamente come un campo <input> e, sbaglierò, ma non mi sembra che ammetta un tipo 'text'.
Una cosa che complica, anche, è il fatto che gli elementi del form sono senza attributo 'name', che sarebbe quello classico per i forms. E' vero che jQuery corregge la cosa utilizzando l' id ma bisogna vedere cosa succede con il tag <select>. Cioè jQuery invia var prodotto = $("#prodotto").val(); ma è necessario verificare cosa è .val per jQuery che purtroppo conosco pochino pochino.
Un certo risparmio di codice l'avresti mettendo a tutti i tag html che devono essere inviati un attributo 'name' per poi leggerlo successivamente da php senza passare per jQuery ma inviando il form con un normale submit html.
Un avviso: se non filtri con php i campi in arrivo il form è perforabile come un groviera.
Bye!