You should get at least four weeks out of a permanent hair color. It is very important to use a mild shampoo, because stronger ones, such as extra body shampoos will pull the color out faster.
Even baby shampoo is strong because it is PH'd to the level of the eye, so that it neutralizes with the eye and causes no irritation there. But the hair and skin are a PH value of between 4.5 and 5.5 on the acid scale. The PH of the eye is much higher. You don't need a really strong shampoo to clense the hair because it really doesn't get that dirty unless you are a mechanic or someone who works in grease everyday.
I wouldn't recommend that you use a shampoo for oily hair either, because most of them are too strong for color treated hair .
Purchase a shampoo that is made for chemically treated hair. L'Oreal makes a good one for color treated hair.
Also, if you are coloring your hair yourself, be sure to just do the roots first when retouching your color. Let the roots process for 15 to 20 minutes, then apply to the previously colored hair for no more than 10 minutes.
If you are coloring your hair by applying the color all over every time, then you are damaging your hair and causing it to become more porous, which will also cause the color to fade rapidly.
The first 15 minutes of permanent hair coloring is lift. The second 15 minutes is deposit.
You need to realize that previosly colored hair will already be lifted and if you continue applying the color on the previously colored hair for the lifting process, it will become, dry, damaged, brittle and very porous.
If this is the way you have been applying your color, you have length to your hair and have processed the hair too many times in this manner, then I would suggest you have layers trimmed, in order to get some of the damaged hair off.