{"id":140,"date":"2023-03-03T17:47:08","date_gmt":"2023-03-03T17:47:08","guid":{"rendered":"https:\/\/tarkvara.thkit.ee\/veeb\/?page_id=140"},"modified":"2023-03-03T17:47:33","modified_gmt":"2023-03-03T17:47:33","slug":"teadete-valik","status":"publish","type":"page","link":"https:\/\/tarkvara.thkit.ee\/veeb\/teadete-valik\/","title":{"rendered":"Teadete valik"},"content":{"rendered":"\n<p>M\u00f5nek\u00fcmne kassi andmed mahuvad \u00fchele lehele \u00e4ra. Aga seda vaid juhul, kui n\u00e4idatakse vaid kassi nime ja v\u00e4rvi. Kui juba lisada omaniku andmed ning veidigi suurem kassi pilt, siis veidigi v\u00e4iksema ekraani peal on mugav juba kasse \u00fchekaupa vaadata. J\u00e4rgnevalt uurimegi, kuidas selliseid lehti koostada, kus v\u00f5imalik tabeli \u00fche rea andmeid eraldi v\u00e4lja tuua.&nbsp;&nbsp;<\/p>\n\n\n\n<p>\u00dcsna mugav on lehele andmeid saata aadressiriba kaudu. Kui kirjutan failinimele taha k\u00fcsim\u00e4rgi ning sinna taha id=2 ehk siis nt. teadetevalik.php?id=2 , siis selle v\u00e4\u00e4rtuse 2 saan programmis k\u00fcsida muutujast $_REQUEST[&#8220;id&#8221;]. V\u00f5i kui tahan kontrollida, kas failinime j\u00e4rel saadeti parameeter nimega id, siis kontrollin if(isSet($_REQUEST[&#8220;id&#8221;]))&nbsp;<\/p>\n\n\n\n<p>N\u00f5nda ka j\u00e4rgmises l\u00f5igus. Kui parameeter saadeti, siis j\u00e4relikult soovitakse vaadata \u00fche konkreetse lehe andmeid, mida id n\u00e4itab. Kui aga parameetrit pole, siis inimene j\u00e4relikult ei tea veel lehte selle numbri j\u00e4rele k\u00fcsida ning tal on p\u00f5hjust pigem loetelust omale sobiv valida.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Kui id on olemas, siis saab selle j\u00e4rgi k\u00fcsida lehe muud andmed &#8211; praeguses n\u00e4ites pealkirja ja sisu. Tavalise SQL-lause juures saab \u00fche rea k\u00fcsimiseks panna WHERE-tingimuse juurde vastava piirangu. Nt SELECT id, pealkiri, sisu FROM lehed WHERE id=2;<\/p>\n\n\n\n<p>Kuna siin veebirakenduses tahetakse vastavalt kasutaja valikult n\u00e4ha erinevaid lehti, siis peab saama seda arvu muuta. MySQL Improved teek lubab muutuva v\u00e4\u00e4rtuse kohale panna k\u00fcsim\u00e4rgi ning p\u00e4rast selle v\u00e4\u00e4rtuse bind_param-k\u00e4su abil asendada. Hiljem tulev rida<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n $kask-&gt;bind_param(&quot;i&quot;, $_REQUEST&#x5B;&quot;id&quot;]);  \n<\/pre><\/div>\n\n\n<p>teatab, et parameetri t\u00fc\u00fcbiks on t\u00e4isarv ehk integer ehk t\u00e4ht i. Ning parameeter saab oma v\u00e4\u00e4rtuse muutujast $_REQUEST[&#8220;id&#8221;]. Edasi juba andmete k\u00e4ttesaamine bind_result kaudu m\u00e4\u00e4ratud muutujatesse nagu ennegi. Eelnevas n\u00e4ites v\u00f5is andmeid tulla palju ning seet\u00f5ttu tuli nad while ts\u00fckli kaudu v\u00e4lja kuvada. \u00dche id j\u00e4rgi k\u00fcsides saab k\u00e4tte ainult \u00fche rea, seet\u00f5ttu piisab selle k\u00e4ttesaamiseks \u00fchest fetch-k\u00e4sklusest. Kas k\u00fcsimine \u00f5nnestus, seda annab teada if-lause. Andmeid ei saa k\u00fcsides n\u00e4iteks juhul, kui keegi on aadressirea kaudu sisestanud olematu lehe id-numbri. Muul juhul saab pealkirja ja sisu ilusti k\u00e4tte ning neid v\u00f5ib lehel kuvada.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n if(isSet($_REQUEST&#x5B;&quot;id&quot;])){ \n $kask=$yhendus-&gt;prepare(&quot;SELECT id, pealkiri, sisu FROM lehed  WHERE id=?&quot;); \n \/\/Kysim2rgi asemele pannakse aadressiribalt tulnud id,  \/\/eeldatakse, et ta on tyybist integer (i).  \n \/\/(double - d, string - s) \n $kask-&gt;bind_param(&quot;i&quot;, $_REQUEST&#x5B;&quot;id&quot;]);  \n $kask-&gt;bind_result($id, $pealkiri, $sisu); \n $kask-&gt;execute(); \n if($kask-&gt;fetch()){ \n echo &quot;&lt;h2&gt;&quot;.htmlspecialchars($pealkiri).&quot;&lt;\/h2&gt;&quot;;  echo htmlspecialchars($sisu); \n } else { \n echo &quot;Vigased andmed.&quot;; \n } \n } else { \n echo &quot;Tere tulemast avalehele! Vali men&amp;uuml;&amp;uuml;st sobiv teema.&quot;;  } \n\n<\/pre><\/div>\n\n\n<p>Tavakasutaja ei pea peast lehtede numbreid teadma. Tema pigem vaatab neid men\u00fc\u00fcst ning valib sobiva. Edasi juba saadetakse vastava teate id-number aadressiriba kaudu lehele, leht avaneb uuesti ning n\u00e4itab k\u00fcsitud teate sisu. Men\u00fc\u00fc kokku saamiseks sobib j\u00e4rgnev koodil\u00f5ik. Kui viites (a href) j\u00e4tta faili nime kohale k\u00fcsim\u00e4rk, siis avatakse sama fail ilma, et peaks selle faili nime teadma.\u00a0<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n &lt;?php \n $kask=$yhendus-&gt;prepare(&quot;SELECT id, pealkiri FROM lehed&quot;);  $kask-&gt;bind_result($id, $pealkiri); \n $kask-&gt;execute(); \n while($kask-&gt;fetch()){ \n echo &quot;&lt;li&gt;&lt;a href=&#039;?id=$id&#039;&gt;&quot;. \n htmlspecialchars($pealkiri).&quot;&lt;\/a&gt;&lt;\/li&gt;&quot;;  } \n ?&gt; \n\n<\/pre><\/div>\n\n\n<p>Edasi kirjete kaupa n\u00e4itav kood tervikuna.\u00a0<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\n&lt;?php \n $yhendus=new mysqli(&quot;localhost&quot;, &quot;juku&quot;, &quot;kala&quot;, &quot;jukubaas2&quot;); ?&gt; \n&lt;!doctype html&gt; \n&lt;html&gt; \n &lt;head&gt; \n &lt;title&gt;Teated lehel&lt;\/title&gt; \n &lt;style type=&quot;text\/css&quot;&gt;\n #menyykiht{ \n float: left; \n padding-right: 30px; \n } \n #sisukiht{ \n float:left; \n } \n #jalusekiht{ \n clear: left; \n } \n &lt;\/style&gt; \n&lt;meta charset=&quot;utf-8&quot; \/&gt; \n &lt;\/head&gt; \n &lt;body&gt; \n &lt;div id=&quot;menyykiht&quot;&gt; \n &lt;h2&gt;Teated&lt;\/h2&gt; \n &lt;ul&gt; \n &lt;?php \n $kask=$yhendus-&gt;prepare(&quot;SELECT id, pealkiri FROM lehed&quot;);  $kask-&gt;bind_result($id, $pealkiri); \n $kask-&gt;execute(); \n while($kask-&gt;fetch()){ \n echo &quot;&lt;li&gt;&lt;a href=&#039;?id=$id&#039;&gt;&quot;. \n htmlspecialchars($pealkiri).&quot;&lt;\/a&gt;&lt;\/li&gt;&quot;;  } \n ?&gt; \n &lt;\/ul&gt; \n &lt;\/div&gt; \n &lt;div id=&quot;sisukiht&quot;&gt; \n &lt;?php \n if(isSet($_REQUEST&#x5B;&quot;id&quot;])){ \n $kask=$yhendus-&gt;prepare(&quot;SELECT id, pealkiri, sisu FROM lehed  WHERE id=?&quot;); \n \/\/Kysim2rgi asemele pannakse aadressiribalt tulnud id,  \/\/eeldatakse, et ta on tyybist integer (i).  \n \/\/(double - d, string - s) \n $kask-&gt;bind_param(&quot;i&quot;, $_REQUEST&#x5B;&quot;id&quot;]);  \n $kask-&gt;bind_result($id, $pealkiri, $sisu); \n $kask-&gt;execute(); \n if($kask-&gt;fetch()){ \n echo &quot;&lt;h2&gt;&quot;.htmlspecialchars($pealkiri).&quot;&lt;\/h2&gt;&quot;;  echo htmlspecialchars($sisu); \n } else { \n echo &quot;Vigased andmed.&quot;; \n } \n } else { \n echo &quot;Tere tulemast avalehele! Vali men&amp;uuml;&amp;uuml;st sobiv teema.&quot;;  } \n ?&gt; \n &lt;\/div&gt; \n &lt;div id=&quot;jalusekiht&quot;&gt; \n Lehe tegi Jaagup \n &lt;\/div&gt; \n &lt;\/body&gt; \n&lt;\/html&gt; \n&lt;?php \n $yhendus-&gt;close(); \n?&gt; \n\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>M\u00f5nek\u00fcmne kassi andmed mahuvad \u00fchele lehele \u00e4ra. Aga seda vaid juhul, kui n\u00e4idatakse vaid kassi nime ja v\u00e4rvi. Kui juba lisada omaniku andmed ning veidigi suurem kassi pilt, siis veidigi v\u00e4iksema ekraani peal on mugav juba kasse \u00fchekaupa vaadata. J\u00e4rgnevalt uurimegi, kuidas selliseid lehti koostada, kus v\u00f5imalik tabeli \u00fche rea andmeid eraldi v\u00e4lja tuua.&nbsp;&nbsp; \u00dcsna &hellip; <a href=\"https:\/\/tarkvara.thkit.ee\/veeb\/teadete-valik\/\" class=\"more-link\">Loe edasi <span class=\"screen-reader-text\">Teadete valik<\/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-140","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/140","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=140"}],"version-history":[{"count":2,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/140\/revisions"}],"predecessor-version":[{"id":142,"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/pages\/140\/revisions\/142"}],"wp:attachment":[{"href":"https:\/\/tarkvara.thkit.ee\/veeb\/wp-json\/wp\/v2\/media?parent=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}