E' difficilissimo capire cosa stai facendo senza una pagina intera che mostri tutto nel suo complesso, ma il primo passo è semplicissimo: se ciò che arriva via POST non è quello che ti aspetti, allora di certo il problema è lato client, in html o js, è php non potrà mai risolvere un problema che non è in php...
Io verificherei l'html, controllando che tutti i campi input abbiano name e id (anche l'id conta) TUTTI DIVERSI, e verificando che cosa restituisce la serialize() PRIMA di inviarlo con post()...