So to the original question;
Writing it into your own html code, uploading to your ftp, with no help, after learning how to do it online.
Several statements there. Using your own scale...
Implanting PHP into HTML: 5.
Uploading to your ftp: 5
Doing it without help: 5
Learning how to do it online: 75
I used to be really good at PHP. I never, ever, consider myself a master in anything, because there is ALWAYS more to learn. If you ever feel you've run out of things to learn, you're not as high on that 1-100 scale as you think you are. And when you learn things, you realize more and more that you've crested the hill you were looking at, to find the mountain range beyond it. Over and over again.
It takes time. It takes effort. It takes learning from mistakes, having the drive to keep trying. The will to go back and look at things you've done in the past, and improve them with things you've learned since then (or in my case, most often scrapping the whole thing and starting over because WTF was i thinking). "Mastering" a language isn't a question of smarts defining your success, but rather the amount of time it will take to reach that level.
Things can help. Having a conceptual knowledge of "programming languages" (let the debate ensue) can help. Understanding how computers work, the basic concepts of computing algorithms, like loops, logic tests, functions and objects will all help. Like trying to learn calculus, it helps if you already know the mechanics of basic mathematics. The basic structure of programming - taking a problem, expressing it into words, and then expressing it in logical steps/pseudocode, have nothing to do with the language you write the final code in. So i'd honestly say it's less about your smarts, and more about your fundamentals.