20.10. Rad sa formama - i slanje podataka iz njih - ( PHP )
Ovaj put ćemo da radimo na web serveru DIREKTNO.

Web server koji ćemo da koristimo je Apache i on se nalazi u okviru XAMPP-a.
- Napomena: u školi u učionici 17 koristimo portable varijantu u verziji 7.4.27, koji se nalazi na D:\xampp
-
-
Iza sledećeg linka je vizuelno demonstrirano pokretanje XAMPP, Apache i kako da se radi direktno na lokalnom web serveru:
https://vimeo.com/798669922?fl=pl&fe=vl
-
Nastavak:
1. Pokrenite XAMPP, i na njemu pokrenite Apache web server (nema potrebe pokretati bilo šta drugo na XAMPP-u)
2. U web root folderu kreirajte vaš folder (npr webAca - folder u kojem se radi ovaj primer)
! web root folder je onaj folder koji je početna web lokacija za vaš web server. !
U našem slučaju, pošto koristimo portable XAMPP, koji se nalazi na D:\xampp, unutar njega se već nalazi folder htdocs koji je web root folder (ako ništa nije menjano od podrazumevanih vrednosti).
Unutar foldera htdocs kreirati folder u kojem će se raditi (webAca).
3. Kreirati html fajl pera.html i u njega postavite samo jedan H1 element: naslov -
<!DOCTYPE html>
4. U web browser-u kucajti: localhost/webAca
Ako je sve ok, trebalo bi da vidite nešto ovako:

Kucanjem u browseru: localhost smo označili da idemo na lokalni web server, a dodavanjem /webAca znači da idemo u taj folder koji se otvara i prikazuje se šta ima u njemu. Pošto se ni jedan fajl ne zove index, on ne zna odakle da krene, pa samo ispiše koji su sve fajlovi unutra
5. Promenite ime vašeg fajla u index.html i ponovo učitajte stranicu. Sada bi trebalo da vam se vaša stranica automatski učita (i to bez prikaza šta se nalazi u folderu) !
Ako je sve ok, trebalo bi da vidite nešto ovako:

Znači:
Ako u folderu ima fajl koji se zove index.html ili index.php tada će ga web browser otvoriti kao početnu stranu !!!
6. U vaš fajl, unutar body tag-a dodajte jednu web formu:
Primer: staviti na formu da se unosi ime korisnika, komentar i neki broj
U web formi treba da se nalaze labele ispred input polja koje korisnik treba da popuni
Dodatno:
- oko forme treba da se nalazi linija u kojoj piše svrha forme (fieldset, legend)
- podaci treba da se pošalju u neki drugi fajl ili neku drugu web stranicu
</form>
- Korisnik popunjava formu.
- Klikom dugme, podaci koji su uneseni se šalju u fajl koji je naveden nakon reči action. U našem slučaju to je fajl obrada.php.
- Način na koji se podaci šalju je određen atributom method - u prvom delu zadatka koristi se method get !
Kako se izvršavaju PHP skripte na web serveru?
Obično je nešto ovako:
1 - klijent (korisnik koji koristi neki web browser) zahteva stranicu sa servera,
2 - web-server (program na serveru) prepoznaje da se traži php fajl,
3 - ne šalje njegov sadržaj klijentu, nego ga izvršava kao program pomoću php modula,
4 - izlaz nakon izvršenja programa se šalje klijentu kao rezultat zahteva,
5 - rezultat se prikazuje klijentu na odgovarajući način
Drugim rečima, korisnik ne vidi php kôd, već samo rezultat nakon izvršanja skripte (html na primer)
PHP kôd se sastoji od niza naredbi koje se izvršavaju jedna za drugom. Poslednja naredba ujedno označava i kraj PHP kôda
PHP fajl možete da kreirate u bilo kojem tekst editoru i da mu date ekstenziju .php.
Koji god da se alat koristi u video snimcima, mi ćemo u učionici koristiti VS Code.
Ako bi se popunili podaci u formi a da se nema navedeni fajl u koji forma šalje podatke, dobiće se greška!
U ovom primeru, pošto još uvek nije kreiran fajl u koji se šalju podaci, u nastavku su iza dugmića slike, prvo je slika popunjene forme, a posle toga slika šta se desi kada se klikna na dugme


7. Kreirati fajl obrada.php
U njemu prvo upisati samo sledeći tekst: "Ovo je fajl gde su stigli podaci"

E sada, kada se popuni forma i klikne na dugme, otvoriće se ovaj fajl - tj. otvoriće se nova web stranica na kojoj stoji samo poruka koju smo napisali

Pošto nam nije cilj samo prikazivanje poruke, već da se podaci koje je korisnik uneo preuzmu u tom fajlu i da se na kraju sa njima nešto i uradi, ovo ipak nije dovollno.
8. U fajlu obrada.php prikazati sve što je korisnik uneo
PHP počinje tagom <?php i završava sa ?>,
Kao i u C#-u, na kraju svake naredbe treba da se nalazi tačka-zarez, i sve petlje i uslovne naredbe isto rade, ali ...
Promenljive moraju da počnu znakom $
Pomoću naredbe echo se u PHP-u prikazuju poruke (tekst, html tagovi, vrednosti promenljivih):
echo "ovo je poruka ";
echo "<br> a iz obrasca smo dobili sledeće podatke: <br>";
Preuzimanje podataka se radi preko super globalnih promenljivih $_GET ili $_POST (u zavisnosti koji se method koristi za prenos podataka)
$ime = $_GET['ime'];
$komentar = $_GET['komentar'];
$x = $_GET['x'];
A kako da vidimo sve podatke koji su poslati iz forme?
Naredba var_dump(); može da se koristi za prikaz tipa i sadržaja svakog podatka:
var_dump($_GET); // ovime će se prikazati sve što je stiglo u super globalnu promenljivu $_GET.
Sada odgovor na popunjen obrazac izgleda ovako:

U prethodnom primeru se vidi da je $_GET u stvari asocijativni niz: iz forme se šalje kao parovi ključ-vrednost. Ključ je name komponente a vrednost je ono što je korisnik uneo pre klika na dugme.
Da bi to malo lepše izgledalo, upotrebićemo tag <pre>: na sledeći način:
echo "<pre>";
var_dump($_GET);
echo "</pre>";
ovde možete videti
Ovo je fajl gde su stigli podaci

Unutar echo naredbe mogu da se dodaju i VREDNOSTI PROMENLJIVIH, na više od jednog načina:
1. način: koristiti tačku za spajanje stringova:
echo "<br>korisnik sa imenom ".$ime." je napisao sledeći komentar : ".$komentar."<br>";
2. način: unutar stringa oko kojeg su dvostruki navodnici mogu da se navedu imena promenljivih čije vrednosti će biti prikazane:
echo "<br>Korisnik sa imenom $ime je napisao sledeći komentar: $komentar <br>";
Podzadatak:
ispod svega ovoga, ispisati korisnika i njegov komentar onoliko puta koliki je broj unesen u trećem polju .
for($i=0; $i<$x; $i++)
{
echo "poruka br. $i -> korisnik $ime je napisao komentar > $komentar <br>";
}
Ovo je fajl gde su stigli podaci
echo "<pre>";
Kada se koristi method="get" tada se klikom na dugme podaci šalju ka navedenom fajlu i u URL liniji se vidi sve što se šalje ! Podatke preuzimate pomoću $_GET
Kada se koristi method="post" tada se klikom na dugme podaci šalju ka navedenom fajlu i tada se u URL-u ne vidi ništa. Podatke preuzimate pomoću $_POST.
Podzadatak: Kao vežbu uraditi ovaj zadatak ali da je method+"post"