OK, I can give you the general design pattern here.
For generating the language checkboxes on the page, you want to have a table that lists all the languages. You can get the ISO standard list here. It is a big list. Keep what you need. You might have two columns in the list - the ISO639-2 code in one column and the English language name in the other column.
http://www.loc.gov/standards/iso639-2/php/code_list.phpTo generate the checkboxes, you SELECT * from the languages table and iterate over that results set. Use the ISO639-2 code for the value of the checkbox and language[] for the name of the checkbox.
When the form is submitted, the only checkboxes that are present in the $_POST array are the ones that are checked. They will be in the languages sub-array of the $_POST array.
So in your action script, you would iterate over the POST languages sub-array and do INSERT statements into the pivot table.
To sum up, there are three tables for this part of the app - `languages`, `pivot`, and `persons` You would index languages on the ISO639 code, persons on the auto_increment id, and pivot on both the language code and the persons id.