Rinon
Rinon

Reputation: 579

Problems inserting negative numbers in MySQL with PHP

I am trying to build a simple web app to keep up with my debt and I want to use the same database table for adding and also subtracting data.

I am converting the input from the input field using a simple php operation to convert it to a negative number:

$sum2 = $sum*-1; 

$sum being the input field:

$sum = $_POST['shuma'];

The Idea is, when I input a positive number, my debt grows larger, when I input a negative number, my debt gets smaller, it's a simple idea.

In MySQL database, I am inserting the input into:

decimal(7,2) Default:Null

The problem is, the positive input, even though it's being converted into a negative number, it's not being inserted as negative in MySQL, it inserts it again with a positive number. The problem it's not within PHP because I tested it and even after the form it's submitted and data it's pushed into MySQL, I still can get the negative number shown using the echo in PHP.

Does anyone have any idea how to solve this?

P.S. Maybe I should mention, when I try to insert negative directly from phpmyadmin it works, it accepts the negative number in the same field.

Thank you.

Upvotes: 0

Views: 6717

Answers (2)

Ivan Yonkov
Ivan Yonkov

Reputation: 7034

Well, I am trying to use the same input field for both, only use a checkbox, when the box it's checked, it's a negative number, otherwise it's positive

About that comment.

i.e. you have

<input type="checkbox" name="negative"/>

<input type="text" name="sum" />
<?php
$sum = (int)$_POST['sum'];
...

so you can have, let's say two methods:

function increase($value) {
  return query("UPDATE table SET value = value + $value");
}

and

function decrease($value) {
  return query("UPDATE table SET value = value - $value");
}

so you are checking:

if(isset($_POST['negative']) {
  decrease($sum);
}
else {
  increase($sum);
}

However, the queries are just a sample, I just wanted to explain the logic, where you don't need to add the number with negative sign, but you can change the query depends on the checked inputs

Upvotes: 2

Ripa Saha
Ripa Saha

Reputation: 2540

change you field type to DECIMAL (10,2) . Field length defination is on you. Define length according to your requirement.

In this case negative value will be inserted. If not, then please die(); your query and execute it directly in mysql. Because for another field's problem also negative value not insert in table though the field type is DECIMAL.

Upvotes: 3

Related Questions