{"id":370,"date":"2024-01-29T09:05:17","date_gmt":"2024-01-29T08:05:17","guid":{"rendered":"https:\/\/gdm.sosthe.sk\/?page_id=370"},"modified":"2024-01-29T09:20:25","modified_gmt":"2024-01-29T08:20:25","slug":"praca-so-subormi","status":"publish","type":"page","link":"https:\/\/gdm.sosthe.sk\/?page_id=370","title":{"rendered":"Pr\u00e1ca so s\u00fabormi"},"content":{"rendered":"<p>Na to aby sme mohli pracova\u0165 so s\u00faborom , potrebujeme ho otvori\u0165. Analogicky po pr\u00e1ci s nimi ich potrebujeme zavrie\u0165. Na otv\u00e1ranie s\u00faborov sa v PHP pou\u017e\u00edva pr\u00edkaz :<br \/>\n<strong><br \/>\n<\/strong><strong>FOPEN<\/strong><strong><br \/>\n<\/strong><\/p>\n<p>Jeho syntax je nasledovn\u00e1 :<\/p>\n<p>fopen(\u201ecesta_a_nazov_suboru\u201c,\u201emod\u201c);<\/p>\n<p>Obidva parametere s\u00fa povinn\u00e9:<br \/>\n\u201ecesta_a_nazov_suboru\u201c\u00a0\u2013 je cesta k suboru s absol\u00fatne zadanou cestou cez protokol HTTP\/FTP. Pokia\u013e je skript a otv\u00e1ran\u00fd s\u00fabor v tom istom adres\u00e1ri sta\u010d\u00ed zada\u0165 n\u00e1zov s\u00faboru.<br \/>\n\u201emod\u201c\u00a0\u2013 je m\u00f3d v akom sa s\u00fabor otvor\u00ed. Zoznam m\u00f3dov s popisom :<\/p>\n<ul>\n<li>\u201er\u201c \u2013 otvor\u00ed s\u00fabor len na \u010d\u00edtanie. Za\u010dne \u010d\u00edta\u0165 na za\u010diatku s\u00faboru.<\/li>\n<li>\u201er+\u201c \u2013 otvor\u00ed s\u00fabor pre \u010d\u00edtanie a z\u00e1pis. Za\u010dne \u010d\u00edta\u0165\/zapisova\u0165 na za\u010diatku s\u00faboru.<\/li>\n<li>\u201ew\u201c \u2013\u00a0 otvor\u00ed\u00a0 s\u00fabor len pre z\u00e1pis. Ak s\u00fabor existuje otvor\u00ed sa a vyma\u017ee cel\u00fd obsah. Ak neexistuje, vytvor\u00ed sa.<\/li>\n<li>\u201ew+\u201c \u2013 otvor\u00ed s\u00fabor pre \u010d\u00edtanie a z\u00e1pis. Ak existuje otvor\u00ed a vyma\u017ee cel\u00fd obsah. Ak neexistuje, vytvor\u00ed sa.<\/li>\n<li>\u201ea\u201c \u2013 otvor\u00ed s\u00fabor pre prid\u00e1vanie. Ak existuje otvor\u00ed sa a prid\u00e1 obsah ku koncu s\u00faboru. Ak neexistuje, vytvor\u00ed sa.<\/li>\n<li>\u201ea+\u201c \u2013 otvor\u00ed s\u00fabor pre z\u00e1pis a prid\u00e1vanie. Ak existuje otvor\u00ed sa , zachov\u00e1 sa obsah a zapisuje na koniec s\u00faboru.<\/li>\n<li>\u201ex\u201c \u2013 z\u00e1pis. Vytvor\u00ed nov\u00fd s\u00fabor , ak existuje vr\u00e1ti false.<\/li>\n<li>\u201ex+\u201c \u2013 \u010d\u00edtanie a z\u00e1pis. Vytvor\u00ed nov\u00fd s\u00fabor, ak existuje vr\u00e1ti false.<\/li>\n<\/ul>\n<p>fopen pri chybe vracia hodnotu \u201e0\u201c \u2013 false.<br \/>\nPou\u017eitie parametra exit:<br \/>\nToto zadanie vygeneruje chybov\u00fa hl\u00e1\u0161ku a pripoj\u00ed text zadan\u00fd za parametrom exit v pr\u00edpade ,\u017ee fopen vr\u00e1ti false.<br \/>\nOtv\u00e1ran\u00fd s\u00fabor uklad\u00e1me do premennej.<br \/>\n$subor = fopen(\u201eskuska.txt\u201c,\u201cr\u201c) or exit (\u201eS\u00fabor neexistuje !\u201c);<\/p>\n<p>Ak chceme pou\u017ei\u0165 in\u00fd sp\u00f4sob ako o\u0161etri\u0165 skript ,aby neotv\u00e1ral neexistuj\u00face s\u00fabory , existuje funkcia :<br \/>\n<strong><br \/>\n<\/strong><strong>File_Exists()<\/strong><\/p>\n<p>Syntax :<\/p>\n<p>File_Exists(\u201enazov_suboru\u201c);<br \/>\nPr\u00edklad :<\/p>\n<p>if(File_Exists(\u201eskuska.txt\u201c) {<br \/>\n$subor = fopen(\u201eskuska.txt\u201c,\u201cr\u201c);<br \/>\n}<br \/>\nelse {<br \/>\necho \u201eS\u00fabor neexistuje !\u201c;<br \/>\n}<\/p>\n<p>Po ukon\u010den\u00ed pr\u00e1ce so s\u00faborom ho uzavrieme pr\u00edkazom :<br \/>\n<strong><br \/>\n<\/strong><strong>FCLOSE<\/strong><\/p>\n<p>tento pr\u00edkaz m\u00e1 jedin\u00fd parameter a jeho syntax je :<\/p>\n<p>fclose(\u201epremenna_s_obsahom_suboru\u201c);<\/p>\n<p>Pr\u00edklad :<\/p>\n<pre> $subor = fopen(\"skuska.txt\",\"r+\");\r\n .. pr\u00e1ca so s\u00faborom ..\r\n fclose(\"$subor\");<\/pre>\n<pre><\/pre>\n<h4>\u010c\u00cdTANIE A Z\u00c1PIS DO S\u00daBOROV<\/h4>\n<p>Pre \u010d\u00edtanie d\u00e1t zo s\u00faboru pou\u017e\u00edvame pr\u00edkaz :<\/p>\n<p><strong>FREAD<\/strong><\/p>\n<p>Jeho syntax je nasledovn\u00e1 :<\/p>\n<p>fread($subor,\u201evelkost\u201c);<\/p>\n<p>Obidva parametre s\u00fa povinn\u00e9.<br \/>\n\u201e$subor\u201c\u00a0\u2013 je premenn\u00e1 v ktorej je otvoren\u00fd s\u00fabor pomocou funkcie fopen.<br \/>\n\u201evelkost\u201c\u00a0\u2013 je ve\u013ekos\u0165 v bajtoch ,ktor\u00e1 sa m\u00e1 na\u010d\u00edta\u0165<\/p>\n<p>V pr\u00edpade ,\u017ee chceme na\u010d\u00edta\u0165 cel\u00fd s\u00fabor ,nebudeme ur\u010dova\u0165 jeho d\u013a\u017eku v bajtoch (\u010do je navy\u0161e nemo\u017en\u00e9 ak sa s\u00fabor dynamicky men\u00ed) , ale pou\u017eijeme funkciu :<\/p>\n<p><strong>FileSize<\/strong><\/p>\n<p>Syntax :<\/p>\n<p>FileSize(\u201esubor\u201c);<\/p>\n<p>Pr\u00edklad:<\/p>\n<pre>$subor = fopen(\"skuskat.txt\",\"w\");\r\n fread($subor,filesize(\"skuska.txt\"));\r\n fclose($subor);<\/pre>\n<p>Pre z\u00e1pis d\u00e1t do s\u00faboru pou\u017eijeme pr\u00edkaz :<\/p>\n<p><strong>FWRITE<\/strong><\/p>\n<p>Syntax :<\/p>\n<p>fwrite(\u201e$subor\u201c,\u201eretazec\u201c,\u201evelkost\u201c);<\/p>\n<p>Parameter \u201edlzka\u201c je nepovinn\u00fd , ostatn\u00e9 \u00e1no.<br \/>\n\u201e$subor\u201c\u00a0\u2013 je premenn\u00e1 v ktorej je otvoren\u00fd s\u00fabor pomocou funkcie fopen.<br \/>\n\u201eretazec\u201c\u00a0\u2013 je re\u0165azec ,ktor\u00fd predstavuje d\u00e1ta ,ktor\u00e9 chceme do otvoren\u00e9ho s\u00faboru vlo\u017ei\u0165<br \/>\n\u201evelkost\u201c\u00a0\u2013 ur\u010duje ve\u013ekos\u0165 v bajtoch ,ktor\u00e1 sa m\u00e1 zap\u00edsa\u0165<\/p>\n<p>Pr\u00edklad :<\/p>\n<pre>$subor = fopen(\"skuska.txt\",\"w\");\r\n fwrite($subor,\"Hello World !\"); \/\/zap\u00ed\u0161e hello world do s\u00faboru skuska.txt\r\n fclose($subor);<\/pre>\n<p>Celkom u\u017eito\u010dn\u00e1 funkcia je :<\/p>\n<p><strong>File<\/strong><\/p>\n<p>,ktor\u00e1 na\u010d\u00edta obsah s\u00faboru do po\u013ea , kde indexom po\u013ea s\u00fa jednotliv\u00e9 riadky s\u00faboru. Jej jedin\u00fdm parametrom je n\u00e1zov s\u00faboru.<\/p>\n<p>Syntax :<\/p>\n<p>File(\u201eskuska.txt\u201c)<\/p>\n<p>T\u00e1to funkcia bude pou\u017eit\u00e1 v nasleduj\u00facom pr\u00edklade.<\/p>\n<p><strong>FGets a FEof<\/strong><\/p>\n<p>funkcie fgets() a feof() maj\u00fa jedin\u00fd parameter a to premenn\u00fa v ktorej je otvoren\u00fd s\u00fabor.<\/p>\n<p>fgets($subor)<br \/>\nfeof($subor)<\/p>\n<p>funkcia fgets na\u010d\u00edta obsah s\u00faboru po jednotl. riadkoch<br \/>\nfunkcia feof ur\u010duje koniec s\u00faboru, resp. posl. z\u00e1pis. EOF = End Of File<br \/>\nIch pou\u017eitie bude demon\u0161trovan\u00e9 v nasleduj\u00facom pr\u00edklade :<br \/>\n<strong><br \/>\n<\/strong>Pr\u00edklad:<\/p>\n<pre>&lt;?\r\n $subor = fopen(\"skuska.txt\",\"w\");\r\n fwrite($subor,\"Prvy riadok \\nDruhy riadok \\nTreti riadok\"); \/\/pou\u017eitie escape sekvencie n pre nov\u00fd riadok\r\n fclose($subor);<\/pre>\n<p><em>Vysvetlenie :<\/em><em><br \/>\nOtvor\u00edme s\u00fabor skuska.txt (ak neexistuje vytvor\u00ed sa nov\u00fd) pre z\u00e1pis do premennej $subor.<br \/>\nZap\u00ed\u0161eme do neho (za pomoci escape sekvencie \\n) tri riadky.<\/em><\/p>\n<p>&nbsp;<\/p>\n<p>Zavrieme s\u00fabor.<\/p>\n<pre>$subor = fopen(\"skuska.txt\",\"r\");\r\n $data = fread($subor,filesize(\"skuska.txt\"));\r\n echo $data;\r\n fclose($subor);<\/pre>\n<p><em>Vysvetlenie :<\/em><em><br \/>\n<\/em><em>Otvor\u00edme s\u00fabor skuska.txt len pre \u010d\u00edtanie do premennej $subor.<\/em><em><br \/>\nDo premennej $data na\u010d\u00edtame obsah cel\u00e9ho s\u00faboru pomocou funkcie filesize.<\/em><br \/>\nVyp\u00ed\u0161eme obsah s\u00faboru.<\/p>\n<pre>$subor = fopen(\"skuska.txt\",\"r\");\r\n while(!feof($subor)) {\r\n echo fgets($subor).\"&lt;br \/&gt;\";\r\n }\r\n fclose($subor);<\/pre>\n<p><em>Vysvetlenie :<\/em><em><br \/>\n<\/em><em>Otvor\u00edme s\u00fabor skuska.txt len pre \u010d\u00edtanie do premennej $subor.<\/em><em><br \/>\nPomocou cyklu while\u00a0 budeme vypisova\u0165 (fgets) obsah otvoren\u00e9ho s\u00faboru po jednotl. riadkoch\u00a0 pokia\u013e sa nenaraz\u00ed na koniec s\u00faboru (feof).<\/em><\/p>\n<pre>$subor = File(\"skuska.txt\");\r\n for ($i=0; $i &lt; Count($subor); $i++){\r\n echo \"Index po\u013ea $i : \".$subor[$i].\"&lt;br \/&gt;\";\r\n }<\/pre>\n<p><em>Vysvetlenie :<\/em><em><br \/>\n<\/em><em>Pomocou funkcie File na\u010d\u00edtame do premennej $subor pole kde indexom bud\u00fa jednotl. riadky v s\u00fabore skuska.txt.<\/em><em><br \/>\n<\/em><em>Pomocou cyklu for a funkcie count budeme vypisova\u0165 jednotliv\u00e9 indexy tohto po\u013ea dovtedy pokia\u013e nenaraz\u00edme na koniec s\u00faboru.<\/em><\/p>\n<p>&nbsp;<\/p>\n<h4>UPLOAD S\u00daBOROV NA SERVER<\/h4>\n<p>Pre nahr\u00e1vanie s\u00faborov na server pou\u017eijeme pole\u00a0$FILES. Zopakujeme si syntax :<br \/>\n$FILES[\u201efile\u201c][\u201emeno\u201c][\u201edalsie parametre\u201c]\u00a0\u2026 , kde zoznam parametrov je nasledovn\u00fd :<\/p>\n<ul>\n<li>\u201efile\u201c \u2013 n\u00e1zov elementu pou\u017eit\u00e9ho vo formul\u00e1ri (id , name)<\/li>\n<li>\u201ename\u201c \u2013 meno s\u00faboru<\/li>\n<li>\u201etyp\u201c \u2013 typ s\u00faboru pod\u013ea \u0161pecifik\u00e1cie MIME<\/li>\n<li>\u201esize\u201c \u2013 ve\u013ekos\u0165 s\u00faboru v bajtoch<\/li>\n<li>\u201etmp_name\u201c \u2013 do\u010dasn\u00fd n\u00e1zov s\u00faboru pod ktor\u00fdm bol ulo\u017een\u00fd na serveri<\/li>\n<li>\u201eerror\u201c \u2013 chyba vygenerovan\u00e1 ,po\u010das nahr\u00e1vania s\u00faboru na server<\/li>\n<\/ul>\n<p>$FILES n\u00e1m nahaje s\u00fabor na server pod do\u010dasn\u00fdm n\u00e1zvom a na jeho ulo\u017eenie pou\u017eijeme funkciu move_uploaded_files().<br \/>\nProblematiku uploadu s\u00faborov n\u00e1m objasn\u00ed nasleduj\u00faci pr\u00edklad :<br \/>\nPr\u00edklad:<strong><br \/>\n<\/strong>upload_form.html<\/p>\n<pre>&lt;!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN\"&gt;\r\n &lt;html&gt;\r\n \u00a0 &lt;head&gt;\r\n \u00a0 &lt;meta http-equiv=\"content-type\" content=\"text\/html; charset=windows-1250\"&gt;\r\n \u00a0 &lt;title&gt;Pr\u00edklad \u010d. 22 - Upload s\u00faborov na server , http:\/\/php.blog.sk&lt;\/title&gt;\r\n \u00a0 &lt;\/head&gt;\r\n \u00a0 &lt;body&gt;\r\n &lt;form action=\"nahraj_subor.php\" method=\"post\" enctype=\"multipart\/form-data\"&gt;\r\n &lt;p&gt;S\u00fabor:&lt;\/p&gt; &lt;input type=\"file\" name=\"file\" id=\"file\"&gt;\r\n &lt;input type=\"submit\" value=\"Nahraj\"&gt;\r\n &lt;\/form&gt;\r\n \u00a0 &lt;\/body&gt;\r\n &lt;\/html&gt;<\/pre>\n<p>nahraj_subor.php<\/p>\n<pre>&lt;?php\r\n if ($_FILES[\"file\"][\"error\"] &gt; 0) {\r\n echo \"Vyskytla sa chyba :\".$_FILES[\"file\"][\"error\"].\" !\";\r\n }\r\n else {\r\n echo \"Nahran\u00fd s\u00fabor :\".$_FILES[\"file\"][\"name\"].\"&lt;br \/&gt;\";\r\n echo \"Typ s\u00faboru :\".$_FILES[\"file\"][\"type\"].\"&lt;br \/&gt;\";\r\n echo \"Ve\u013ekos\u0165 s\u00faboru :\".($_FILES[\"file\"][\"size\"] \/ 1024).\" Kb &lt;br \/&gt;\";\r\n echo \"Do\u010dasn\u00fd n\u00e1zov s\u00faboru :\".$_FILES[\"file\"][\"tmp_name\"].\"&lt;br \/&gt;\";\r\n move_uploaded_file($_FILES[\"file\"][\"tmp_name\"],\"upload\/\".$_FILES[\"file\"][\"name\"]);\r\n echo \"S\u00fabor je umiestnen\u00fd :\".\"upload\/\".$_FILES[\"file\"][\"name\"];\r\n ?&gt;<\/pre>\n<p>Mysl\u00edm ,\u017ee tento pr\u00edklad dostato\u010dne demon\u0161truje pou\u017eitie $_FILES. Upozor\u0148ujem , \u017ee tento pr\u00edklad nie je vhodn\u00fd pre praktick\u00e9 pou\u017eitie ,preto\u017ee neobsahuje (napr.) kontrolu typu vkladan\u00e9ho s\u00faboru ,alebo kontrolu \u010di uploadovan\u00fd s\u00fabor u\u017e neexistuje na serveri.<br \/>\n\u010ealej chcem upozorni\u0165 ,\u017ee funkcie pre pr\u00e1cu so s\u00fabormi s\u00fa zavisl\u00e9 od nastavenia web servera , resp. atrib\u00fatov. (\u010di je povolen\u00fd z\u00e1pis do adres\u00e1ra \u201eupload\u201c ,alebo \u010di je mo\u017en\u00e9 zapisova\u0165 \/ vytv\u00e1ra\u0165 s\u00fabory).Napr\u00edklad v pr\u00edpade ,\u017ee budete chcie\u0165 zapisova\u0165 do adres\u00e1ra ,ktor\u00fd nem\u00e1 pr\u00e1vo pre z\u00e1pis , PHP vygeneruje chybu.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na to aby sme mohli pracova\u0165 so s\u00faborom , potrebujeme ho otvori\u0165. Analogicky po pr\u00e1ci s nimi ich potrebujeme zavrie\u0165. Na otv\u00e1ranie s\u00faborov sa v PHP pou\u017e\u00edva pr\u00edkaz : FOPEN Jeho syntax je nasledovn\u00e1 : fopen(\u201ecesta_a_nazov_suboru\u201c,\u201emod\u201c); Obidva parametere s\u00fa povinn\u00e9: \u201ecesta_a_nazov_suboru\u201c\u00a0\u2013 je cesta k suboru s absol\u00fatne zadanou cestou cez protokol HTTP\/FTP. Pokia\u013e je skript [&hellip;]<\/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-370","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/gdm.sosthe.sk\/index.php?rest_route=\/wp\/v2\/pages\/370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdm.sosthe.sk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gdm.sosthe.sk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gdm.sosthe.sk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gdm.sosthe.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=370"}],"version-history":[{"count":2,"href":"https:\/\/gdm.sosthe.sk\/index.php?rest_route=\/wp\/v2\/pages\/370\/revisions"}],"predecessor-version":[{"id":378,"href":"https:\/\/gdm.sosthe.sk\/index.php?rest_route=\/wp\/v2\/pages\/370\/revisions\/378"}],"wp:attachment":[{"href":"https:\/\/gdm.sosthe.sk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}