I am sorry I don't think this is the right direction.
If I understand it, the data is
already there, haven't we agreed about that? You've got the right tpl, I was wrong about that, it does work you've proven it. And you say the output is all there. FormIt is working, I think this is clear by now. There is no sense in building it all again.
You said you want two things, the contact info separated from the orders, and the zero orders stripped out.
For the contact info issue, pls find the tpl called tLoadlist and paste it here so we can see how it outputs. That's not the email tpl but it is the output tpl. That will control how the output looks, and we will know the names of the values. We should be able to see the contact info call and move it where you want.
It would also be better if you gave your full form, so we can see the values used in the form to save, but the tpl will probably have the same values and we can probably guess what they are.
Also, pls provide the code of the snippet called FormItSaveForm, which is the snippet that does all of this. That snippet does work, we've proven that it does output the right data.
This is your code with the tpl name and snippet name.
[[!FormIt?
&validate=`[[!getImageList? &tvname=`Bestellijst` &tpl=`tLoadlist` &outputSeparator=`,`]]`
&hooks=`spam,email,FormItSaveForm`
For the removing of the null results, I suggest using an output modifier, using this model
[[+numbooks:lt=`1`:hide]]
and I think this should work
However it might be necessary or better to check the tLoadlist file, that might be better for limiting the null results because we can limit just the product fields.