// be sure to wire the button to the pin on one side and ground on the other. needs no resistor.
// const won't change // set pin numbers and [b]do not waste your very limited RAM[/b]
const byte ledPin = 2; // never use an int (16 bits, -32768 to +32767),
const byte buttonPin = 4; // where a byte (8 bits 0 to 255) will do. byte pin numbers!
//variables may be changed
byte buttonState = 0; // the name of the place in RAM where for now, 0 is stored
void setup()
{ // I like braces where they're easy to line up with a glance is why I move them
pinMode(ledPin, OUTPUT); // set the LED pin as an output, the default state is LOW, ground
pinMode(buttonPin, INPUT_PULLUP); // set the button pin as an input that is fed weak 5V. If grounded it reads LOW, if not it reads HIGH.
}
void loop()
{
buttonState = digitalRead(buttonPin); //read the state of the pushbutton value
digitalWrite(ledPin, !buttonState); // read !buttonState as NOT buttonState, ! is logical NOT, it switches HIGH and LOW.
}
But it is not blinking just a delay when pushing the button. I want the LED to blink for a while (15sec) randomly and than switch off. If the button is pushed again the same loop.
Please helppppp 
Well yeah but now you know what it takes for just the button.
To watch the button and flash the led at the same time, you don't want to use delay() anywhere because it blocks everything from being done until it is done. Really, if you delay the led you also delay watch the button.
It gets worse before better. No-delays code is so fast it catches the sparks as the button contacts are micro-close with every press and release. You can import debounce code for that. What you want to do is inside of void loop() you have split the job into functions that you write outside of void loop().
// define variables here
void buttonCode()
{
// get some help with this, could be done many ways but --- do not use delay() or blocking code
}
void blinkCode()
{
// get some help with this, could be done many ways but --- do not use delay() or blocking code
}
void loop()
{
buttonCode(); // watches and debounces the button, updates the value of buttonState and saves micros() to a random seed variable
blinkCode(); // makes a few random blinks when buttonState changes from up to down, uses random seed
}
The variables for button state and random seed are information channels for control and data between 2 separate running tasks.