PHP > prepisovani dat v souboru pomoci web stranky
Zdravim,
měl bych prosbičku co se týče PHP (viz nadpis).
pro nastínění situace:
- představte si ceník
- všechny ceny v tabulkách jsou definovány ze souboru např data.php
- pak tu máme "příplatek" (který se může měnit)
- a spodní ceník (viz odkaz) je vlastně součet horních cen + příplatek
tabulky definované v ceníku jsou takto:
Kód:
$priplatek_h = 2.00;
$cena_a1 = 50.00;
$cena_a2 = 60.00;
Pokud kliknete dole pod ceníkem na změnu cen, otevře se stránka kde můžete ceny (nebo příplatek) upravit.
Což o to nyní mi to funguje, ALE rád bych to ošetřil proti blbostem, poněvadž:
- napíšu-li cokoliv jiného než číslo = chyba
- napíšu-li číslo ale namísto tečky udělám čárku (což by se stalo asi několiksetkrát) = opět chyba
kamarád mi poradil cosi s funkcí (double) což řeší první problém
a to že napíšu-li místo čísla třeba slovo, systém jej zamění za hodnotu 0.00
ovšem druhý problém to stále neřeší...
Způsob jakým se přepisuje soubor je následující:
Kód:
if(isset($_POST['posting'])) {
$p = $_POST;
if(!is_double($p['priplatek_h'])) (double)$p['priplatek_h'];
if(!is_double($p['cena_a1'])) (double)$p['cena_a1'];
if(!is_double($p['cena_a2'])) (double)$p['cena_a2'];
atd..
if(authorize($HTTP_POST_VARS["name"], $HTTP_POST_VARS["password"])) {
$texty = '
$priplatek_h = '.$p["priplatek_h"].';
$cena_a1 = '.$p["cena_a1"].';
$cena_a2 = '.$p["cena_a2"].';
atd..
';
$f = fopen($main, "w+");
fwrite($f, $texty);
fclose($f);
přičemž "$main" je soubor do kterého se data zapisují...
A soubor samozřejmně má atributy 777 čili umožněno čtení, zápis i vykonání.
Nápady, řešení ?
PS nejsem php programátor, čili prosím polopatě..
Re: PHP > prepisovani dat v souboru pomoci web stranky
Tak jeste pred tim pretypovanim na double muzes zmenit v retezci carky za tecky:
Kód:
if(!is_double($p['priplatek_h'])) {
$p['priplatek_h'] = (double)str_replace(',', '.', $p['priplatek_h']);
}
Jeste by se toho dalo udelat se vstupem vic, treba trim(), odstranit mezery uvnitr retezce atd. Ale jestli to vyplnujes jen ty, tak asi vis, co tam delas nejcasteji za chyby ;)
Re: PHP > prepisovani dat v souboru pomoci web stranky
a) pokud to chces osetrit primo na vstupu, tak zde je namiste nejaky ten script
b) co si matne pamatuju, php umi fci is_neco vicero, jedna je zminena
c) nejaky extra blby duvod proc to cpat do souboru a ne do databaze ? Jakmile tam budes mit vic nez nekolik jednotek veci, tak to bude nespravovatelny a pomaly.
Re: PHP > prepisovani dat v souboru pomoci web stranky
Citace:
Původně odeslal
peshwood
Jeste by se toho dalo udelat se vstupem vic, treba trim(), odstranit mezery uvnitr retezce atd.
Díky vyzkouším
A reakce pro Jezevce - ja bohuzel db neumim (php tedy taky ne, ale tohle je jeste takova vec kterou jakz takz zvladam)
Re: PHP > prepisovani dat v souboru pomoci web stranky
Presto myslim, ze by bylo vyhodnejsi tu db se naucit. Na tohle v nejjednodussi forme, sice ne moc koser, ale furt lepsi nez ten file, potrebujes jednu tabulku, ktera nahradi ten soubor.
Abys takovouhle zakladni db rozjel potrebujes:
stahnout MySQL, proklikat se next, next instalaci.
stahnout phpMyAdmin, klikatko k databazi
a pro samotne dotazovani se naucit 3 prikazy:
SELECT
UPDATE
INSERT
Db pak za tebe mimojine vyresi treba tuto validaci udaju, kterou tu slozite resis.
Re: PHP > prepisovani dat v souboru pomoci web stranky
Citace:
Původně odeslal
monsoon
Presto myslim, ze by bylo vyhodnejsi tu db se naucit. Na tohle v nejjednodussi forme, sice ne moc koser, ale furt lepsi nez ten file, potrebujes jednu tabulku, ktera nahradi ten soubor.
Abys takovouhle zakladni db rozjel potrebujes:
stahnout MySQL, proklikat se next, next instalaci.
stahnout phpMyAdmin, klikatko k databazi
a pro samotne dotazovani se naucit 3 prikazy:
SELECT
UPDATE
INSERT
Db pak za tebe mimojine vyresi treba tuto validaci udaju, kterou tu slozite resis.
MySQL + phpadmin je součístí webu (hostingu) kde jsou stránky. to problém není
vytvořit db také ještě umím
Ale neumím se dotazovat ze souboru do db.
Je to težký - nejsem za to placen abych to musel umět - asi by mi to v lecčem pomohlo, ale v práci na to není čas se to učit. A na doma raději dělám jiné věci....
Re: PHP > prepisovani dat v souboru pomoci web stranky
Tady máš docela pěknej "step by step" postup jak pracovat s DB na MySQL via PHP, od připojení, přes výběr DB, SELECT dotaz (a jeho zpracování), INSERT atd...
http://www.howtodothings.com/compute...ith-mysql.html
Připojuji se k názoru, že než tohle "prasit" v souborech, je DB asi tak 100x lepší :-) Souborem se to dá dělat taky, ale do Brna můžeš jet taky na kole, ale v autě je to kratší a pohodlnější :wink:
Re: PHP > prepisovani dat v souboru pomoci web stranky
Taky díky Davide K+ (pokud to pujde... EDIT hmm tak nejde až rozdám zase K nekomu dalsimu)
PS chtel jsem si jeste malinko rypnout ze do brna to bude autem i na kole stejne dlouhé (nikoliv kratší) :) hehe
Re: PHP > prepisovani dat v souboru pomoci web stranky
Citace:
Původně odeslal
Atreides
Taky díky Davide K+ (pokud to pujde... EDIT hmm tak nejde až rozdám zase K nekomu dalsimu)
PS chtel jsem si jeste malinko rypnout ze do brna to bude autem i na kole stejne dlouhé (nikoliv kratší) :) hehe
Časově, rejpale :-D Chtěl jsem to opravit, ale nakonec jsem si řekl, že to nechám být, aspoň se toho nějakej puntíčkářskej mameluk chytne :-D :-D
EDIT: S DB určitě neškodí umět aspoň základní operace a SQLko je jednoduchý a všude na netu se válí spousta "how to" návodů, pokud tomu věnuješ tak jedno odpoledne, tak to podle mě zmákneš, pokud s PHP umíš základní věci.
Re: PHP > prepisovani dat v souboru pomoci web stranky
Co se DB tyce, staci ti naprosty minimum a omoc si to zjednodusis. Na spouste hostingu totiz nebude mit webserver pravo zapisovat do souboru - to bude prvni na co narazis.
V uplne nejhloupejsi variate potrebujes tabulku s 6ti sloupci
id, zbozi, typ_ceny, cena1, cena2, cena3, na prvni 3 by sis mel dat index, prvni by mel byt samo automaticky generovany unikarni klic. Priplatek bych resil asi mimo DB a v ni bych uchovaval uz vypocitany ceny.
Pak potrebujes neco jako select typ_ceny, cena1, cena2, cena3 from tabulka where zbozi = 'moje zbozi' order by typ_ceny, to ti vrati vsechny ceny k tomu zbozi (v typu budes mit trebas tu velikost baleni ...)
Pri zmene pak update tabulka set cena1 = '100', cena2 = '200' ... where zbozi = ' ... ' samo das tam promene. Pro vlozeni ceny pak pouzijes obdobne insert.
Jen upozornuju na jednu vec, MySQL umi "od prirody" menit kodovani stringu, pokud bys tedy hodlal pracovat krom cisel s texty s diakritikou, existuji 3 mista ktera je treba ohlidat. Je to nastaveni MySQL (kodovani ve kterem se ukladaji data - lze definovat bud v konfiguraci jako default nebo pro kazdou databazi/tabulku/...), kodovani konexe - to muzes zmenit po pripojeni k databazi, opet se da default nastavit v konfiguraci MySQL a treti vec je skutecne kodovani dat se kterymi hodlas pracovat - zalezi na hlavickach ktere posles klientovi. Nejvhodnejsi je si pohlidat aby vsude bylo utf8 a nebudes mit problemy ani s obrazky cizincu :D.
Re: PHP > prepisovani dat v souboru pomoci web stranky
Citace:
Původně odeslal
Jezevec
Co se DB tyce, staci ti naprosty minimum a omoc si to zjednodusis. Na spouste hostingu totiz nebude mit webserver pravo zapisovat do souboru - to bude prvni na co narazis.
Ta samozřejmně jde jinak bych to ani po vás nechtěl poradit.
btw nevyužívám běžně dostupný hosting - je to složitejší...
Citace:
Původně odeslal
Jezevec
Jen upozornuju na jednu vec, MySQL umi "od prirody" menit kodovani stringu, pokud bys tedy hodlal pracovat krom cisel s texty s diakritikou, existuji 3 mista ktera je treba ohlidat. .... Nejvhodnejsi je si pohlidat aby vsude bylo utf8 a nebudes mit problemy ani s obrazky cizincu :D.
Ano toto znám z fóra, které provozuji a vím že kodování je problém (když se leze do db a zvolí je v phpadminu jiné kodování - pak je to sranda...