Seems like you wanna use a state machine. Define a variable as your state:
byte state = 0;
Then you can specify for every state what you wanna do in this case. One possibility might be to change to another state.
p.e.:
switch (state) {
case 0:
if (digitalRead(4) == LOW) {
state = 1; // change to next state
}
breaik;
case 1:
// do whatever you think is appropriate here
break;
default:
// show some error because we reached an undefined state
}
This is much easier to maintain than to have dozens of "if" statements with every possibility.