{"id":307,"date":"2015-10-26T17:03:52","date_gmt":"2015-10-26T15:03:52","guid":{"rendered":"https:\/\/moijari.com\/?p=307"},"modified":"2016-12-29T22:09:43","modified_gmt":"2016-12-29T20:09:43","slug":"muutama-pikku-muutos-ja-yksi-suurempi","status":"publish","type":"post","link":"https:\/\/moijari.com\/?p=307","title":{"rendered":"Muutama pikku muutos ja yksi suurempi"},"content":{"rendered":"<p>Kaikki oikeudet tietenkin pid\u00e4tet\u00e4\u00e4n. Viimeinen versio ohjelmasta l\u00f6ytyy seuraavasta linkist\u00e4: <a href=\"https:\/\/moijari.com:5002\">moijari.com:5002<\/a><\/p>\n<p>Terttu-valikossa on uutena valintana yhteenveto, jolla saa koko terttu kannan kuvan. Siit\u00e4 on helpompi hahmottaa uutta fetch versiota (lukee lokeja). edit: Ja toisaalta sen avulla on helpompi hahmottaa save toimintoa, joka ilmeisesti tekee kaikki tapahtuman tarvitsemat muutokset kantaan (eli nuo tietovirrat, summattujen tietojen p\u00e4ivitykset jne) (vrt. transaktiot, commit). endedit. Esimerkki kannassa se n\u00e4ytt\u00e4\u00e4 t\u00e4ll\u00e4isen raportin:<\/p>\n<p>Lis\u00e4ksi poistin submit nappulan login n\u00e4yt\u00f6st\u00e4, se on nyt muotoa:<\/p>\n<p>html_printf(&#8220;&lt;input type=\\&#8221;submit\\&#8221; value=\\&#8221;Submit\\&#8221; style=\\&#8221;visibility:hidden;\\&#8221;&gt;&#8221;);<\/p>\n<p>Lis\u00e4ksi muutos moodi n\u00e4ytt\u00e4\u00e4 vain yhden tyhj\u00e4n rivin entisen 10 sijasta.<\/p>\n<p>T\u00e4m\u00e4 on varmaan lyhin posti, jonka olen kirjoittanut.<\/p>\n<pre> 'memberid', 'memberlength', 'membertype'\r\n 'userid', 'username', 'password'\r\n 'sovellus', 'sovelluksen nimi', 'link'\r\n 'sovellus', 'chapter', 'memberid'\r\n 'asiakasnumero', 'asiakkaan nimi', 'asiakkaan osoite', 'asiakkaan postinumero', 'asiakkaan postitmp'\r\n 'toimittajanumero', 'toimittajan nimi', 'toimittajan osoite', 'toimittajan postinumero', 'toimittajan postitmp'\r\n 'tuotenumero', 'tuotteen nimi', 'tuotteen hinta'\r\n 'sovellus', 'fromsovellus', 'tosovellus'\r\n 'tilausnumero', 'tilauksen asiakasnumero', 'tilauksen asiakkaan nimi', 'tilausp\u00e4iv\u00e4', 'tilauksen summa'\r\n 'tilausnumero', 'tilausrivin numero', 'tilauksen tuotenumero', 'tilauksen tuotteen nimi', 'tilauksen tuotteen hinta', 'tilattu m\u00e4\u00e4r\u00e4', 'rivin summa'\r\n 'tilausnumero', 'asiakasnumero', 'tilausp\u00e4iv\u00e4', 'tilauksen summa'\r\n 'toimitusnumero', 'toimituksen asiakasnumero', 'toimituksen tilausp\u00e4iv\u00e4', 'toimitusp\u00e4iv\u00e4', 'toimituksen summa'\r\n 'toimitusnumero', 'toimitusrivin numero', 'toimituksen tuotenumero', 'toimituksen tuotteen nimi', 'toimituksen tuotteen hinta', 'tilattu m\u00e4\u00e4r\u00e4', 'toimitettu m\u00e4\u00e4r\u00e4', 'rivin summa'\r\n 'laskunumero', 'asiakasnumero', 'laskun p\u00e4iv\u00e4', 'tilausp\u00e4iv\u00e4', 'toimitusp\u00e4iv\u00e4', 'er\u00e4p\u00e4iv\u00e4', 'laskun summa'\r\n 'laskunumero', 'laskurivin numero', 'tuotenumero', 'tuotteen nimi', 'tuotteen hinta', 'tilattu m\u00e4\u00e4r\u00e4', 'toimitettu m\u00e4\u00e4r\u00e4', 'laskutettu m\u00e4\u00e4r\u00e4', 'rivin summa'\r\n 'tapahtumanumero', 'kirjausp\u00e4iv\u00e4', 'kirjauskuukausi', 'kirjausvuosi', 'laskunumero', 'asiakasnumero', 'tilausnumero', 'toimitusnumero', 'tapahtuman summa'\r\n 'tapahtumanumero', 'tapahtumarivin numero', 'tilinumero', 'tapahtumarivin summa'\r\n 'sovellus', 'chapter', 'set'\r\n 'set', 'memberid'\r\n 'tilinumero', 'tilin nimi'\r\n 'sovellus', 'sovelluksen nimi', 'link', ''\r\n 'asiakasnumero', 'vuosi', 'myynti'\r\n 'asiakasnumero', 'myynti'\r\n 'asiakasnumero', 'tuotenumero', 'myynti'\r\n 'asiakasnumero', 'vuosi', 'tuotenumero', 'myynti'<\/pre>\n<pre>; T\u00e4m\u00e4 suoritetaan aina save nappulalla, n\u00e4in saadaan kannasta\r\n; yll\u00e4pidetty\u00e4 ajankohtainen kuva. Huomasin muuten taas pikku optimoinnin,\r\n; etsip\u00e4 se..\r\n\r\nskk_save_overview(struct set *set) \/* JariK 20151025 *\/\r\n{\r\n\u00a0 int comp,found,add,counts,counto;\r\n\u00a0 char *p,name[64],value[64],name2[64],value2[64];\r\n\u00a0 char *bones,temps[64];\r\n\u00a0 struct set *seto;\r\n\r\n\u00a0 p=set-&gt;data;<\/pre>\n<pre>\u00a0 bones=NULL;\r\n\u00a0 while(*p!='\\0') {\r\n\u00a0\u00a0\u00a0 set_get_next_element(name,&amp;comp,value,&amp;p);\r\n\u00a0\u00a0\u00a0 sprintf(temps,\"'%s'\",name);\r\n\u00a0\u00a0\u00a0 set_add_element_noquotes(&amp;bones,temps);\r\n\u00a0 }\r\n  ; Selataan edellinen overview l\u00e4pi tietue tietueelta\r\n  ; Jos kentt\u00e4\u00e4n add j\u00e4\u00e4 tosi, tietue on uusi.\r\n\u00a0 add=1;\r\n\u00a0 seto=setoverview;\r\n\u00a0 while(seto!=NULL) {\r\n\r\n    ; Lasketaan overview rivin kenttien lukum\u00e4\u00e4r\u00e4\r\n\u00a0\u00a0\u00a0 counto=0;\r\n\u00a0\u00a0\u00a0 p=seto-&gt;data;\r\n\u00a0\u00a0\u00a0 while(*p!='\\0') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 set_get_next_element(name,&amp;comp,value,&amp;p);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 counto++;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n    ; Lasketaan uuden tietueen kenttien lukum\u00e4\u00e4r\u00e4\r\n\r\n\u00a0\u00a0\u00a0 counts=0;\r\n\u00a0\u00a0\u00a0 p=set-&gt;data;\r\n\u00a0\u00a0\u00a0 while(*p!='\\0') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 set_get_next_element(name,&amp;comp,value,&amp;p);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 counts++;\r\n\u00a0\u00a0\u00a0 }\r\n\r\n    ; Jos kentti\u00e4 yht\u00e4 monta, verrataan kentt\u00e4 kent\u00e4lt<\/pre>\n<pre>\u00a0\u00a0\u00a0 if(counto==counts) {\r\n\r\n      ; Jos found kentt\u00e4\u00e4n j\u00e4\u00e4 yksi, l\u00f6ysimme edellisest\u00e4 overviewist\u00e4\r\n      ; t\u00e4m\u00e4n tietueen.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 found=1;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 p=seto-&gt;data;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 while(*p!='\\0') {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 set_get_next_element(name,&amp;comp,value,&amp;p);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if(set_get_element(name,&amp;comp,value2,bones)==0) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 found=0;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\r\n      ; Jos overview:st\u00e4 l\u00f6ytyi jo samanmuotoinen tietue,\r\n      ; ei tarvitse lis\u00e4t\u00e4 t\u00e4t\u00e4 tietuetta sinne.\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if(found==1) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 add=0;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 break;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n    ; Tarkistetaan seuraava overview tietuemalli.\r\n\u00a0\u00a0\u00a0 seto=seto-&gt;next;\r\n\u00a0 }\r\n  ; Jos uusi, lis\u00e4t\u00e4\u00e4n\r\n  ;\r\n\u00a0 if(add==1) {\r\n\u00a0\u00a0\u00a0 set_add_set_end(&amp;setoverview,bones);\r\n\u00a0 }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Kaikki oikeudet tietenkin pid\u00e4tet\u00e4\u00e4n. Viimeinen versio ohjelmasta l\u00f6ytyy seuraavasta linkist\u00e4: moijari.com:5002 Terttu-valikossa on uutena valintana yhteenveto, jolla saa koko terttu kannan kuvan. Siit\u00e4 on helpompi hahmottaa uutta fetch versiota (lukee lokeja). edit: Ja toisaalta sen avulla on helpompi hahmottaa save toimintoa, joka ilmeisesti tekee kaikki tapahtuman tarvitsemat muutokset kantaan (eli nuo tietovirrat, summattujen tietojen p\u00e4ivitykset&hellip; <a class=\"more-link\" href=\"https:\/\/moijari.com\/?p=307\">Continue reading <span class=\"screen-reader-text\">Muutama pikku muutos ja yksi suurempi<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/307"}],"collection":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=307"}],"version-history":[{"count":7,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/307\/revisions"}],"predecessor-version":[{"id":314,"href":"https:\/\/moijari.com\/index.php?rest_route=\/wp\/v2\/posts\/307\/revisions\/314"}],"wp:attachment":[{"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/moijari.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}