Autor Zpráva
luma64
Profil
Zdravím ! Poraďte pls, mám v tabulke pole cenabezdph_num , typ je DECIMAL(13,2). V poli sa môže vyskytovať napr. hodnota 12345.99 . Potrebujem však aby mi selekt vypisoval obsah poľa tak, že mi ho vypíše s oddeľovačom tisícok, čo bude medzera. To znamená v tomto prípade 12 345.99. Vďaka za pomoc !
blaaablaaa
Profil
luma64:
V db mě napadá leda použít FORMAT s locale + pak REPLACE za mezeru. Ale tohle bych řešil spíš na výstupu třeba v PHP přes number_format.
luma64
Profil
blaaablaaa:
veď práve...mám datagrid, ktorý sa vytvára selektom. Jedno z polí je cenabezdph_num. Neviem sa k hodnote v tomto poli dostať na úrovni záznamu, aby som ho mohol cez php spracovať a vypísať.
blaaablaaa
Profil
luma64:
Pak třeba takto: REPLACE(FORMAT(12345.67, 2, 'en_GB'), ",", " ")
luma64
Profil
Ked spustim selekt na databáze, vykoná sa v poriadku, tisícky su oddelené . Keď je umiestnený ako prikaz v php, nevykona sa :
SELECT cisloobj, popisobj, dodavmeno, REPLACE(FORMAT(cenabezdph_num , 2, 'en_GB'), ",", " ") as cena2 , datvyhotov FROM objednavky.
Php stránka vypíše chybu :
Parse error: syntax error, unexpected '") as cena2, datvyhotov FROM o' (T_CONSTANT_ENCAPSED_STRING) in E:\XAMPP\htdocs\phpgridlite\examples\integrated_search.php on line 13
blaaablaaa
Profil
luma64: Tohle jsou základy PHP, apostrofy musíš escapovat \'
luma64
Profil
Super - mám to ! Neuvedomil som si, že treba vymeniť úvodzovky za apostrof. Teda :
SELECT cisloobj,popisobj,dodavmeno, REPLACE(FORMAT(cenabezdph_num , 2, 'en_GB'), ',', ' ') as cena2, datvyhotov FROM objednavky

Ďakujem !


Ups, ešte sa mi vyskytol problém s tým, že spomenutý format mi vytvorí, rozdelí hodnotu. Táto ale stratí vlastnosť, že je číslo. Teda pred cenou 1 000.00 nie je 999.99 ale niečo, čo začína jednotkou a má stovkový rád.
Keeehi
Profil
luma64:
Problémy máš proto, že k tomu celému přistupuješ ze špatné strany. Formátování by měla zajistit vrstva, co to prezentuje. Proto se ti blaaablaaa nejdříve snažil poradit ať to formátuješ v PHP protože když nic jiného nenapíšeš, tak se tak nějak implicitně předpokládá, že to PHP přímo vypisuje do stránky.
Pak jsme se dozvěděli, že používáš datagrid. V tom případě je tou prezentační vrstvou onen datagrid. Takže si v dokumentaci k tomu datagridu najdi, jak se nastavuje formátování sloupců. Jelikož jsi nenapsal o jaký datagrid jde, tak ti konkrétněji poradit nemůžeme.
luma64
Profil
Použil som datagrid to stránky phpgrid.com , konkrétne po stiahnutí je to examles\integrated_search.php
Tomášeek
Profil
luma64:
Proc si nepřečtes dokumentaci k tomu? Odpověď, jak formátovat, jsem tam našel během dvou minut.

Nebuď lempl a podívej se do ni. Kopírovat kód z ni ti sem nebudu, za chvíli bys chtěl z lenosti najít něco dalšího.
luma64
Profil
No čo sa týka dokumentácie, tú som si pozeral už predtým, podľa nej som si nastavil zarovnania v stĺpcoch, skrytie stĺpcov, premenovanie atď. Neviem ale, ako som popísal vyššie, zabezpečiť vypisovanie vo fomáte ako potrebujem ( 123 456.99).

V prípade, že hodnota v stĺpci v tbl je 123456.99, vypíše sa 123 456.99 , tj. správne
V prípade, že hodnota v stĺpci v tbl je 123456.9, vypíše sa 123 456.9, tj. iba s jednou číslicou v desatinách
V prípade, že hodnota v stĺpci je 123456.00 vypíše sa iba 123 456, tj. bez núl
Formárovanie a vypisovanie robím takto:
$dg -> set_col_format("cenabezdph_num ", 'number', array("thousandsSeparator" => " ", "decimalSeparator" => ".", "decimalPlaces" => '2', "defaultValue" => '0.00')); 

Ak je ale problém s odpoveďou, aj tak ďakujem !
_es
Profil
luma64:
Čo si tak pozrieť phpgrid.com/documentation/set_col_currencycol_name-prefix-suffix-thousandsseparator-decimalseparator-decimalplaces2-defaultvalue0-00?
Keeehi
Profil
phpgrid.com/documentation/set_col_format
V části Example třetí řádek.
luma64
Profil
S formatovani a vypisovanim pomocou
$dg -> set_col_currency("price", "EUR", "", ",", 2, "0.00");
som to skusal tiež už včera.

Jediny "normálny" zápis je
$dg -> set_col_currency("cenabezdph_num", "", "", "  ");
pričom výsledok je, že tisícky sú oddelené medzerou, ale nie sú zobrazené desatiny ( jedna alebo obidve číslice).


Keeehi:
Použije teda
 
povodne ... $dg -> set_col_format("weight", 'number', array("thousandsSeparator" => ",", "decimalSeparator" => ".", "decimalPlaces" => '2', "defaultValue" => '0.00'));

Hodnota v stĺpci je 20126133.00.

1, Upravím si oddeľovač tisícok na medzeru, vtedy mi nezobrazia desatinny ( jedna alebo obidve číslice), napr. 20 126 133.
 $dg -> set_col_format("cenabezdph_num", 'number', array("thousandsSeparator" => " ", "decimalSeparator" => ".", "decimalPlaces" => '2', "defaultValue" => '0.00')); 

2.Keď nahradím definíciu number typom decimal
$dg -> set_col_format("cenabezdph_num", 'decimal', array("thousandsSeparator" => " ", "decimalSeparator" => ".", "decimalPlaces" => '2', "defaultValue" => '0.00')); 
zobrazujú sa mi číselné hodnoty aj s dvoma desatinami ale nie sú oddelené medzerou (napr. 20126133.00).
Tomášeek
Profil
luma64:
Člověče, ty na programování asi nebudeš. Našel bych si jiného koníčka...

V examplu máš 6 parametrů, přičemž jeden z nich ovlivňuje desetinná místa. Ty použiješ 4 s divíš se, že to funguje jinak.
luma64
Profil
Tomášeek:
Že tých parametrov je nie 6 ale 4 to viem. Skús si prečítať aj to, čo som napísal pre Keehi (pred Tebou).
Joker
Profil
Tomášeek:
Ona ani ta dokumentace není kdovíjaká, jak koukám.

Ukázkový příklad v dokumentaci má sice šest parametrů, ale v seznamu parametrů tamtéž jich je sedm, přičemž v příkladu zjevně chybí pátý z nich.
Takže ukázkový příklad nesedí s textem dokumentace.
Navíc luma64 sice ty poslední (asi tři, možná dva) parametry vynechal, nicméně to co chce jsou podle dokumentace jejich výchozí hodnoty, takže by to nemělo vadit.

luma64:
Vzhledem k výše uvedenému bych asi nespoléhal úplně na výchozí hodnoty v dokumentaci a zkusil tam dát všechny natvrdo.
Kcko
Profil
Joker:
luma64:
Vzhledem k výše uvedenému bych asi nespoléhal úplně na výchozí hodnoty v dokumentaci a zkusil tam dát všechny natvrdo.
A já bych se podíval přímo do API s jakými argumenty se tam pracuje :-) a kdyby to nešlo na první dobrou tak bych si to přímo v dané metodě oddebugoval.


Navíc ten grid je dost hroznej. Zkusil bych spíš něco jako ublaboo.org/datagrid
luma64
Profil
No pozrel som si ho. Doporučujem však www.phpgrid.org .

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0