Jump to content
php.lv forumi

Infants

Reģistrētie lietotāji
  • Content Count

    63
  • Joined

  • Last visited

About Infants

  • Rank
    Ko3.3
  • Birthday 11/28/1981

Profile Information

  • Gender
    Male
  • Location
    Salaspils

Contact Methods

  • Skype
    infants1981
  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.
×
×
  • Create New...