{"id":289,"date":"2023-03-24T21:27:19","date_gmt":"2023-03-24T21:27:19","guid":{"rendered":"https:\/\/tarkvara.thkit.ee\/veeb\/?page_id=289"},"modified":"2024-12-09T07:32:26","modified_gmt":"2024-12-09T07:32:26","slug":"haldamine","status":"publish","type":"page","link":"https:\/\/tarkvara.thkit.ee\/veeb\/haldamine\/","title":{"rendered":"Haldamine"},"content":{"rendered":"\n<p>Seni sortisime ja otsisime neid andmeid, mis juba andmetabelis olemas. Kui andmete sisestamine k\u00e4ib sisev\u00f5rgus oleva s\u00fcsteemi kaudu, siis v\u00f5ibki veebiliides n\u00f5nda lihtsa osaga piirduda. Kui aga veebi kaudu tuleb ka andmeid lisada ja muuta, siis vaja m\u00f5nev\u00f5rra rohkem koodi kirjutada.&nbsp;<\/p>\n\n\n\n<p>Kuna kaubagrupid on m\u00e4\u00e4ratud eraldi tabelis ning v\u00f5imaluse korral paigutatakse kaup juba olemasolevasse gruppi, siis paremaks mooduseks on kaubagrupi nime mitte tekstina sisse kirjutada, vaid olemasolevate hulgast rippmen\u00fc\u00fcst valida. Ning kui sobiv grupp puudub, saab selle pigem kusagilt eraldi kohast juurde panna &#8211; nii et seda edaspidi k\u00f5ikide lisatavate kaupade juures kasutada saab.<\/p>\n\n\n\n<p>Kood sellise lisamisvormi loomiseks v\u00f5iks v\u00e4lja n\u00e4ha nagu allpool. Nimetus ja nind tulevad tekstiv\u00e4ljadest. Tasub m\u00e4rkida, et nii kauba lisamise nupule kui ka grupi lisamise nupule on pandud nimi. Sellisel puhul saab serverisse saadetud andmete p\u00f5hjalt vaadata, et millisele nupule vajutati. Vormi action-parameetris m\u00e4\u00e4ratud veebilehele saadetakse kaasa nupu nimega parameeter, mille v\u00e4\u00e4rtuseks on nupu peale kirjutatud tekst.&nbsp;<\/p>\n\n\n\n<p>Rippmen\u00fc\u00fc loomiseks on tehtud eraldi alamprogramm. Kuna tegemist suhteliselt levinud ja korduva toiminguga, siis on otstarbekas SQL-lause p\u00f5hjal rippmen\u00fc\u00fc loomine eraldi alamprogrammi kirjutada ning seda hiljem vajalikes kohtades kasutada. \u00dcks p\u00f5hjus, et n\u00f5nda v\u00e4hem koodi kirjutada. Teine p\u00f5hjus, et kui n\u00f5nda saab men\u00fc\u00fc loomise korra viisakalt valmis tehtud, siis j\u00e4rgmistel kordadel pole enam vaja karta, et \u00e4kki sinna m\u00f5ni n\u00e4puviga kergesti sisse satub.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n &lt;form action=&quot;kaubahaldus.php&quot;&gt; \n &lt;h2&gt;Kauba lisamine&lt;\/h2&gt; \n &lt;dl&gt; \n &lt;dt&gt;Nimetus:&lt;\/dt&gt; \n &lt;dd&gt;&lt;input type=&quot;text&quot; name=&quot;nimetus&quot; \/&gt;&lt;\/dd&gt; \n &lt;dt&gt;Kaubagrupp:&lt;\/dt&gt; \n &lt;dd&gt;&lt;?php \n echo looRippMenyy(&quot;SELECT id, grupinimi FROM kaubagrupid&quot;,   &quot;kaubagrupi_id&quot;); \n ?&gt; \n &lt;\/dd&gt; \n &lt;dt&gt;Hind:&lt;\/dt&gt; \n &lt;dd&gt;&lt;input type=&quot;text&quot; name=&quot;hind&quot; \/&gt;&lt;\/dd&gt; \n &lt;\/dl&gt; \n &lt;input type=&quot;submit&quot; name=&quot;kaubalisamine&quot; value=&quot;Lisa kaup&quot; \/&gt;  &lt;h2&gt;Grupi lisamine&lt;\/h2&gt; \n &lt;input type=&quot;text&quot; name=&quot;uuegrupinimi&quot; \/&gt; \n &lt;input type=&quot;submit&quot; name=&quot;grupilisamine&quot; value=&quot;Lisa grupp&quot; \/&gt;  &lt;\/form&gt; \n\n<\/pre><\/div>\n\n\n<p>Rippmen\u00fc\u00fc loomine ise ikka abifunktsioonide failis. Funktsioonile antakse ette kaks parameetrit. Esimene on SQLi SELECT-lause, millest v\u00e4ljastatud tabel annab rippmen\u00fc\u00fcle valiku id-d ja n\u00e4htavad v\u00e4\u00e4rtused. Teiseks parameetriks on select-elemendi nimi HTMLi vormis. HTMLi tekst lihtsalt pannakse jupi kaupa kokku ning salvestatakse muutujas $tulemus. L\u00f5puks antakse sealt ka funktsioonist v\u00e4lja.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n function looRippMenyy($sqllause, $valikunimi){ \n global $yhendus; \n $kask=$yhendus-&gt;prepare($sqllause); \n $kask-&gt;bind_result($id, $sisu); \n $kask-&gt;execute(); \n $tulemus=&quot;&lt;select name=&#039;$valikunimi&#039;&gt;&quot;; \n while($kask-&gt;fetch()){ \n $tulemus.=&quot;&lt;option value=&#039;$id&#039;&gt;$sisu&lt;\/option&gt;&quot;; \n } \n $tulemus.=&quot;&lt;\/select&gt;&quot;; \n return $tulemus; \n } \n\n<\/pre><\/div>\n\n\n<p>Kuna p\u00fc\u00fcame halduslehe enese v\u00f5imalikult programmikoodist puhta hoida, tuleb abifunktsioone veel m\u00f5ned juurde kirjutada. Grupi lisamiseks k\u00e4sklus \u00fche grupi lisamiseks kaubagruppide tabelisse.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n function lisaGrupp($grupinimi){ \n global $yhendus; \n $kask=$yhendus-&gt;prepare(&quot;INSERT INTO kaubagrupid (grupinimi)  VALUES (?)&quot;); \n $kask-&gt;bind_param(&quot;s&quot;, $grupinimi); \n $kask-&gt;execute(); \n } \n\n<\/pre><\/div>\n\n\n<p>Kauba lisamiseks k\u00e4sklus kaupade tabelisse rea panekuks. Kusjuures eeldatakse, et parameetrina juba tuleb kaubagrupi_id, kuhu sisse lisatav kaup kuulub. Kuna me eelnev select-valik sai n\u00f5nda tehtud, et n\u00e4ha on grupi nimi, kuid serverisse saadetakse kaubagrupi id, siis on nende andmete salvestamine lihtne.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n function lisaKaup($nimetus, $kaubagrupi_id, $hind){ \n global $yhendus; \n $kask=$yhendus-&gt;prepare(&quot;INSERT INTO  \n kaubad (nimetus, kaubagrupi_id, hind) \n VALUES (?, ?, ?)&quot;); \n $kask-&gt;bind_param(&quot;sid&quot;, $nimetus, $kaubagrupi_id, $hind); \n $kask-&gt;execute(); \n } \n\n<\/pre><\/div>\n\n\n<p>Et p\u00e4rast andmete sisestamist teaks kaubahalduse leht abifunktsioonide alt sobiva k\u00e4skluse v\u00e4lja kutsuda, tuleb kaubahalduse lehe algusesse lisada kontrollid saabuvate andmete kohta. Kui oli vajutatud nupule nimega grupilisamine, siis j\u00f5uab serverisse parameeter sama nimega ning selle j\u00e4rgi teab v\u00e4lja kutsuda grupi lisamise funktsiooni. Samuti tasub k\u00e4ituda kauba lisamise juures. Loodud abifunktsioonile tuleb ette anda k\u00f5ik lisamiseks vajalikud andmed, mis $_REQUEST muutuja kaudu sisestusv\u00e4ljadest kohale j\u00f5uavad.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n if(isSet($_REQUEST&#x5B;&quot;grupilisamine&quot;])){ \n lisaGrupp($_REQUEST&#x5B;&quot;uuegrupinimi&quot;]); \n header(&quot;Location: kaubahaldus.php&quot;); \n exit(); \n } \n if(isSet($_REQUEST&#x5B;&quot;kaubalisamine&quot;])){ \n lisaKaup($_REQUEST&#x5B;&quot;nimetus&quot;], $_REQUEST&#x5B;&quot;kaubagrupi_id&quot;], $_REQUEST&#x5B;&quot;hind&quot;]);  header(&quot;Location: kaubahaldus.php&quot;); \n exit(); \n } \n\n<\/pre><\/div>\n\n\n<p>Juurde ka kauba kustutamine. Kusjuures nagu ikka, on viisakas enne k\u00fcsida, kas ikka tahetakse vastavat kaupa kustutada &#8211; et poleks kogemata vajutuse t\u00f5ttu andmed kaduma l\u00e4inud. K\u00f5igepealt tuleb siis iga kauba ette vastav kustutusviide teha koos Javaskripti abil k\u00fcsimisega.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n &lt;td&gt;&lt;a href=&quot;kaubahaldus.php?kustutusid=&lt;?=$kaup-&gt;id ?&gt;&quot;  onclick=&quot;return confirm(&#039;Kas ikka soovid kustutada?&#039;)&quot;&gt;x&lt;\/a&gt;  &lt;\/td&gt; \n &lt;td&gt;&lt;?=$kaup-&gt;nimetus ?&gt;&lt;\/td&gt; \n &lt;td&gt;&lt;?=$kaup-&gt;grupinimi ?&gt;&lt;\/td&gt; \n &lt;td&gt;&lt;?=$kaup-&gt;hind ?&gt;&lt;\/td&gt; \n\n<\/pre><\/div>\n\n\n<p>Kaubahalduse lehe uuel laadimisel kontrollitakse, et kas \u00e4kki on saadetud kaasa kustutusid, mille j\u00e4rgi kauba kustutamine otsustada. Kui jah, siis kutsutakse abifunktsioonide alt v\u00e4lja vastav k\u00e4sklus.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n if(isSet($_REQUEST&#x5B;&quot;kustutusid&quot;])){ \n kustutaKaup($_REQUEST&#x5B;&quot;kustutusid&quot;]); \n } \n\n<\/pre><\/div>\n\n\n<pre class=\"wp-block-code\"><code>K\u00e4sklus ise loogiline - tabelist v\u00f5etakse \u00e4ra see rida, mille id kattub saadetud kustutatava kauba id ga.<\/code><\/pre>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nfunction kustutaKaup($kauba_id){\u00a0\n\n\u00a0global $yhendus;\u00a0\n\n\u00a0$kask=$yhendus-&gt;prepare(&quot;DELETE FROM kaubad WHERE id=?&quot;);\u00a0\n\n\u00a0$kask-&gt;bind_param(&quot;i&quot;, $kauba_id);\u00a0\n\n\u00a0$kask-&gt;execute();\u00a0\n\n\u00a0}\n<\/pre><\/div>\n\n\n<p>&nbsp;<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seni sortisime ja otsisime neid andmeid, mis juba andmetabelis olemas. Kui andmete sisestamine k\u00e4ib sisev\u00f5rgus oleva s\u00fcsteemi kaudu, siis v\u00f5ibki veebiliides n\u00f5nda lihtsa osaga piirduda. Kui aga veebi kaudu tuleb ka andmeid lisada ja muuta, siis vaja m\u00f5nev\u00f5rra rohkem koodi kirjutada.&nbsp; Kuna kaubagrupid on m\u00e4\u00e4ratud eraldi tabelis ning v\u00f5imaluse korral paigutatakse kaup juba olemasolevasse gruppi, &hellip; <a href=\"https:\/\/tarkvara.thkit.ee\/veeb\/haldamine\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">Haldamine<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-289","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/comments?post=289"}],"version-history":[{"count":13,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/289\/revisions"}],"predecessor-version":[{"id":1094,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/289\/revisions\/1094"}],"wp:attachment":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/media?parent=289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}