Jump to content
php.lv forumi

Infants

Reģistrētie lietotāji
  • Posts

    63
  • Joined

  • Last visited

Everything posted by Infants

  1. Sveiki. Ir nepieciešamība izdomāt pareizāko veidu kā ielasīt datus no xml (bankas fidavista) datubāzē. Ar xml nolasīšanu nav problēmu, ar datubāzi nav problēmu, ar php pusi arī nav problēmu. Ir neliela aizķeršanās - kā to visu darīt! Aizķeršanās ir tāda, ka katru reizi būs vairāki ieraksti, kurus vajadzēs modificēt pirms saglabāšanas datubāzē (ar roku). Īstenībā ir 2 varianti: 1. Ielasīt xml, izdrukāt html tabulu, kaut kādos inputos salabot to, kas labojams un to visu saglabāt ar post. (xml var gadīties arī paliels) 2. Uzreiz ar php palīdzību 'iepūst xml'u datubāzē un pēc tam iziet cauri un izlabot (piem. popup logā) labojamos datus. Nepatīk doma, ka kādā brīdī datubāzē būs nepareizi dati. Kā Tev liekās, kurš variants ir pareizāks? Varbūt es kaut ko nezinu un ir kāds trešais variants?
  2. Šinī gadijumā es pats esmu grāmatvedība. Zinu, ko es drīkstu un ko nē. Galvenais ir, lai nekur nerodās gļuki. Ar tiem diff un intersect pārbaudīju 10 dažādus gadījumus - atgrieza tieši to, ko vajag. Cerams, ka nepalika kāds nepārbaudīts variants. Anyway, paldies Tev par palīdzību!
  3. Nezinu gudri vai nē, bet pagaidām šāds variants izskatās ok. Vismaz nav jādzēš un jāinserto pa jaunu. Bail jau gan ir no tām funkcijām. foreach(array_diff_key($old, $new) as $to_delete) { ORM::factory('Invoice_Item')->delete_invoice_item($to_delete, $invoice->id); } foreach(array_intersect_key($new, $old) as $to_update) { ORM::factory('Invoice_Item')->update_invoice_item($to_update, $invoice->id); } foreach(array_diff_key($new, $old) as $to_insert) { ORM::factory('Invoice_Item')->insert_invoice_item($to_insert, $invoice->id); }
  4. Tās ir svarīgas pavadzīmes. Kas tieši tevi satrauc? Iespēja labot pavadzīmi? :)
  5. Nu ja! Man ir divi array'i - $old_items kā vecie pavadzīmes itemi un $data['item'] kā jaunie no post datiem. Kuram no tiem man taisīt foreach() ? Abiem? Ok, ja foreach($old_items), tad salīdzinu ar $data['item']. Ja tur ir tāds id, tad update, ja nav - delete. Pēc tam - Kā man dabūt no $data['item'] rindiņas kuras nav aiztiktas? (Jaunie itemi)? Sajutos tik tizls, ka bail. :)
  6. Lūk, šis bija tas, ko gribēju dzirdēt! Laikam ar kaut kādām array funkcijām to var smuki izdarīt, bet pietrūkst zināšanu...
  7. Sakarā ar to, ka gan Tu neesi iedziļinājies jautājumā, gan arī es esmu to tizli pajautājis, te mans šībrīža jaunais post datu apstrādes kontrolieris. Esmu ticis līdz tai vietai, kur ir divrindu komentārs. (107-108 rindiņa) Domāju, ko darīt tālāk. public function action_process() { if (!$this->request->post()) die("Nav post dati!"); $data = $this->request->post(); $invoice = ORM::factory('Invoice', $data['id']); if ($invoice->loaded()) { // Laboju veco pavadzīmi // $old_items glabā visus vecās pavadzīmes itemus $old_items = ORM::factory('Invoice_Item') ->where('invoice_id', '=', $invoice->id) ->find_all(); } else { // Jauns dokuments! Jāčeko un jāuzliek autonumbers! if ($data['type'] == 'sale' && $data['number'] == ORM::factory('Autonumber')->get_sale_number()) { try { ORM::factory('Autonumber')->set_sale_number(); } catch (Exception $e) { // Kļūda var būt, ja pārsniedz MAX $this->template->content = Debug::dump($e->errors()); } } if ($data['type'] == 'cash' && $data['number'] == ORM::factory('Autonumber')->get_cash_number()) { try { ORM::factory('Autonumber')->set_cash_number(); } catch (Exception $e) { // Kļūda var būt, ja pārsniedz MAX $this->template->content = Debug::dump($e->errors()); } } } $invoice->values($data, array( 'user_id', 'delivery_address', 'comments', 'number', 'payment_type_id', 'payment_date', 'transport')); $invoice->invoice_date = $data['date']; $invoice->year = date("Y", strtotime($data['date'])); $invoice->month = date("m", strtotime($data['date'])); $invoice->date = date("d", strtotime($data['date'])); $invoice->type_id = ORM::factory( 'Document_Type', array('address'=>$data['type']))->id; $invoice->subtotal = Catalog::price_to_db($data['subtotal']); $invoice->tax = Catalog::price_to_db($data['tax']); $invoice->total = Catalog::price_to_db($data['total']); $invoice->salesperson_id = Auth::instance()->get_user()->id; try { $invoice->check(); // Te jāliek pēc tam SAVE } catch(ORM_Validation_Exception $e) { $this->template->content = Debug::dump($e->errors()); } // Kā tagad labāk darīt? Noņemt no stoka vecos itemus un izdzēst, vai // mēģināt labot tos un meklēt, kuri bija un vairs nav? // Darbs ar invoice_items rindām foreach($data['item'] as $item) { try { ORM::factory('Invoice_Item')->add_invoice_item($item, $invoice->id); } catch (ORM_Validation_Exception $e) { $this->template->content = Debug::dump($e->errors()); } } }
  8. Tas tā ir tikai jautājuma 'saīsinātajā variantā'. Reālajā db viss ir pēc kohana ORM stila un smuki. (Invoice_Items ir ORM modelis nevis datubāzes tabulas nosaukums. Sorry, laikam nevajadzēja tā rakstīt.) Izstāstīsi lūdzu sīkāk?
  9. Sveiki. Ir vajadzīga neliela palīdzība ar loģikas izprašanu. Piemērs būs stipri saīsināts, bet tā, lai galveno domu var saprast. Ir tabulas - Invoices, Invoice_Items, Items, Item_Stock. Invoices: id, number, summa... Invoice_Items: id, invoice_id, item_id, daudzums, cena... Items: id, name, ..... Item_Stock: id, item_id, daudzums..... Doma, ceru, visiem ir skaidra, kas ar ko un kā ir sasaistīts. Ir smuka forma, kurā tas viss tiek ievadīts un saglabāts. Iekš 'Invoice_Items', saglabājot vienu vai vairākus ierakstus, katrs ieraksts atjauno vēl kādu ierakstu citā tabulā, piemēram, atjauno info tabulā 'Item_Stock". Veidojot jaunu pavadzīmi, viss notiek baigi smuki, viss ir skaidrs. Problēmu sagādā pavadzīmes labošana. (Īstenībā jau pa nesmuko nesagādā, bet pa nesmuko ir ļoti daudz queriji un iekšā 'vārās', ka to visu var izdarīt daudz smukāk.) Šobrīd ir tā, ka labojot dokumentu, nolasa visus tās vecos itemus, noņem Item_Stock, izdzēš visus, un tad ievieto jaunos un pievieno stock. Ir doma pārtaisīt, lai vecos Invoice_Items atrod pēc rindas id, un vienkārši updeito, bet.. kas notiek, ja labotajā dokumentā kāda rinda ir izdzēsta? Kā lai smuki nočeko, kuri invoice_items.id vairs neeksistē? Tas tā, man labās idejas rodas, kad es vienkārši kādam pajautāju. Pat nevajag atbildi! Bet būšu ļoti priecīgs, ja pasviedīsi kādu ideju...
  10. Pārbaudi gan vēlreiz šo. Man € 11,02 izdrukāja kā 'vienpadsmit eiro un divdesmit centu'.
  11. Bet katrā rindā taču tikai 2 int, nevis kaut kur citur mistisks, sarežģīti lietojams array?
  12. Jautrības labad paskaties simtus citu video youtubē, kur cilvēki MĒĢINA panākt šo ar īstiem magnētiem.
  13. Droši vien, lai vajadzības gadījumā spētu sazināties ar uzņēmuma vadību? Iesniegumu par ikgadējo atvaļinājumu jāraksta 2 valodās. Vienu sev, vienu 'viņam'!
  14. Ja 'tieši šeit', tad ar javascript.
  15. Ļoti šaubos, bet nu ja jau tu tā saki... Vispār pma nu galīgi nav tas tūlis, ar kuru būtu jāievieto datubāzē dati. Esmu pietiekami daudz nomocījies ar encodinga konfigurēšanu.
  16. Infants

    PHP meetup

    Ha, kas tad to nezināja!
  17. Infants

    Pārdodu PC

    Domāju, kādi 95% stacionāro datoru lietotāju šobrīd lieto tādu pēdējo reizi dzīvē.
  18. Infants

    PHP meetup

    Cerams, pēc tam varēs paskatīties, paklausīties video? Interesē, bet bail no Jums (un afterparty)! :)
  19. Skaidrs, paldies. Cerams, nebūs problēmas, kad būšu uz Plutona... ;)
  20. Padalieties ar gudrību - kā torrentos atrast sev nepieciešamo dizainu.
  21. Jautājums, laikam diezgan specifisks Kohana 3 un hmvc. Ir projekts, kura struktūra tiek būvēta kā Ko3 moduļi. Ir 2 moduļi - frontendam un backendam. Kā pareizāk būvēt ORM modeļus, ja abi modules strādās ar vienām un tām pašām datubāzes tabulām? It kā varētu iznest uz APPPATH/classes/model, bet gribās, lai katram modulim ir savi. Taisīt katram modulim modeļus savā subfolderī (modules/frontend/classes/model/frontend/item.php) un norādīt $_table_name? Kaut kur manīju, ka šādā variantā esot problēmas ar caching?
×
×
  • Create New...