Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapisywanie liczby z . i , w bazie, jak to sie robi w praktyce
athabus
post
Post #1





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam,
tworze wlasnie maly i skrypt i natknolem sie na problem z zapisem liczb float w bazie danych.

Z tego co czytam, to mySQL pozwala tylko na zapis z kropka, czyli np. 124.23, ale logicznym jest ze userowi wyswietla sie liczbe z przecinkiem czyli np. 124,23.

Chciałbym zatem spytać:

1) Czy nie można przestawić bazy tak, aby akcpetowała liczby z przecinkami (z tego co widzę po wynikach z wyszukiwarki to chyba się nie da)

2) Jeśli się nie da zmienić ustawienia bazy, to jak wy to rozwiązujecie? Chyba nie robicie ręcznie konwersji typu str_replace czy number_format za każdym razem gdy chcecie zapisać coś do bazy albo wyświetlić userowi?

Myślałem, żeby wykorzystać metodę obietku __set i __get ale to też niewiele daje. Teraz przyjąłem schemta, że wszystkie wartości przechowuje z kropką i maj dodatkową metodę w moim obiekcie, która służy do wyświetlania liczby, ale nie wiem czy to optymalne rozwiązanie.

Będę wdzięczny za wszelkie rady
Go to the top of the page
+Quote Post
pawel_k
post
Post #2





Grupa: Zarejestrowani
Postów: 211
Pomógł: 3
Dołączył: 29.07.2005
Skąd: Szczebrzeszyn

Ostrzeżenie: (0%)
-----


daj na początku skryptu
  1. <?php
  2. setlocale(LC_ALL, "pl_PL.UTF-8");
  3. ?>
Go to the top of the page
+Quote Post
athabus
post
Post #3





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Dzięki, to rozwiązuje w połowie mój problem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Tylko mała uwaga - na serwerach windowsowych nalezy wpisac
  1. <?php
  2. setlocale(LC_ALL, "polish_pol");
  3. ?>


To tak jakby chciał ktoś testować lokalnie tak jak ja.

Mam tylko pytania, bo z tego co widzę to dzięki temu liczba wyświetlana userowi jest z przecinkiem(no i oczywiście kilka innych ustawień lokalnych). A czy da się zrobić coś podobnego, aby automatycznie były konwertowane liczby z formularza z np 3,7 na 3.7?

Pewnie nie ma takiej możliwości, bo skąd formularz "ma wiedzieć" że ktoś w danym momencie wpisuje liczbę ale wolę zapytać.

Ten post edytował athabus 16.02.2006, 11:34:02
Go to the top of the page
+Quote Post
tiraeth
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function comma2dot($integer)
  3. {
  4.  $integer = preg_replace("#([\d]{1,})\,([\d]{1,})#", "\\1.\\2", $integer);
  5.  return $integer;
  6. }
  7.  
  8. echo comma2dot("35,121 Lorem, ipsum. 0,11"); # Return: 35.121 Lorem, ipsum. 0.11
  9. ?>


Wykorzystuje wyrażenie regularne aby można było zamieniać te liczby w całym ciągu znaków (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 16:44