Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak policzyć cenę.
Forum PHP.pl > Forum > Bazy danych
TomASS
Witam.

Mam tablę załóżmy taką:

A(int) | B(int) | C(int) | D(int) | E(int) | F(int)

Mam tabelę użytkownicy.
I teraz każdy z użytkowników np. liczy cenę, KAŻDY INACZEJ. I tak:

user1: A+B+C
user2: A*F
.
.
.
.
jak takie "formuły" zapisać w bazie danych?
mike
Ja bym dał tak:

users
id | name | jakieś_tam_atrybuty...

price
id | price | jakieś_tam_atrybuty...

user_price
id_user | id_ price

I teraz na przykład:

price
Kod
+----+------+
| id |price |
+----+------+
|1   |12.90 |
|2   |10.20 |
|3   | 8.45 |
|4   |10.00 |
|5   |12.90 |
+----+------+


user_price
Kod
+---------+----------+
| id_user | id_price |
+---------+----------+
|    1    |     1    |
|    1    |     2    |
|    1    |     5    |
|    4    |     1    |
|    4    |     4    |
+---------+----------+


-------------
Użytkownik o id=1 ma ceny liczone wg. 1,2,5
Użytkownik o id=4 ma ceny liczone wg. 1,4
tort
Cytat(mike_mech @ 2006-02-17 17:27:29)
Użytkownik o id=1 ma ceny liczone wg. 1,2,5
Użytkownik o id=4 ma ceny liczone wg. 1,4

E... no tak, tylko że w ten sposób nie przechowasz chyba danych o działaniach, jakie trzeba wykonać na wartościach odpowiednich kolumn, żeby uzyskać docelową cenę.
mike
Cytat(tort @ 2006-02-17 18:30:26)
E... no tak, tylko że w ten sposób nie przechowasz chyba danych o działaniach, jakie trzeba wykonać na wartościach odpowiednich kolumn, żeby uzyskać docelową cenę.

No fakt

Umknęły mi te działania sad.gif

To teraz pytanie pomocnicze:
Czy działania są zawsze takie same?
Jak mnożenie to mnożenie czy może być tak A+B*C?
TomASS
Tak jak proponowałeś za pierwszym razem micke - to też miałem taką opcję smile.gif Do tego dotarłem, ale sprawa się komplikuje jak chcesz zrobić coś na wzór formuły w excelu, przy dodawaniu nowego użytkownika nie znam jakie trzeba zrobić działania, ale wiem, że będą potrzebne któreś z kolumn A B C D E F......
ale nie znam tych działań - te działania najlepiej przypisać do tabeli użytkowników do danego użytkownika - tylko jak?
tort
Cytat(TomASS @ 2006-02-17 17:09:55)
jak takie "formuły" zapisać w bazie danych?

To będzie raczej trudne o ile nie niemożliwe. Lepiej jest pozostawić bazie danych przechowywanie odpowiednich danych, natomiast obliczenia wykonywać na poziomie aplikacji klienckiej lub ewentualnie napisac jakąś funkcję/procedurę składowaną (lub ich zestaw), która wykona takie obliczenia.
TomASS
Cytat
obliczenia wykonywać na poziomie aplikacji klienckiej

Czyli dla każdego nowego użytkownika muszę robić od nowa każdy plik (funkcję) aby mi liczył dla niego cenę?

Myślę o jakimś parsowaniu....czyli np. jest A+B*C. Wrzucamy to do zmiennej
  1. <?php
  2.  
  3. $jak = $row['jak']; //z bazy
  4. $query = "SELECT $jak FROM cennik";
  5.  
  6. ?>

ale nie wiem co z tego będzie....
tort
Cytat
Czyli dla każdego nowego użytkownika muszę robić od nowa każdy plik (funkcję) aby mi liczył dla niego cenę?

A tego już nie wiem. Jeśli jest tak, że dla każdego użytkownika formuła obliczania ceny jest unikalna, to być może. A w zasadzie to bym zrobil tak, że napisałbym parser formuł, który na podstawie danych pobranych z bazy danych wykonywałby obliczenia. W bazie danych natomiast stworzyłbym tabelę zawierającą formuły obliczania cen, a w tabeli z użytkownikami dodałbym klucz obcy pozwalający powiązać użytkowników z formułami. Parser analizowałby formułę i na jej podstawie byłaby obliczana cena.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.