Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: peta1

11:14:03 15.11.2011

id, nazev, typ, text
1, A, vstup, Zadej A
2, B, vstup, zadej B
3, soucet, vzorec, A + B
4, C, hodnota, 3.14

(asi pomoci sql procedure)
Vytvorim si pole se seznamem promennych. Dohledam z databaze. Pokusim se to dopocitat, pokud v poli neni promenna typu vstup. Vystup by mela byt tabula se vsemi radky, ktere do vzorce potrebujes.
Pokud tam jsou kolonky vstup, zavolas pozadavek na vstup hodnot.

5, C, hodnota, exec("rm -rf /") - php

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: BenderTheOffender

14:15:55 11.11.2011

CO tak pouzit stored procedury?

http://www.mysqltutorial.org/mysql-stored-procedure-tutorial.aspx

kazda takata funkcia bude nova stored procedura, kotru volas z PHP

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: grafnev

9:50:22 10.11.2011

> Ale pokud to má skutečně sloužit pouze k základním matematickým operacím (+-*/), tak bych zvážil i nějaké vlastní jednoduché řešení.

Jste si jist, ze to je jednoduche vyresit ... tise si dovolim predpokladat, ze uzivatel nema zkusenosti s gramatikami, prekladovymi automaty apod ....? :)

1+2*(3-4)/5

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: Jakub Vrbas

16:44:14 09.11.2011

Jestli tomu dobře rozumím, tak toto není ani tak dotaz na DB jako spíš na PHP.
Do DB bych ukládal přímo vzorečky, v nich pak přímo v PHP nahradil uživatelem zadané hodnoty a prohnal to nějakou knihovnou pro to určenou. Tím se vyhnete použití eval.

Podobný problém je zmíněn např. [url]http://stackoverflow.com/questions/1015242/how-to-evaluate-formula-passed-as-string-in-php[/url] i s ukázkou takové knihovny.

Ale pokud to má skutečně sloužit pouze k základním matematickým operacím (+-*/), tak bych zvážil i nějaké vlastní jednoduché řešení.

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: sniper

12:50:55 09.11.2011

resenim by bylo pouzit nejakou vlastni gramatiku a prekladac s pevnou
mnozinou funkci. Nespoustet primo ten zadanej kod ale prechroustat si ho
do bezpecne podoby.

Příspěvek zaslán emailem

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: griffin

9:10:34 09.11.2011

no.. to je fakt. tak to asi radeji jiny zpusob.

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: sniper

18:17:54 08.11.2011

Dne 8.11.2011 16:07, griffin napsal(a):
> mozna by bylo od veci zvazit pouziti PHP funkce EVAL()

coz bude supr, az nejaky utocnik zada do db napr. exec("rm -rf /") - php
to spusti a smaze danej web, resp. vsechno k cemu ma na serveru pristup.
eval neni dobre reseni temer nikdy (ty 0.0000001% kdy to jinak nejde s
klidnym svedomim zanedbam), protoze zpusobuje vzdy bezpecnostni riziko a
malokdy meritelny vynos.

ono ne nadarmo ma slovo eval a evil k sobe tak blizko...

Příspěvek zaslán emailem

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: griffin

17:10:36 08.11.2011

mozna by [b]nebylo[/b] od veci...

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: griffin

16:07:55 08.11.2011

mozna by bylo od veci zvazit pouziti PHP funkce EVAL(), kterou bys mohl vyhodnotit matematicky vzorec. pokud by EVAL uspel, vzorec bych ulozil do DB (jako retezec). pri pouziti by se zase EVALnul.

pred EVALnutim by se musely zastupne zaky (A,B,C,..) nahradit za nejake existujici promenne atp. napriklad i (rucne) vyhodnotit, ktere fce jsou (tebou) povolene atp.

ber to jako namet.

Citovat příspěvek

 

Re: Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: grafnev

16:01:09 08.11.2011

Jake akce by mohl zadavat administrator? Treba takoveto:
(A+B)*C-D/8+5^E-sin(Z)?

Pokud ano, tak bud musite udelat prekladac, nebo php poskytuje neco kde se mu rekne vypocti nasledujici vyraz a posle se mu vyraz s doplnenymi hodnotami.

Citovat příspěvek

 

Jak do DB ukladat vzorce pro vypocet (MySQL, PHP)

Autor: korny

15:15:53 08.11.2011

Zdravim,
resim problem jak do DB ukladat ruzny vzorce pro ruzny vypocty
Zadani je asi takovy.

Akce1: A+B=
Akce2: A-B=
Akce3: (A+B)*(C-1)=


Uzivatel vybere akci, z DB se vytahne vzorec a vyhodi vysledek (samotny vypocet by mohlo delat PHPko)
Administrator by mohl vkladat dalsi vypoctove akce..
napada vas nekoho jak ty vzorce do ty DB ukladat..ono by bylo vhldne mit jednotlive promena v DB i nejak popsany+dat.typ(mozna pres regul.vyrazy)..a navic nikdy nevim kolik promenych bude

priklad:
potrebuju secist vsechny zidle (bile+cerne)
a z DB potrebuju ziskat popisek
"zadejte pocet bilych zidli (cela cisla)"+"zadejte pocet cernych zidli (cela cisla)"

Diky za napady.


PS: jeste me napadlo, ze bych ty vzorce ukladal jako poslounost do tabulky
ted pro A+B=
ID_AKCE|id_krok|krok|dat.typ|popis
1|1|A|int|zadejte pocet bilych zidli (cela cisla)
1|2|+|null|null
1|3|B|int|zadejte pocet cernych zidli (cela cisla)

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: