...
- +/- sve poruke
- ravni prikaz
- starije poruke gore
Dadoteke:
Ovdje ćemo se pozabaviti radom sa dadotekama u PHP-u.
Otvaranje dadoteke:
Funkcija za stvaranje datoteka se zove fopen. Ako postoji dadoteka sa sa sitim imenom, fopen će je samo otvoriti, bez stvaranja nove, a ako nepostoji dadoteka sa istim imenom fopen će je stvoriti.
Fopen mora sadržavati dvije informacije:
1.Ime dadoteke koju ćemo otvoriti.
2.Moramo funkciji fopen reći što će raditi sa dadotekom, pomoću pointera:
Pisanje: 'w' //otvara datoteku samo za pisanje, prijašnji podaci izbrisani
Čitanje: 'r' //otvara datoteku samo za čitanje
Nadopisivanje :'a' //otvara datoteku samo za pisanje, ali prijašnji podaci sačuvani i file pointer na kraju dadoteke
Čitanje/Pisanje: 'r+' //otvara datoteku za pisanje i čitanje, file pointer se nalazi na početku datoteke
Pisanje/Čitanje: 'w+' // -||- , kada je dadoteka otvorena sve prethodno se briše
Nadopisivanje: 'a+' // -||- , sadržaj ostaje, pokazivač se nalazi na kraju dadoteke
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'file_pointer') or die("Cannot open file!");
fclose($dadoteka);
?>
Prvo što moramo uraditi je postaviti ime dadoteke u varijalu, moramo kreirati varijablu koja će upravljati dadotekom i u nju postavimo funkciju fopen.
or die("Cannot open file!");Govori korisniku da nemože otvoriti dadoteku.
Na kraju funkcijom fclose zatvaramo dadoteku, argument joj je varijabla sa funkcijom fopen.
Pisanje u dadoteku:
Pisanjem u dadoteku ćemo se služiti funkcijom fwrite:
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'w') or die("Cannot open file!");
$podatak="BugOnline, Forum";
fwrite($dadoteka, $podatak);
fclose($dadoteka);
?>
Funkcij fwrite, smo predali dva argumenta, varijablu koja upravlja dadotekom i podatak koji treba zapisati u dadoteku, taj podatak može biti bilo što, najčešće se dadoteke koriste ako je potrebno imati neku vijest ili nešto slično, a nekoristimo bazu, onda funkcijom fwrite to zapišemo u tu dadoteku.
Pored zapisivanja u dadoteku, često je potrebno i čitati iz nje tada na scenu stupa fread.
Prije pisanja treba drugačije otvoriti ili stvoriti dadoteku, umjesto 'w', treba 'r' ili 'a', 'r+' ili 'a+'.
Prethodno treba znati veličinu dadoteke u byteovima, 1 znak=1 byte
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'r') or die("Cannot open file!");
$pisanje=fread($dadoteka, 16);
echo $pisanje;
fclose($dadoteka);
?>
Ali nemožemo uvjek znati tačnu veličinu onda se koristimo filesize.
filesize($dadoteka)
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'r') or die("Cannot open file!");
$pisanje=fread($dadoteka, filesize($dadoteka));
echo $pisanje;
fclose($dadoteka);
?>
Brisanje, nadodavanje, skraćivanje dadoteke
Nadodavanje:
To vam je već jasno, pomoću file_pointera 'a', pa evo da i to prođemo:
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'a') or die("Cannot open file!");
$podatak2="\nOvo će biti nadodano na kraj!";
fclose($dadoteka);
?>
Sada je stanje u dadoteci:
BugOnline, Forum!
Ovo če biti nadodano na kraj!
Naravno ako ste prethodno sačuvali dadoteku iz prethodnih postova.
Skraćivanje
To je kao neki reset dadoteke, ali pazite da ne resetujete neku XAMPPovu textualnu dadoteku!
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'w') or die("Cannot open file!");
fclose($dadoteka);
?>
File_pointer 'w' prethodni tekst briše, tako smo resetovali dadoteku.
Brisanje
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'file_pointer') or die("Cannot open file!");
fclose($dadoteka);
?>
Ovim smo otvorili dadoteku imena dadoteka1.txt na serveru, u našem slučaju u mapi htdocs.
Nerijetko nakon obvljenog posla dadoteku treba izbrisati, to radimo funkcijom unlink, koja ima samo jedan parametar, varijablu koja sadrži ime dadoteke koju treba izbrisati.
Ovdje morate biti oprezni da ne izbrišete dadoteku koju neželite izbrisati.
<?php
$ime="dadoteka1.txt";
unlink($ime);
?>Ovim je famozna dadoteka imena "dadoteka1.txt" izbrisana.
MySql i PHP
I dio
Spajanje na server:
Pretpostavimo da imamo bazu podataka na localhostu, username nam je root i šifra bug_forum.
Bilo bi dobro da kreirate novi folder na serveru tipa php_mysql ili slično, da u njega spremate viježbe.
Kreirat ću fajl spajanje.php i u njemu koda sa spajanje na server:
<?php
if(!$baza=@mySQL_connect('localhost', 'root', 'bug_forum'){
die(mySQL_error)
}
?>
mySQL_connect:
Ova funkcija služi za povezivanje sa bazom, ima 3 argumenta, host, username, password.
die:
Sa ovom funkcijom smo se već susretali, ispisuje grešku, u našem slučaju funkciju mySQL_error.
mySQL_error:
Funkcija koja ispisuje grešku koja se dogodila.
Spajanje na bazu:
Pretpostavimo da imamo bazu podataka koja se zove bug_novosti.
<?php
if(!$baza=@mySQL_connect('localhost', 'root', 'bug_forum'){
die(mySQL_error)
}
if(!mySQL_select_db("bug_novosti", $baza){
die(mySQL_error)
?>
mySQL_select_db:
Sa ovom funkcijom odabiremo bazu čije ćemo tablice koristiti, ima dva argumenta i to:
1.Ime baze koju ćemo koristiti
2.Vezu na server
Uskoro ću uraditi i unos podataka.
Malo odskačemo od baza, ali sam se sjetio korisne stvari.
Pražnjenje varijabli:
Varijabla se prazni funkcijiom unset, ima parametar varijablu koju treba prazniti.
<?
$varijabla="Ovaj tekst ćese izbrisati";
echo $varijabla;
unset($varijabla);
?>
Ovim na serveru dobivamo više mijesta.
Kada završimo query-e, pokazat ću vam kako možemo i njih prazniti.
Unos podataka u bazu
Kao što sam i u prvom tutorijalu o MySql-u i PHP-u, ovdje se nebavimo bazama podataka, ali eto pretpostavili smo da imamo bazu podataka "bug_novosti" i recimo tablicu "news1".
Inače unosimo u SQL preko naredbe INSTERT INTO ime_tablice("field1", "field2", "field3",...) VALUES("vrijednost fielda1",...);
Posao mi otežava to što se uvjek moram vraćati na SQL, ali nebi bilo loše da pogledate neki tutorijal o njemu, možda napišem jedan, ali na internetu imate na tone materijala za SQL, a ja vam preporučujem video tutorijale našeg fakulteta, FIT Mostar, koje sam postavio u ovoj temi:http://www.bug.hr/forum/topic/razvoj-web-stranica/e-learning-web-tehnologije/122392.aspx
Podatke ćemo unositi preko HTML forme, koju mislim da znate pa nemam potrebe obješnjavati input type-ove.
Što se naše "news1" tablice tiče, pretpostavimo da imamo fieldove "ime", "novost", "datum", ime je VARCHAR, novost je TEXT, datum je DATE.
<?php
if(!$baza=@mySQL_connect('localhost', 'root', 'bug_forum'){
die(mySQL_error)
}
if(!mySQL_select_db("bug_novosti", $baza){
die(mySQL_error)
?>
Ovaj kod spremite kao "link.php", kasnije ćemo ga include-at.
Pa krenimo, prvo ću staviti cijeli kod, pa ću ga obrazložiti.
<html>
<head>
<title>Unos u bazu</title>
</head>
<body>
<h2>Unos podataka u bazu Bug Novosti!</h2>
<br /><br /><br />
<?php
if($_POST["potvrda_unosa"]
?>
<form method="POST" action="">
<p>Naslov novosti:</p>
<input type="text" name="ime" size=20>
<p>Novost:</p>
<textarea name="novost"></textarea>
<br />
<input type="submit" name="potvrda_unosa" value="Unesi!">
</form>
<?php
}
else{
include("link.php);
$datum=date("Y-m-d");
$SQL="INSERT INTO news1(ime, novost, datum) VALUES('$_POST[ime]', '$_POST[novost]', '$datum')";
if(mysql_query($SQL)){
echo "Novost pohranjena, uskoro očekuj komentare na forumu!";
}
else{
echo "Novost nemože biti pohranjena!"<br />
mysql_error();
}
}
?>
</body>
</html>
Na početku uvjet if ima argument name našeg submit botuna.
Kod poslje if-a i prije else-a neću analizirati, jer to pretpostavljam da znate.
Includali smo fajl "link.php" u kojem se spajamo na server i bazu.
U varijablu datum pohrnanjivamo vrijdnost fukcije date koja daje datum.
U varijablu SQL, u duple navodne, pišemo SQL kod, prvo poredamo fieldove, zatim im damo vrijednosti, $_POST[], vidjeli ste da je metod forme post, http://www.w3schools.com/php/php_post.asp, i varijablu datum koju smo prethodno deklarisali.
-mysql_query funkcija "provjerava da li je novost pohranjena", zašto sam stavio navodne, pa zato što nismo obrađivali upite/query-je, što je stvar baze.
Brisanje, nadodavanje, skraćivanje dadoteke
Nadodavanje:
To vam je već jasno, pomoću file_pointera 'a', pa evo da i to prođemo:
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'a') or die("Cannot open file!");
$podatak2="\nOvo će biti nadodano na kraj!";
fclose($dadoteka);
?>
Sada je stanje u dadoteci:
BugOnline, Forum!
Ovo če biti nadodano na kraj!
Naravno ako ste prethodno sačuvali dadoteku iz prethodnih postova.
Skraćivanje
To je kao neki reset dadoteke, ali pazite da ne resetujete neku XAMPPovu textualnu dadoteku!
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'w') or die("Cannot open file!");
fclose($dadoteka);
?>
File_pointer 'w' prethodni tekst briše, tako smo resetovali dadoteku.
Brisanje
<?php
$ime="dadoteka1.txt";
$dadoteka=fopen($ime, 'file_pointer') or die("Cannot open file!");
fclose($dadoteka);
?>
Ovim smo otvorili dadoteku imena dadoteka1.txt na serveru, u našem slučaju u mapi htdocs.
tu ti fale neke operacije nakon inicijalizacije pointera kolega. lijepi tutovi btw.
Hvala, a vidio sam, treba fread u nadodavanju, inače nisam provjeravao kodove, uvjeren sam u svoje zanje .
Tema je malo stara no može li odgovor?
Koja je glavna razlika između objectoriented stila i procedural stila?