12.02. - Upis u bazu i prikaz iz baze
1. deo: html/css
Prvo se podsetiti kako se kreira forma i kako da sve to bude na sredini stranice sa css-om
Prvo html:
Kreirati fajl index.php i u njemu osnovni html kod koji je povezan sa css fajlom koji se takođe kreira,
Postavke:
- Nastavljamo da radimo direktno na web serveru - XAMPP - pa vam treba uključen Apache i MySql
- Da ne bismo menjali postavke za Apache, radimo direktno u localhost direktorijumu - zato sve što radite treba da je unutar \xampp\htdocs foldera
- Ne zaboravite da radite u novom folderu unutar vašeg foldera - npr d:\xampp\webAca\zadatakF1 (webAca je u ovom primeru naziv foldera onoga ko radi zadatak, a unutar htdocs-a, a zadatakZ1 je folder u kojem se radi ovaj zadatak) - vi unesite naziv koji god želite (dokle god nema razmaka, ćirilice, ili brojeva na početku...)
U body delu dodati formu kojom će korisnik da unosi u bazu podataka neke podatke:
- Pošto će se koristiti baza podataka iz prethodne lekcije (prva grupa "Slonovi", druga grupa "Torte") postaviti polja za unos podataka i dugme na dnu.
- Ako nemate bazu na računaru, preuzmite SQL kod za kreiranje baze, tabela i popunjavanje sa početnim podacima:
- Kreiranje i popunjavanje baze Slonovi
- Kreiranje i popunjavanje baze Torte
- Zbog preglednosti na vrhu vaše web stranice treba da se nalazi naslov i podnaslov
- Kompletna web forma sa kojom se radi treba da se nalazi u na sredni ekrana, sa drugačijom bojom pozadine u odnosu na ostatak pozadine - ovo rešiti pomoću css-a
U nastavku je iza plavih dugmića prikazano kako smo radili u PRVOJ GRUPI (klik na dugme za prikaz/sakrivanj)
A iza žutih dugmića je prikazano kako smo radili DRUGOJ GRUPI
2. deo - php
Kreirati fajl u koji se iz forme šalju podaci: upis.php:
Na način kao na prethodnom času se povezati na bazu podataka i uneti podatke iz forme u posebne promenljive koje se onda unesu u tabelu
Prvo :
u formi je postavljen atribut action="upis.php" - To znači da će se svi podaci prilikom submit-a poslati u fajl upis.php. Stoga prvo kreiramo fajl upis.php
Drugo:
postavljen je method="get" - ovo je oznaka načina na koji se šalju podaci.
(Ovaj metod slanja manje je siguran nego metod post jer se kod get metode sve što se šalje ujedno vidi i u URL-u.)
Za nas je bitno to što će se svi podaci koji stignu u fajl upis.php moći dobiti pomoću super globalne promenljive $_GET. - To je u stvari asocijativni niz u kojem se dobiju parovi ključeva i vrednosti: svaku ključ je name input elementa a njemu odgovarajuća vrednost je ono što je korisnik uneo. (Da smo koristili metod post, koristili bismo super globalnu promenljivu $_POST)
Da bi nam bilo lakše da radimo, mi na početku možemo da te vrednosti postavimo u promenljive.
Kako to izgleda u prethodnim zadacima:
| prva grupa ( maldunci slonova ) | druga grupa ( kolaci ) |
|---|---|
|
<?php
$imeSlona = $_GET["ime"];
$godisteSlona = $_GET["godiste"];
|
<?php
$nazivKolaca = $_GET['naziv'];
$tezinaKolaca = $_GET['tez'];
|
(Promenljive u PHP-u počinju sa znakom $, jer ako toga nema onda nije promenljiva već konstanta )
Treće:
vezu sa bazom postavljemo koristeći obkektno orijentisani pristup:
$veza = new mysqli("naziv servera","ime korisnika","password","naziv baze");
U našem slučaju je naziv servera localhost, a pošto nismo ništa menjali iz početnih postavki, ime korisnika je root, a password je ostavljen prazan. Bez obzira što nemamo password, potrebno je to postaviti kao par dvostrukih navodnika između kojih nema ništa ! Na kraju unosimo naziv baze kojoj se pristupa.| prva grupa ( mladunci slonova ) | druga grupa ( kolaci ) |
|---|---|
$veza = new mysqli("localhost","root","","slonovi");
|
$veza = new mysqli("localhost", "root", "", "torte");
|
if($veza
=== false), moglo je i da se koristi i if ($mysqli ->
connect_errno) .... )$upit="ovde ide upit koji se koristi":
$veza->query($upit)
(U nekim slučajevima bi moglo da bude dovoljno ako bi se samo proverilo da li postoji greška i da se u tom slučaju izađe iz skripte)
U ovom delu zadatka se radi o upisu podataka u tabelu u bazi - nema vraćanja rezultata ka korisniku ali je potrebno znati da li se upit iizvršio uspešno ili ne!
U nastavku su zadaci, onako kako su rađeni na času u učionici:, iza dugmića kojim se prikazuju ili sakrivaju:
3. deo: ispis tabele - php
Na istoj stranici gde se vrši upis dodati nakon poruke o uspešnom upisu i ispis svega što imamo u tabeli (isti fajl upis.php)
Ispod staviti link ka povratku na prethodnu stranu !
Pošto već imamo vezu tabeli u bazi, jedino što nam treba je upit kojim se prikazuje sve iz te tabele. Kao rezultat se dobija onoliko redova koliko ih ima u traženoj tabeli. Rezultat upita ćemo postaviti u neku promenljivu ($rezultat na primer) sa kojom dalje radimo. Ako je sve ok, trebalo bi da dobijemo sve one podatke koje smo uneli prilikom dosadašnjih testiranja.
Jedan od načina:
}
Na kraju se zatvara konekcija sa:
$veza->close();
PHP kod se završava sa:
?>
Napomene:
- Možete imati koliko god hoćete delova sa php kodom u jednom fajlu
- deo gde je php počinje sa <?php i završava sa ?>
- Ako pišete html kod fajl ima nastavak .html
- Ako u okviru html koda imate makar jednu liniju u kojoj se nalazi php, tada fajl treba da ima nastavak .php
- ako se fajl završava sa .html onda se izvršava na strani kod korisnika
- Čak i ako nema ni jedna linija php koda, čak i ako je sve čist html, fajl i dalje može imati .php na kraju, ali ...
- Ako se fajl završava sa .php, onda se izvršava NA STRANI SERVERA, a korisnik dobija rezultat nakon obrade sa strane servera - i vidi samo html kod ...
- . . . .
Dodatak za kraj časa:
Dodati deo u kojem radi i brisanje iz baze :
Na početnoj strani se dodaje još jedna forma u kojoj treba da se nalazi input polje za unod ID-a reda koji se bruše:
Dodati deo u kojem radi samo prikaz iz baze :
Na dnu početne strane ugraditi način za biranje prikaza na sledećoj strani - može samo dugme ili link ili posebna forma za to:
Savet: Upotrebiti INCLUDE ili REQUIRE da se ne bi višestruko kucao isti kod
U nastavku su arhive zadataka sa časa (spakovano): iz ucionice --- arhiva zadataka - it41.7z