miffmedia.com

Zadnje pisano

PHP Kalkulator

Iskreno, PHP kalkulator? Ali evo ga, ako neko smatra da je ovo super vežba iz koje će neko nešto naučiti meni je drago.

PHP Kalkulator

HTML

<html>
	<head>
		<title>PHP Kalkulator | miff blog</title>
	</head>
	<body>
		<h1>PHP Kalkulator</h1>
		<?php echo $err;?>
		<form method="post" action="">
			<input type="text" name="prviBroj" value="<?php echo $prvi_broj;?>" size="4"/>
			<select name="znak">
				<option <?php if($znak == '+') echo 'selected="selected" ';?>value="+"> + </option>
				<option <?php if($znak == '-') echo 'selected="selected" ';?>value="-"> - </option>
				<option <?php if($znak == '/') echo 'selected="selected" ';?>value="/"> / </option>
				<option <?php if($znak == '*') echo 'selected="selected" ';?>value="*"> * </option>
			</select>
			<input type="text" name="drugiBroj" value="<?php echo $drugi_broj;?>" size="4"/>
			= <?php echo $rezultat;?>
			<br />
			<input type="submit" value=" = " />
			<input onclick="location.href='cal.php'" type="button" value=" C " />
		</form>
	</body>
</html>

Ako pogledate samo HTML, to je jedna obična forma i opet je namerno izostavljena vrednost atributa action, par uslova za proveru select polja, uglavnom jako jednostavno.

PHP

<?php
	$prvi_broj = $_REQUEST['prviBroj'];
	$drugi_broj = $_REQUEST['drugiBroj'];
	$znak = $_REQUEST['znak'];
	$err = '';
	// Ovde mozete dalje proveravati deljenje sa nulom itd....
	if(!$prvi_broj) $err .= 'Morate upisati neki broj u prvo polje<br />';
	if(!$drugi_broj) $err .= 'Morate upisati neki broj u drugo polje<br />';
	if($err == ''){
		// Nema greske, idemo na racunanje - jeeeeiii
		switch ($znak) {
			case '+':
				$rezultat = $prvi_broj + $drugi_broj;
				break;
			case '-':
				$rezultat = $prvi_broj - $drugi_broj;
				break;
			case '/':
				$rezultat = $prvi_broj / $drugi_broj;
				break;
			case '*':
				$rezultat = $prvi_broj * $drugi_broj;
				break;
		}
	}
?>

U PHP kodu (postavljen je u vrhu pre html taga) prva tri reda primaju vrednosti iz forme, $err varijabla se dekleriše i pokreće se provera: da li je korisnik uneo prvo polje; da li je uneo drugo polje. Slobodno dodajte svoju proveru ovde.

U principu komanda switch odradi ceo posao.

 

Live primer: PHP kalulator.

PHP primeri deo IV - Aplikacija ima mogućnost unosa, brisanja i ažuriranja korisnika

Ovo je poslednji članak u nizu o pojmu CRUD i anomalijama baze. Napomenuću, postoje tri anomalije baze podataka, INSERT, DELET i UPDATE anomalije. Nama je ostalo još da objasnimo UPDATE i imaćemo `kompletnu` aplikaciju za upravljanje korisnicima :).

crud 4

 

Najbrže i najjednostavnije: kopirati fajl korisnici-dodaj.php u korisnici-menjaj.php, i izvršimo par izmena.

PHP ( & HTML )

<?php
	include('conf.php');
	$id = $_REQUEST['id'];
	$submit = $_POST['submit'];
	if($submit){
		if(!$id) {
			// Ne zelim da iko tu bude ako nema id
			header('Location: http://localhost/korisnici.php');
			die();
		}
		$username = $_POST['username'];
		$password = $_POST['password'];
		$email = $_POST['email'];
		$sql = mysql_query("UPDATE korisnici SET `username` = '$username', `password` = '$password', `email` = '$email' WHERE id = $id");
		echo 'Korisnik <strong>'.$username.'</strong> je uspesno izmenjen';
	}
	$q = mysql_query("SELECT * FROM korisnici WHERE id = $id");
	$row = mysql_fetch_assoc($q);

?>
<html>
	<head>
		<title>Aplikacija - Unos i Modifikacija</title>
	</head>
	<body>
		<ul>
			<li><a href="korisnici.php">Lista korisnika</a></li>
			<li><a href="korisnici-dodaj.php">Dodaj korisnika</a></li>
		</ul>
		<hr />
		<form method="post" action="">
			Korisnicko ime:<br />
			<input type="text" name="username" value="<?php echo $row['username'];?>" /><!-- Dobra praksa je da naziv polja bude isti kao i u bazi --><br />
			Sifra<br />
			<input type="password" name="password" value="<?php echo $row['password'];?>" /><br />
			Email<br />
			<input type="text" name="email" value="<?php echo $row['email'];?>" /><br />
			<input type="submit" value="Sacuvaj" name="submit" />
		</form>
	</body>
</html>
<?php
	// Zatvaramo konekciju ka bazi
	mysql_close($conn);
?>

 

Kako nam je za UPDATE potreban ključ dodajemo red REQUEST id, u HTML formi namerno brišemo action atribut, ovim postižemo malu stvar - prosleđujemo formu sa istim URL-om.

Ako je forma prosleđena (linija 5) prvo proveravamo $id, SQL upit je sada prepravljen u UPDATE i dodat je uslov WHERE na kraju, uprotivnom sve zapise u tabeli bi promenili da nije WHERE id uslova.

Dodat je još jedan upit (linija 17), SELECT objašnjava sve :).

Primetićete da je u input polja u atribut value dodat echo koji ispisuje ekvivalentna polja iz baze.

 

I evo je, kompletna aplikacija koja ima mogućnost unosa, brisanja, ažuriranja i pregled podataka iz baze.

PHP primeri deo III - Aplikacija ima mogućnost unosa, brisanja i ažuriranja korisnika

Treći deo se odnosi na brisanje (DELETE) podataka iz baze, i vemo brzo i jednostavno se dolazi do ove funkcionalnosti, svega 5 linije koda :).

CRUD 3

Prethodni primer CREATE se nalazi ovde, dok je privi deo o planiranju CRUD aplikacije ovde

PHP

<?php 
	$id = $_REQUEST['id'];
	if($id){
		include('conf.php');
		mysql_query("DELETE FROM korisnici WHERE id = $id");
	}
	header('Location: http://localhost/korisnici.php');
?>

Najbitniju stvar ($id) pokupimo iz URL-a, ako slučajno neko unese samo localhost/korisnici-brisi.php bez ?id dela, vratićemo ga nazad jer niko ne želi da vidi ispisane greške, za takve stvari treba fino napisati kod, dizajnirati i upakovati svaku grešku ali to sada nije tema. Dakle ustanovljeno je šta treba obrisati te stoga mysql_query izvršava DELETE komandu. Zadnja linija gde stoji komanda header, uvek će poslati korisnika aplikacije nazad na listu, bez obzira da li postoji id ili ne, bitno je da smo obrisali zapis i vrati li se na naš listing.

 

Da napomenem da bi možda bilo zgodno a i korisno, postavljanje onclick koda u linku za brisanje koji bi pitao da li stvarno želimo da se ova akcija izvrši, te stoga u fajlu korisnici.php, 35 linija posle <a a pre title atributa upisati ovo:

onclick="return confirm('Ozbiljno misliš da obrišeš ovog korisnika?');"

PHP primeri deo II - Aplikacija ima mogućnost unosa, brisanja i ažuriranja korisnika

Drugi deo ovog tutorijala sadržaće CREATE  zapisa u bazi. Ili jednostavno rečeno nastavljamo dalje, dodajemo mogućnost kreiranja sadržaja.crud 2

Ko je propustio prvi deo, link je CRUD osnove pa nastaviti ovde.

PHP ( & HTML)

<?php
	include('conf.php');
	$submit = $_POST['submit'];
	if($submit){
		$username = $_POST['username'];
		$password = $_POST['password'];
		$email = $_POST['email'];
		$sql = mysql_query("INSERT INTO korisnici SET `username` = '$username', `password` = '$password', `email` = '$password'");
		echo 'Uspesno unesen korisnik <strong>'.$username.'</strong>';
	}
?>
<html>
	<head>
		<title>Aplikacija - Unos i Modifikacija</title>
	</head>
	<body>
		<ul>
			<li><a href="korisnici.php">Lista korisnika</a></li>
			<li><a href="korisnici-dodaj.php">Dodaj korisnika</a></li>
		</ul>
		<hr />
		<form method="post" action="korisnici-dodaj.php">
			Korisnicko ime:<br />
			<input type="text" name="username" value="" /><!-- Dobra praksa je da naziv polja bude isti kao i u bazi --><br />
			Sifra<br />
			<input type="password" name="password" value="" /><br />
			Email<br />
			<input type="text" name="email" value="" /><br />
			<input type="submit" value="Sacuvaj" name="submit" />
		</form>
	</body>
</html>
<?php
	// Zatvaramo konekciju ka bazi
	mysql_close($conn);
?>

Prvi PHP red include povlači konekciju (config.php), uslov proverava da li je forma poslata ako jeste upisuje u bazu a ako nije nastavlja dalje tj čeka se unosč reakcija. U ovom trenutku je dobro razmisliti o proveri podataka, veliki sigurosni rizik je pustiti podatke tek tako u bazu, da li je mail ispravno upisan itd. ovo nije tema ali je dobro razmišljati na vreme ;).

 

Iskustvo je pokazalo da je najbolja praksa da se imena u poljima za unos dodeljuje ista vrednost kao i u bazi, kao što je u primeru prikazano input name="username" type="text" u tabeli je takođe username.

PHP primeri deo I - Aplikacija ima mogućnost unosa, brisanja i ažuriranja korisnika

Zadatak: Web aplikacija koja ima mogućnost unosa, brisanja, pregleda i ažuriranja podataka ovo se jos naziva i CRUD (Create, Read, Update i Delete), u ovom primeru to su korisnici nekog servisa ili šta god već.

Kako je interesovanje za web development sve veći, ja gotovo dnevno dobijem po jedan mail u kome je neka frka oko PHP, ili je to ispit ili tek započeti posao.

Kako god rešio sam da napišem nekoliko tutorijala koja će uvek biti od koristi početnicima, jer njima je uvek najteže.

 

MySQL

CREATE TABLE IF NOT EXISTS `korisnici` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(18) NOT NULL,
  `password` varchar(100) NOT NULL,
  `email` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Evo upita koji koji kreira tabelu korisnici, ona nam je trenutno jedino potrebna. kod sam po sebi objašnjava sve.

 

PHP

1. Za početak potrebno je da se definiše configuration fajl (opšte poznat kao conf.php), dakle napraviti fajl koji se zove conf.php i u njega kod:

 

$conn = mysql_connect('localhost', 'root', 'root') or die ('Doslo je do greske');
mysql_select_db('aplikacija');

Svega dve linije koda.

  • značenje ovog localhost: server gde se nalazi baza, obično je uvek localhost ali najbolje proveriti,
  • root (ovo prvo): je korisničko ime za bazu,
  • root (ovo drugo) je šifra jer korisničko ime i šifra ne idu jedno bez drugo :)

 

2. Sledeća stvar koja nam je potrebna da bi se rezultati videli je index.php, kod koji treba da se nadje je:

<?php
	include('conf.php');
	// Pokupi korisnike
	$sql = mysql_query("SELECT * FROM korisnici");
	$korisnici = mysql_num_rows($sql);//Ako je vece od 0 postoje
?>
<html>
	<head>
		<title>Aplikacija</title>
	</head>
	<body>
		<ul>
			<li><a href="korisnici.php">Lista korisnika</a></li>
			<li><a href="korisnici-dodaj.php">Dodaj korisnika</a></li>
		</ul>
		<hr />
		<?php
		if($korisnici){
			// Korisnici postoje 
		?>
		<table border="1" width="50%">
			<tr>
				<th>Email</th>
				<th>Korisnicko ime</th>
				<th>Akcija</th>
			</tr>
			<?php
				while($row = mysql_fetch_assoc($sql)){
			?>
			<tr>
				<td><?php echo $row['email']?></td>
				<td><?php echo $row['username']?></td>
				<td>
					<a title="Izmeni" href="korisnici-menjaj.php?id=<?php echo $row['id']?>">[ Izmeni ]</a>
					<a title="Obrisi" href="korisnici-brisi.php?id=<?php echo $row['id']?>">[ Obrisi ]</a>
				</td>
			</tr>
			<?php 
			}
			?>
		</table>
		<?php
		} else {
		?>
			Trenutno nema korisnika upisanih u bazu, koristite <a href="korisnici-dodaj.php">ovaj</a> link za unos.
		<?php }?>
	</body>
</html>
<?php
	// Zatvaramo konekciju ka bazi
	mysql_close($conn);
?>

Ovo je koncept vaše aplikacije, ima navigaciju, središnji deo i footer (doduše footer ga još uvek nema :)).

U ovom početnom fajlu listamo (READ) postojeće korisnike iz baze, izraz u uslovu $korisnici nam proverava da li ih ima, ako nema prikazuje poruku i predlaže da se unese novi korisnik.

 

CRUD

 

Toliko za sada, probajte ovo sami, ako zapne komentari su ispod pa pitajte slobodno.