Ok I have fixed this problem for me so I am going to share and explain how this was done:
Firstly I have iCloud and Gmail accounts synced to my mac and iPhone.
You can choose what you would like to sync between your devices through these different accounts (e.g. Mail, contacts, calendar)
The problem was that the default account changed (for some reason) to something other than iCloud when I added new contacts to my iphone. For me it was my gmail account.
To change this I went to Settings > Contacts > Default Account > Choose iCloud.
Now all new contacts you add to your iPhone will sync automatically to iCloud.
But what about the contacts I had already added previously on my phone??? I still want these to sync properly to iCloud and have them showing on my Mac.
To fix this I did the following.
Make sure you have iCloud contacts account enabled on your Mac. To do this go to Contacts > Preferences > Accounts > iCloud and make sure there is a tick on Enable this account.
Now go into your iPhone contacts and you will see Groups in blue in the top left hand corner. When you click on it you will most probably have ticks next to all accounts (for me it was Gmail and iCloud)
If you deselect iCloud and just have Gmail ticked then click on done you will see all your gmail contacts only. I went through and found the ones that I knew I had added in recently that were not synced to iCloud.
I then opened contacts on my mac and added them as new contacts in my mac (so I could easily see the details from my phone and type them straight into my Mac).
On your iPhone change your Groups back to show all or tick whatever groups you want to see. But know that any contacts you add in the future on your iPhone will automatically sync to iCloud by default.
Hopefully this helps.