I use Subversion. You must however, understand how to use it correctly if you're to achieve anything:
- Each developer MUST have their own completely independent development environment (even if they are all on the same dev server) including database.
- NO code must reach your production server without going through version control - developers must not be allowed to simply copy files from their dev area into production.
You will need to consult some documentation as to a typical lifecycle. Normally each developer will work in their own area, committing their changes when they're happy and merging one anothers' changes as they feel like it. At some point, when a release is imminent, all developers will stop committing any new changes while system testing is done (i.e. a freeze) - developers might continue to commit to their own branches though.
Once testing is complete (ideally have another area or server for this), you can then take the same package of files that you edited and deploy it into production by some organised mechanism - ideally do so in a way that deleted files are also removed.
Configuration and data files need to be excluded so they're not accidentally overwritten during this process.
Database schema versioning is quite tricky- you will probably find some examples of how it's normally done - all development and production databases need to have a schema that's in sync with the code base they're running at that particular moment (of course they won't all be the same).
Mark