Reshad
Reshad

Reputation: 2652

How to do + or - in php?

I want to have a form in following way:

[-] [value] [+]

I don't know how to script the logic to get the value 1 higher or 1 lower in PHP.

I assumed something like following would work:

<?php

$i = 0;

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if(isset($_POST['plus']))
    {
        $i++;
    }

    if(isset($_POST['min']))
    {
        $i--;
    }
}

?>

and my form is as following:

<form action="" method="post">
    <input type="submit" name="min" value="-"> <input type="text" value=<?php echo $i ?> >         <input type="submit" name="plus" value="+">
</form>

But I'm only getting either a 1 or a -1. Can someone show me how to do this in a good way?

Upvotes: 1

Views: 105

Answers (3)

Ryan Mitchell
Ryan Mitchell

Reputation: 1410

Try this:

<?php



if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $i = $_POST['current_value'] || 1;
    if(isset($_POST['plus']))
    {
        $i++;
    }

    if(isset($_POST['min']))
    {
        $i--;
    }
}
?>

and this:

<form action="" method="post">
    <input type="submit" name="min" value="-"> <input name="current_value" type="text" value=<?php echo $i ?> >         <input type="submit" name="plus" value="+">
</form>

You need some way to get the current value to persist between requests - depending on your use case, you may need database storage as Rocket mentions, or this simple passing back of the current value may be enough.

Upvotes: 2

Alex
Alex

Reputation: 146

What is happening with your code is that you are incrementing a global variable that you set to 0 in the beginning. That is why the only values you get back or 1 or -1. This can be fixed by passing the variable you increment each time instead of using a global variable. That way it keeps the value between each plus and minus and doesn't keep resetting it.

Upvotes: 1

Daniel Li
Daniel Li

Reputation: 15389

PHP will simply load code on the server-side and run when the page is loaded. If you are looking to dynamically increment/decrement the value while remaining on the same page, I suggest you look into learning Javascript and jQuery.

Reference: https://developer.mozilla.org/en/JavaScript/

Reference: http://jQuery.com/

Upvotes: 2

Related Questions