Irek J.

Irek J. Organizacja pomysłów
ciekawych :)

Temat: [MySql/PHP] Jak zapisać i wyświetlić ułamek?

Cześć,

Dziś trafiłem na problem, który nie daje mi spokoju.

Mam prosty formularz:

<form action="admin.php?koszty" method="POST">
<p>Wpisz łączną sumę kosztów</p>
<input type="text" name="twojekoszty"><br/>
<input type="submit" name="submit" value="Wyślij">
</form>


oraz php do obsługi formularza:

if (isset($_GET['koszty'])){
$zapisz = "UPDATE `oferta` SET `koszty` =
'".$_POST['twojekoszty']."'";
$result = mysql_query($zapisz) or die(mysql_error());
}


i kod wyświetlający

$sql = "SELECT koszty FROM oferta";
$result = mysql_query($sql) or die (mysql_error());
while ($row = mysql_fetch_array($result)){
$koszty_akcji = $row['koszty'];
}
echo $koszty_akcji;


I wszystko działa pięknie jak powinno, ale...

Co trzeba zrobić, żeby po wpisaniu liczby 20.5 w formularzu w
MySQL zapisała się liczba 20.5, a nie 21 ?
Czyli, co zrobić, żeby zapisał się ułamek bez zaokrąglenia?
Przerobiłem już dużo różnych zmian typów zmiennych w tym
rekordzie i nic...

HELP! ;)

Temat: [MySql/PHP] Jak zapisać i wyświetlić ułamek?

Irek Julkowski:
Cześć,

Dziś trafiłem na problem, który nie daje mi spokoju.

Mam prosty formularz:

<form action="admin.php?koszty" method="POST">
<p>Wpisz łączną sumę kosztów</p>
<input type="text" name="twojekoszty"><br/>
<input type="submit" name="submit" value="Wyślij">
</form>


oraz php do obsługi formularza:

if (isset($_GET['koszty'])){
$zapisz = "UPDATE `oferta` SET `koszty` = '".$_POST['twojekoszty']."'";
$result = mysql_query($zapisz) or die(mysql_error());
}


i kod wyświetlający

$sql = "SELECT koszty FROM oferta";
$result = mysql_query($sql) or die (mysql_error());
while ($row = mysql_fetch_array($result)){
$koszty_akcji = $row['koszty'];
}
echo $koszty_akcji;


I wszystko działa pięknie jak powinno, ale...

Co trzeba zrobić, żeby po wpisaniu liczby 20.5 w formularzu w MySQL zapisała się liczba 20.5, a nie 21 ?
Czyli, co zrobić, żeby zapisał się ułamek bez zaokrąglenia?
Przerobiłem już dużo różnych zmian typów zmiennych w tym rekordzie i nic...

HELP! ;)

Zamień go na zwykły string i zapisz jako tekst. Ewetnaulnie jeśli ułamek zawsze będzie miał tyle samo miejsc po przecinku, to możesz mnożyć x10 lub x100 i zapisywać liczbę całkowitą pamiętając, żeby przy odczycie odpowiednio potem podzielić.

Temat: [MySql/PHP] Jak zapisać i wyświetlić ułamek?

jakiego typu masz pole na bazie ?

mysql> create table test (a int);
Query OK, 0 rows affected (0.03 sec)

mysql> insert into test values (20.5);
Query OK, 1 row affected (0.01 sec)

mysql> select * from test;
+------+
| a |
+------+
| 21 |
+------+
1 row in set (0.00 sec)

mysql> alter table test change a a FLOAT;
Query OK, 1 row affected (0.05 sec)
Records: 1 Duplicates: 0 Warnings: 0

mysql> insert into test values (20.5);
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+------+
| a |
+------+
| 21 |
| 20.5 |
+------+
2 rows in set (0.00 sec)

Temat: [MySql/PHP] Jak zapisać i wyświetlić ułamek?

string/varchar/char jest złym pomysłem ze względu na warunki do wyszukiwania...

jeżeli jest to wartość można w łatowy sposób szukać np wartości większych, mniejszych lub w konkretnym przedziale

Temat: [MySql/PHP] Jak zapisać i wyświetlić ułamek?

Irek Julkowski:

Co trzeba zrobić, żeby po wpisaniu liczby 20.5 w formularzu w MySQL zapisała się liczba 20.5, a nie 21 ?
Czyli, co zrobić, żeby zapisał się ułamek bez zaokrąglenia?
Przerobiłem już dużo różnych zmian typów zmiennych w tym rekordzie i nic...

Czy są jakieś przeciwwskazania, że nie używasz float?

EDIT:
nie doczytałem powyższego posta ;) sry za powtórzenieMateusz H. edytował(a) ten post dnia 10.07.11 o godzinie 16:43



Wyślij zaproszenie do