mosfet p-channel doesn't work?
Your base is floating and hence-forth susceptible to noise. This is true for both the transistor and the PMosfet you are using. Floating gate and bases are quite susceptible to spurious noises and can behave wierd.

Give a pull down from the base to the ground. Also the PMOSFET you are using is in the wrong way. For a P channel MOSFET to work, or for that matter any MOSFET , make sure you have a min Vgs > Vth(threshold voltage). Now, for the P Mosfet the gate voltage should be &lt; than Voltage of Source and for the NMOsfet Vg(gate voltage)> Vs(source voltage).

Here when the transistor is on the gate is pulled down to GND and thats good. But the source is not properly connected to the supply.