Autor | Zpráva | ||
---|---|---|---|
mardon Profil |
#1 · Zasláno: 17. 4. 2009, 10:02:48
Ahoj,
plácám si tady aplikacei, jejímž účelem je evidence vydaných certifikátů, přičemž momentálně má každý certifikaá v db tyto údaje- jméno na koho byl vydán, sériové číslo, email, platnost od a do. vytvořila jsem si třídu certifikát, která umí vypsat všechny certifikáty a vložit certifikát do db. Teď , ale bych potřebovala doplnit aplikaci skriptem, který by mi prošel všechny záznamy v db a zjistil, které certifikáty mi vyprší během následjících 4 týdnů. A tu jsem se pravě zarazila jakou metodpou doplnit moji třídu certifikát - např. vrátit čas do podle id a v cyklu pak volat ? class certificat { public function get_all_cert () { //$res = dibi::query('SELECT * FROM [certifikat]'); //$res = dibi::query('SELECT [id], [ser], [name], [email], TIME_FORMAT([od], %s) AS [od]', '%H %k %h %I %l ',' FROM [certifikat]'); //$res = dibi::query('SELECT [id], [ser], [name], [email], DATE_FORMAT([od], %s) AS [od]', '%d.%m.%Y ',' FROM [certifikat]'); $res = dibi::query(' SELECT [id], [ser], [name], [email], [od], [do] FROM [certifikat] '); $res->setType('od', dibi::FIELD_DATETIME, 'd. m. Y H:i'); $res->setType('do', dibi::FIELD_DATETIME, 'd. m. Y H:i'); return $res; } public function insert_cert ($ser,$name,$email,$od,$do) { $res = dibi::query('INSERT INTO [certifikat]', array( 'ser' => $ser, 'name' => $name, 'email'=> $email, 'od' => $od, 'do' => $do)); return $res; } P.S: kdyby byl nekdo ochoten v mých zacatecnických problémech poradit po ICQ, byla bych velmi ráda. |
||
Joker Profil |
#2 · Zasláno: 17. 4. 2009, 10:15:26
mardon
by mi prošel všechny záznamy v db a zjistil, které certifikáty mi vyprší během následjících 4 týdnů Asi bych přidal metodu na zjištění, které certifikáty expirují v nějakém období. Buď od-do, případně (pokud to bude pohodlnější), od + počet dní. No a ta metoda už by jednoduchým SQL dotazem jen našla certifikáty, jejichž datum expirace je v určeném období. |
||
tiso Profil |
#3 · Zasláno: 17. 4. 2009, 10:15:40
mardon - stačí len poskladať správnu query a vrátiť výsledky, nie?
principiálne: select ... from certifikat where do > now() and do < now()+4 weeks |
||
mardon Profil |
#4 · Zasláno: 17. 4. 2009, 10:23:39
takže např něco takového
jeste trochu bojuji co bude vysledkem public function expi_cert ($od,$do) { zjisti pocet zaznamu v db; v cyklu projdi db a pokud bude expriovat vloz id do pole vysledku vratit pole id expirujicih certifiaktu; } |
||
mardon Profil |
#5 · Zasláno: 17. 4. 2009, 23:21:54
takže jsem pokročila
public function expire_cert ($od,$do) { $where = array(); $where[] = array('do > %d', '$od'); $where[] = array('do < %d', '$do'); $result = dibi::query("SELECT * FROM certifikat WHERE %and", $where); return $result; } a pak volam $cert = new certificat; $od = date("Y-m-d H:i:s"); $do = date("Y-m-d H:i:s",strtotime("+4 week")); $exp_cert = $cert->expire_cert($od,$do); foreach ($exp_cert as $n => $row) { print_r($row); } ale nejak se mi nedostava výsledku mám podezžení jestli mám správně doatz v dibi poradí mi ještě někdo? |
||
mardon Profil |
#6 · Zasláno: 20. 4. 2009, 09:44:57 · Upravil/a: mardon
takže jse to opravila a nyní již funguje:
public function expire_cert ($od,$do) { $where = array(); $where[] = array('do > %d', $od); $where[] = array('do < %d', $do); $result = dibi::query("SELECT * FROM certifikat WHERE %and", $where); return $result; } |
||
Časová prodleva: 15 let
|
0