Primele 100 de numere naturale
<?php
$i=1;
while ($i<=10) {
echo"";
echo $i." ";
$i+=1;
}?>
Primele 10 de numere naturale
Sintaxa instructiunii do..while:
do {
bloc de instructiuni ce va fi executat;
}
while (conditie);
Utilizand instructiunea de buclare do...while vom afisa primele 100 de numere naturale.
Primele 100 de numere naturale
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
Sintaxa instructiunii for:
for (init; cond; incr) {
bloc de instructiuni ce va fi executat;
}
Reluam aplicatia anterioara insa vom folosi instructiunea de buclare for pentru afisa patratele primelor 100 de numere naturale.
Patratele primelor 100 de numere naturale
1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 256 289 324 361 400 441 484 529 576 625 676 729 784 841 900 961 1024 1089 1156 1225 1296 1369 1444 1521 1600 1681 1764 1849 1936 2025 2116 2209 2304 2401 2500 2601 2704 2809 2916 3025 3136 3249 3364 3481 3600 3721 3844 3969 4096 4225 4356 4489 4624 4761 4900 5041 5184 5329 5476 5625 5776 5929 6084 6241 6400 6561 6724 6889 7056 7225 7396 7569 7744 7921 8100 8281 8464 8649 8836 9025 9216 9409 9604 9801 10000
Sintaxa instructiunii foreach :
foreach (nume_tablou as variabila){
bloc de instructiuni ce va fi executat;
}
Urmatoarea aplicatie utilizeaza instructiunea de buclare foreach prntru a afisa zilele saptamanii.
Zilele sapamanii sunt: Ziua 1 : Luni Ziua 2 : Marti Ziua 3 : Miercuri Ziua 4 : Joi Ziua 5 : Vineri Ziua 6 : Sambata Ziua 7 : Duminica
Utilizarea tablourilor in php
In aplicatia anterioara s-a utilizat vectorul $zile=array("Luni", "Marti", "Miercuri","Joi", "Vineri", "Sambata","Duminica");
initializat implicit cu zilele saptamanii.
In cazul in care vrem sa utilizam un un tablou fara initializare implicita, putem sa atribuim direct valori elementelor, fara a declara
in prealabil un array. Vom inscrie o matrice cu numere pare dupa care vom afisa continutul.
Linia: 0 2 4 8 Linia: 1 16 32 64 Linia: 2 128 256 512
Utilizarea functiilor in php
Vom utiliza in continuare functii in cardul sript-urilor php. Urmatoarea aplicatie defineste si utilizeaza functia
patrat pentru a calcula patratul unui numar.
Patratul numarului 25este :625
Grafica in php
- trasare linii
Vom realiza in continuare aplicatii grafice in php.Prima aplicatie traseaza 3 linii de culori diferite,
Dupa realizarea aplicatiei php "linii_v1.php", pentru afisarea imaginii, se realizeaza o pagina html in care se apeleaza imaginea astfel:
- trasare dreptunghiuri
Urmatoarea aplicatie traseaza 3 dreptunghiuri de culori diferite,
- trasare cercuri
Aplicatia traseaza arcuri cercuri si linii de culori diferite,
- trasare sinus
Aplicatia traseaza graficul functiei sinus,
- Imagini dinamice
Se realizeaza aplicatia "linii_d.php" de forma:
Dupa realizarea aplicatiei php "linii_d.php", pentru apelare dinamica, se realizeaza urmatorul script:
- Instrument virtual
Se realizeaza aplicatia php "voltm.php".
Pentru apelare dinamica, se realizeaza urmatorul script:
Formuri in php
In momentul definirii unui form terbuie precizata aplicatia care va prelucra datele trimise, precum si metoda prin
care se trimit datele.
Utilizarea formurilor
Vom defini un form care cere numele si prenumele, si precizeaza aplicatia care va prelucra datele trimise. Mai jos
este prezentata sursa aplicatiei care defineste form-ul.
La actionarea butonului de tip SUBMITT numit "Trimit datele", dupa cum se vede si in sursa aplicatiei, datele sunt
prelucrate si afisate de aplicatia pe partea server-ului "apl_s1.php". Sursa aplicatiei server o puteti vedea mai jos.
Aplicatie Server
Aplicatie PHP de tipul Server-Side
<?php
echo 'Bine ai venit !! '.$_POST["p_nume"];
echo ' Numele tau este :' .$_POST["nume"];
?>
Variabila $_POST
Variabila $_POST este utilizata pentru a colecta valorile variabilelor dintr-un form trimis cu metoda="post".
Aplicatia anterioara utilizeaza metoda "post" pentru a trimite valorile variabilelor "nume" si "p_nume". Aplicatia
pe partea server "apl_s1.php" are acces la valorile acestor variabile prin intermediul variabilei $_POST.
Variabila $_POST este de fapt un tablou care contine numele variabileolor si valoarea acestora, trimise prin metoda
"post" de catre HTTP. Astfel pentru a afala numele trimis s-a utilizat $_POST["nume"], iar pentru prenume $_POST["p_nume"].
Informatiile trimise prin metoda "post" sunt invizibile pentru utilizatori. Nu exista limitare in ceea ce priveste dimensiunea
informatiilor trimise.
Variabila $_GET
Variabila $_GET este utilizata pentru a colecta valorile variabilelor dintr-un form trimis cu metoda="get".
Variabila $_GET similar cu variabila $_POST este un tablou care contine numele variabileolor si valoarea acestora,
trimise prin metoda "get" de catre HTTP.
Informatiile trimise prin metoda "post" sunt in acest caz vinvizibile pentru utilizatori, fiind afisate in cadrul URL-ului
iar dimensiunea informatiei transmise este limitata la 100 de caractere.
Aplicatia urmatoare utilizeaza metoda "get" pentru a trimite valorile variabilelor "nume" si "p_nume". Aplicatia
pe partea server "apl_s2.php" are acces la valorile acestor variabile prin intermediul variabilei $_GET. Astfel pentru a afala numele trimis s-a
utilizat $_GET["nume"], iar pentru prenume $_GET["p_nume"].
La actionarea butonului de tip SUBMITT numit "Trimit datele", se trimit datele spre aplicatia server "apl_s2.php".
Pentru a putea vedea informatiile transmise prin metoda "get" va trebui sa deschidem aplicatia intr-o noua fereastra.
Vezi aplicatia intr-o fereastra noua .
Datele sunt deci, prelucrate si afisate de aplicatia pe partea server-ului "apl_s2.php". Sursa aplicatiei server o puteti vedea mai jos.
Aplicatie Server
Aplicatie PHP de tipul Server-Side
Se utilizeaza metoda get
<?php
echo 'Bine ai venit !! '.$_GET["p_nume"];
echo ' Numele tau este :' .$_GET["nume"];
?>
Utilizarea PHP pentru realizarea paginilor WEB dinamice
In PHP se utilizeaza o serie de tehnici pentru realizarea paginilor WEB dinamice.
Cele mai importante metode pentru realizarea pagiinilor web dinamice sunt:
utilizarea si incorporarea fisierelor externe
manipularea formularelor si prelucrarea datelor continute de acestea
utilizarea functiilor proprii
utilizarea functiilor speciale
Utilizarea si incorporarea fisierelor externe
In majoritatea paginilor web se pot distinge mai multe zone relativ fixe cum ar fi:
zona antet
zona meniu
continut principal
baza paginii
Paginile web dinamice pastreaza zonele enumerate mai sus fixe , mai putin zona de continut principal. Pentru realizarea
continutului celorlalte zone este utila definirea lor o singura data in fisiere externe si includerea acestor fisiere de fiecare data cand se
lanseaza o pagina.
Facilitatile SSI (Server Side Includes) sunt utilizate pentru a crea deci headers, footers, sau elemente ce se includ
in mai multe pagini.
Fisierele externe se includ in pagina curenta prin utilizarea functiei "include".
Forma generala pentru includerea unui fisier extern este:
Sa realizam o pagina web dinamica utilizand php care sa contina o zona antet, o zona meniu, un continut principal si
o zona la baza paginii. Zona de antet, zona meniu, si zona de la baza paginii vor fi descrise in fisiere separate si vor fi incluse in pagina web.
Programul principal "pag_din_1.php" contine includerea fisierelor externe, dupa cum se poate vedea mai jos.
<?php # Script : pag_din_1.php
$page_title = 'Pagina web dinamica';
include ('./includes/header.php');
echo '';
// Includere fisier meniu.php.
include ('./includes/meniu.php');
echo '
Utilizarea PHP pentru realizarea paginilor WEB dinamice
Aplicatiile web dinamice sunt realizate prin:
utilizarea si incorporarea fisierelor externe
manipularea formularelor si prelucrarea datelor continute de acestea
utilizarea functiilor proprii
utilizarea functiilor speciale
Succes in realizarea paginilor dinamice !
';
include ('./includes/baza_pag.html');
echo '
';
?>
Programul principal "pag_din_1.php" include in primul rand antetul paginii prin instructiunea: include ('./includes/header.php'); .
Continutul fisierului "header.php" este:
Pagini web dinamice
Se observa ca fisierul header.php include la randul lui un fisier CSS dupa care scrie un text in div-ul Header si
deschide div-ul Continut in care vor fi afisate meniul si continutul principal.
Fisierului CSS "layout.css" defineste div-urile si elementele de design, continutul fisierului CSS "layout.css" fiind:
body {
margin:0px;
padding:0px;
font-family:verdana, arial, helvetica, sans-serif;
color:Blue;
/*background-color:AliceBlue*/
background-color:WhiteSmoke
}
h1 {
margin:0px 0px 15px 0px;
padding:0px;
font-size:20px;
line-height:20px;
font-weight:800;
color:#9370d8;
}
h2 {
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
line-height:150%;
page-break-after:avoid;
font-size:12.0pt;
font-family:"Book Antiqua";
margin-left:0cm; margin-right:0cm; margin-top:0cm
}
h5 {
margin:0px 0px 0px 0px;
padding:0px;
font-size:11px;
line-height:11px;
font-weight:400;
color:navy;
}
p {
font:11px/20px verdana, arial, helvetica, sans-serif;
margin:0px 0px 16px 0px;
padding:0px;
}
a {
color:#09c;
font-size:8px;
text-decoration:none;
font-weight:300;
font-family:verdana, arial, helvetica, sans-serif;
}
a:link {color: #000fff; font-size: 8pt; font-family: arial, helvetica, sans-serif; text-decoration:none;}
a:visited {color: #0000ff; font-size: 8pt; font-family: arial, helvetica, sans-serif; text-decoration:none;}
a:hover{color: #ff0000; font-size: 8pt; font-family: arial, helvetica, sans-serif; text-decoration:underline;}
#Header {
font-size:24px;
margin:0px 0px 0px 0px;
padding:10px 0px 0px 10px;
height:40px;
border-style:solid;
border-color:black;
border-width:1px 0px;
line-height:11px;
background-image: url(imm_s.bmp);
}
#Continut {
position:absolute;
top:45px;
left:0px;
right:0px;
width:100%;
padding:0px;
}
#Meniu {
position:absolute;
top:0px;
left:0px;
width:100%;
padding:0px;
voice-family: "\"}\"";
voice-family:inherit;
width:100%;
}
#Continut_p {
position:relative;
top:40px;
left:0px;
right:0px;
height:400px;
width:100%;
padding:0px;
}
#Baza_pag {
position:relative;
top:10px;
left:0px;
right:0px;
width:100%;
padding:0px;
}
#Error {
color:#FF0033;
font-size:14px;
}
Programul principal "pag_din_1.php" contine de asemenea si meniul principal inclus cu
include ('./includes/meniu.php'); .
Urmeaza apoi in programul principal "pag_din_1.php" continutul primei pagini si la baza este inclusa informatia
zin zona baza_paginii cu
include ('./includes/baza_pag.html'); .
La optiunea "Nume_prenume" din meniul principal sa apelat formul "num_pr.php".
Acest form trebuie sa se incadreze in sablonul general deci trebuie sa fie asemanator cu programul principal
"pag_din_1.php".Difera doar zona de continut principal care contine efectiv form-ul care cere numele si prenumele.
<?php # Script : num_pr.php
$page_title = 'Numele si prenumele';
// Includere fisier header.php
include ('./includes/header.php');
echo '';
// Includere fisier meniu.php
include ('./includes/meniu.php');
echo '
';
include ('./includes/baza_pag.html');
echo '
';
?>
Chiar si aplicatia de partea server care prelucreaza datele trimise trebuie sa se incadreze in acelasi sablon general.
Pagina dinamica
<?php # Script : num_pr_s.php
$page_title = 'Numele si prenumele';
// Includere fisier header.php
include ('./includes/header.php');
echo '';
// Includere fisier meniu.php
include ('./includes/meniu.php');
echo '';
?>
Prelucrare nume si prenume
Afisare in pagina dinamica
<?php
echo 'Bine ai venit !! '.$_GET["p_nume"];
echo ' Numele tau este :' .$_GET["nume"];
>>
<?php
include ('./includes/baza_pag.html');
echo '
';
?>
Manipularea formularelor si prelucrarea datelor continute de acestea
In aplicatia "num_pr.php" pentru a prelucra datele trimise s-a realizat o noua aplicatie care sa prelucreze aceste
date si sa afiseze rezultatul intr-o noua pagina. Ar fi de preferat sa includem intr-o singura aplicatie atat form-ulinitial cat si prelucrarea datelor.
Avantajul acestei abordari permite pastrarea datelor introduse si revenirea asupra lor in cazul in care trebuiesc reintroduse anumite campuri.
La optiunea "Calculator" din meniul principal este inclusa o astfel de aplicatie care manipuleaza form-ul initial si
prelucreaza datele trimise.
<?php # Script: - calculator.php
$page_title = 'Calculator';
// Includere fisier header.php
include ('./includes/header.php');
echo '';
// Includere fisier meniu.php
include ('./includes/meniu.php');
echo '
';
// Se verifica daca form-ul a fost trimis
if (isset($_POST['trimis'])) {
// Validare mimimala form.
if ( is_numeric($_POST['cantit']) && is_numeric($_POST['pret']) && is_numeric($_POST['cota_tva']) ) {
// Calcularea rezultatelor.
$tva = $_POST['cota_tva'] / 100; // Turn 5% into .05.
$total = ($_POST['cantit'] * $_POST['pret']) * ($tva + 1);
// Afisarea rezultatelor.
echo '
Total Cost
Costul total al celor ' . $_POST['cantit'] . ' bucati, este: ' . number_format ($total, 2) .' lei , din care TVA '. $_POST['cota_tva'] . '% = ' . number_format ($_POST['pret']*$_POST['cantit']*$tva, 2) . '.
';
} else { // S-au trimis valori invalide.
echo '
Eroare !
Va rog introduceti cantitatea, pretul, si cota TVA.
';
}
} else {
echo '
Calcularea valorii si TVA-ului
Introduceti cantitatea, pretul si cota TVA.
';
}
?>
<?php
include ('./includes/baza_pag.html');
echo '
';
?>
Utilizarea functiilor proprii si a functiilor speciale
O alta modalitate de a realiza pagini dinamice, este utilizarea functiilor proprii si a functiilor speciale. Vom realiza
in continuare o aplicatie care calculeaza puterea aparenta, puterea activa si reactiva cunoscand tensiunea, curentul si defazajul dintre ele.
Aplicatia foloseste o functie proprie "calc_pa" pentru calculul puterii aparente.
<?php # Script: - putere.php
$page_title = 'Putere activa si reactiva';
// Includere fisier header.php
include ('./includes/header.php');
echo '';
// Includere fisier meniu.php
include ('./includes/meniu.php');
function calc_pa () { // Functia pentru calculul puterii aparente
Return ($_POST['tens'] * $_POST['crnt']);
}
echo '
';
// Se verifica daca form-ul a fost trimis
if (isset($_POST['trimis'])) {
if (is_numeric($_POST['tens'])) {
$u = $_POST['tens'];
} else {
echo '
Introduceti valoarea tensiunii electrice ! ';
$u = FALSE;
}
if (is_numeric($_POST['crnt'])) {
$i = $_POST['crnt'];
} else {
echo '
Introduceti valoarea curentului electric ! ';
$i = FALSE;
}
if (is_numeric($_POST['defaz'])) {
$f = $_POST['defaz'];
} else {
echo '
Introduceti valoarea defazajului intre curent si tensiune ! ';
$f = FALSE;
}
// Validare mimimala form.
if ($u && $i && $f) { // Au fost introduse corect toate datele
// Calcularea rezultatelor.
$pa=calc_pa(); // putere aparenta
$p_a = $pa * cos($f); // putere activa
$p_r = $pa * sin($f); // putere reactiva
// Afisarea rezultatelor.
echo '
Puterile calculate:
Puterea aparenta este : ' . number_format ($pa, 2) .' VA
Puterea activa este :' . number_format ($p_a, 2) .' Watt
Puterea reactiva este :' . number_format ($p_r, 2) .' VAR ';
} else { // S-au trimis valori invalide.
echo '
Va rog, incercati inca o data !.
';
}
} else {
echo '
Calcularea puterii active si reactive
Introduceti tensiunea, curentul si defazajul in radiani .
';
}
?>
<?php
include ('./includes/baza_pag.html');
echo '
';
?>
Utilizarea tehnologiei AJAX
Vom utiliza in continuare tehnologa AJAX pentru a realiza pagini dinamice. Vom realiza o aplicatire care sugereaza nume
prememorate in cazul in care se completeaza un camp cu numele sau prenumele unei persoane.
Aplicatia este asemanatoare cu aplicatiile scrise in Java-Script in care se foloseste tehnologia AJAX. Diferenta este ca
URL-ul va fi de data aceasta o aplicatie php care raspunde in functie de parametrii trimisi in URL.
Dupa cum se poate observa URL-ul transmis metodelor xmlhttp este de forma
url=url+"?q="+str; ,
initial URL-ul fiind defint :
var url="sugestie.php";
Continutul fisierului "sugestie.php" fiind:
<?php
// Setarea variabilelor cu diverse nume
$a[]="Andrea";
$a[]="Anca";
$a[]="Bogdan";
$a[]="Bianca";
$a[]="Camelia";
$a[]="Diana";
$a[]="Eugenia";
$a[]="Florin";
$a[]="Flavia";
$a[]="Gabriela";
$a[]="Horatiu";
$a[]="Ionel";
$a[]="Julia";
$a[]="Kitty";
$a[]="Liliana";
$a[]="Nicoleta";
$a[]="Otilia";
$a[]="Poliana";
$a[]="Paul";
$a[]="Anamaria";
$a[]="Raul";
$a[]="Carmen";
$a[]="Dumitru";
$a[]="Enescu";
$a[]="Emil";
$a[]="Sandu";
$a[]="Tamara";
$a[]="Marin";
$a[]="Violeta";
$a[]="Liza";
$a[]="Elena";
$a[]="Catrinel";
$a[]="Wenche";
$a[]="Victoria";
//preluarea parametrului q din URL
$q=$_GET["q"];
//preluarea sugestiilor din tablou daca lungimea lui q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i
Aplicatia poate fi imbunatatita, sugestiile putand fi luate dintr-o baza de date.
Elemente de programare obiect in php
Definitia generala a unei clase in php este:
<?php
class nume_clasa {
function fmembru1 (variabile) {
instructiuni;
}
function fmembru2 (variabile) {
instructiuni;
}
.
.
.
function fmembru1 (variabile) {
instructiuni;
}
function __construct( $v1, $v2,...,$vm ) {
$this->var1 = $v1;
$this->var2 = $v2;
.
.
.
$this->varm = $vm;
}
}
?>
$this->var1,$this->var2,...,$this->varn -- variabile membru
fmembru1,fmembru2,...,fmembrun -- functii membru
function __construct -- constructorul
Crearea unui obiect:
$nume_obiect= new nume_clasa(valori).
Invocarea unei metode:
$nume_obiect->fmembru(valori)
Vom crea in continuare clasa Instrument de forma:
<?php
class Instrum {
/* Functii membru */
function set_titlu($tit){
$this->titlu = $tit;
}
function afis_titlu(){
echo $this->titlu ."--";
}
function set_um($um){
$this->u_m = $um;
}
function afis_um(){
echo $this->u_m ." ";
}
}
$voltm = new Instrum;
$amp = new Instrum;
$frecv = new Instrum;
$voltm->set_titlu( "Voltmetru" );
$amp->set_titlu( "Ampermetru" );
$frecv->set_titlu( "Frecventmetru" );
$voltm->set_um( "V" );
$amp->set_um( "A" );
$frecv->set_um( "Hz" );
$voltm->afis_titlu();
$voltm->afis_um();
$amp->afis_titlu();
$amp->afis_um();
$frecv->afis_titlu();
$frecv->afis_um();
?>
In urma rularii scriptului de sus, rezulta:
Voltmetru--V Ampermetru--A Frecventmetru--Hz
Vom defini o noua clasa "Instrumm" in care vom folosi constructor
<?php
class Instrumm {
/* Constructor */
function __construct($tit,$um){
/* Variable membru */
$this->titlu = $tit;
$this->u_m = $um;
}
/* Functie membru */
function set_titlu($tit){
$this->titlu = $tit;
}
function afis_titlu(){
echo $this->titlu ."--";
}
function set_um($um){
$this->u_m = $um;
}
function afis_um(){
echo $this->u_m ." ";
}
}
$voltm = new Instrumm("Voltmetru","V");
$ampm = new Instrumm("Ampermetru","A");
$frecvm = new Instrumm("Frecventmetru","Hz");
$voltm->afis_titlu();
$voltm->afis_um();
$ampm->afis_titlu();
$ampm->afis_um();
$frecvm->afis_titlu();
$frecvm->afis_um();
?>
In urma rularii scriptului de sus, rezulta:
Voltmetru--V Ampermetru--A Frecventmetru--Hz Dupa redefinirea unitatii de masura ( "Volt" ) si ( "Amp" ), folosind metoda set_um(), obtinem: Voltmetru--Volt Ampermetru--Amp Frecventmetru--Hz - Utilizarea clasei "cerc"
Codul sursa:
<?php
// creare imagine 200*200
$img = imagecreatetruecolor(200, 200);
// definire culori
$white = imagecolorallocate($img, 255, 255, 255);
$red = imagecolorallocate($img, 255, 0, 0);
$green = imagecolorallocate($img, 0, 255, 0);
$blue = imagecolorallocate($img, 0, 0, 255);
class cerc {
/* Constructor */
function __construct($i,$x,$y,$w,$h){
// Variabile membru
$this->imag = $i;
$this->x0 = $x;
$this->y0 = $y;
$this->wx = $w;
$this->hy = $h;
}
function set_val($ui,$u,$c){
imagearc($this->imag, $this->x0 , $this->y0, $this->wx, $this->hy, $ui, $u, $c);
}
}
$cerc1 = new cerc($img, 60, 50, 70, 50);
$cerc1->set_val(rand(100,360),rand(100,360), $green);
$cerc2 = new cerc($img, 160, 150, 30, 50);
$cerc2->set_val(rand(100,360),rand(100,360), $red);
$cerc3 = new cerc($img, 100, 100, 130, 130);
$cerc3->set_val(rand(100,360),rand(100,360), $blue);
// output image in the browser
header("Content-type: image/png");
imagepng($img);
// free memory
imagedestroy($img);
?>
- Instrument virtual bazat pe clasa "manometru"
Codul sursa:
<?php
// creare imagine 200*200
$img = imagecreatetruecolor(400, 400);
// definire culori
$white = imagecolorallocate($img, 255, 255, 255);
// fundal alb imagine
imagefill($img, 0, 0, $white);
$vmax=500; // Valoarea maxima afisata
class manometru {
function __construct($i,$x,$y,$w,$mx){
/* Variabile membru */
$this->imag = $i; // imaginea
$this->x0 = $x; // pozitia pe x in cadrul imaginii
$this->y0 = $y; // pozitia pe y in cadrul imaginii
$this->wx = $w; // latimea imaginii
$this->val_max = $mx; // valoarea maxima afisata
$this->xc=$x+$w/3+20; // Coordonata x a centrului arcului de cerc
$this->yc=$y+$w/3+20; // Coordonata y a centrului arcului de cerc
// variabile publice pentru toata clasa
$this->white = imagecolorallocate($this->imag, 255, 255, 255);
$this->blue = imagecolorallocate($this->imag, 0, 0, 255);
$this->red = imagecolorallocate($this->imag, 255, 0, 0);
$this->gray = imagecolorallocate($this->imag, 130, 130, 130);
$this->l_gray = imagecolorallocate($this->imag, 220, 220, 220);
$this->black = imagecolorallocate($this->imag, 0, 0, 0);
}
function desen_grd()
{
/* Variabile locale */
$lg = 5; // latimea gradatiilor
$raza = $this->wx / 3; // raza gradatiilor
$val_a = 0; // valoarea pentru afisat a gradtiilor
$nrd = 0; // numarul curent al diviziunii
$alfa_gr =630; // alfa_gr unghiul in grade
while ($alfa_gr >270) // afisarea se face in sensul acelor de ceasornic adica de la 630 gr la 270
{
if ($nrd % 10 == 0)
{
$xt = $this->xc + ($raza-0*$lg) * cos(deg2rad($alfa_gr))-10; // coordonate text
$yt = $this->yc - ($raza-0*$lg) * sin(deg2rad($alfa_gr));
$x1 = $this->xc + ($raza-5*$lg) * cos(deg2rad($alfa_gr)); // coordonate sfarsit gradatii mari
$y1 = $this->yc - ($raza-5*$lg) * sin(deg2rad($alfa_gr));
$val_a=round(2*$nrd*($this->val_max)/360); // calculare valoare gradatie
imagestring($this->imag, 4, $xt,$yt, $val_a, $this->blue); // scriere valoare gradatie
}
else
{
$x1 = $this->xc + ($raza-7*$lg) * cos(deg2rad($alfa_gr)); // coordonate sfarsit gradatii mici
$y1 = $this->yc - ($raza-7*$lg) * sin(deg2rad($alfa_gr));
}
$x2 = $this->xc + ($raza - 9 * $lg) * cos(deg2rad($alfa_gr));// coordonate inceput gradatii mari sau mici
$y2 = $this->yc - ($raza - 9 * $lg) * sin(deg2rad($alfa_gr));
imageline($this->imag, $x1, $y1, $x2, $y2, $this->gray); // trasare gradatii
$alfa_gr= $alfa_gr- 2;
$nrd=$nrd+1;
}
}
function set_val( $vl){
$wd=$this->wx/7; // latimea arcului de cerc
$alfa_i = 90; // unghiul initial
$alfa = $alfa_i+360*($vl/$this->val_max); // unghiul curent
imagefilledarc($this->imag, $this->xc , $this->yc, $this->wx/2, $this->wx/2, 0, 360, $this->l_gray,4);
imagefilledarc($this->imag, $this->xc , $this->yc, $this->wx/2, $this->wx/2, $alfa_i, $alfa, $this->gray,4);
imagefilledarc($this->imag, $this->xc , $this->yc, $this->wx/2-$wd,$this->wx/2-$wd, 0, 360, $this->white,4);
imagearc($this->imag, $this->xc , $this->yc, $this->wx/2, $this->wx/2, 0, 360,$this->gray);
imagearc($this->imag, $this->xc , $this->yc, $this->wx/2-$wd, $this->wx/2-$wd, 0, 360,$this->gray);
imagestring($this->imag, 5, $this->xc-10 , $this->yc-10,$vl , $this->red);
}
}
$manon = new manometru($img, 0, 0, 500, $vmax);
$manon->desen_grd();
$manon->set_val(rand(0,$vmax));
// output image in the browser
header("Content-type: image/png");
imagepng($img);
// free memory
imagedestroy($img);
?>
- Instrument virtual bazat pe clasa "voltmetru"
Codul sursa:
<?php
$dimx=550;
$dimy=350;
$img = imagecreatetruecolor($dimx+10, $dimy);
class voltmetru {
/* Constructor */
function __construct($i,$x,$y,$w,$u,$vm){
/* Variabile membru */
$this->imag = $i;
$this->x0 = $x;
$this->y0 = $y;
$this->wx = $w;
$this->hy = $w/1.7;
$this->alfa = $u;
$this->val_max = $vm;
/* Variabile locale */
$this->white = imagecolorallocate($this->imag, 255, 255, 255);
$this->blue = imagecolorallocate($this->imag, 0, 0, 255);
$this->red = imagecolorallocate($this->imag, 255, 0, 0);
$this->gray = imagecolorallocate($this->imag, 130, 130, 130);
$this->l_gray = imagecolorallocate($this->imag, 220, 220, 220);
$this->black = imagecolorallocate($this->imag, 0, 0, 0);
}
function deseneaza()
{
$lg = 5;
$xc = $this->x0 + $this->wx / 2;
$yc = $this->y0 + $this->hy-20;
$raza = $this->wx / 2;
$val_a = 0; // valoarea pentru afisat
// desen rama
imagefill( $this->imag, 0, 0, $this->white);
imagerectangle( $this->imag, $this->x0, $this->y0+1, $this->x0+$this->wx+20, $this->y0+$this->hy-10, $this->black );
imagerectangle( $this->imag, $this->x0+4, $this->y0+5, $this->x0+$this->wx+16, $this->y0+$this->hy-14, $this->l_gray);
imagerectangle( $this->imag, $this->x0+7, $this->y0+8, $this->x0+$this->wx+13, $this->y0+$this->hy-17, $this->black);
imagerectangle( $this->imag, $this->x0+9, $this->y0+10, $this->x0+$this->wx+11, $this->y0+$this->hy-19, $this->gray);
imagesetthickness($this->imag, 1);
// alfa_gr unghiul in grade
$alfa_gr =180-$this->alfa;
$nrd = 0;
while ($alfa_gr >= $this->alfa)
{
if ($nrd % 5 == 0)
{
$xt = $xc + ($raza-0*$lg) * cos(deg2rad($alfa_gr))-10;
$yt = $yc - ($raza-0*$lg) * sin(deg2rad($alfa_gr));
$x1 = $xc + ($raza-5*$lg) * cos(deg2rad($alfa_gr));
$y1 = $yc - ($raza-5*$lg) * sin(deg2rad($alfa_gr));
imagestring($this->imag, 5, $xt,$yt, $val_a, $this->blue);
}
else
{
$x1 = $xc + ($raza-7*$lg) * cos(deg2rad($alfa_gr));
$y1 = $yc - ($raza-7*$lg) * sin(deg2rad($alfa_gr));
}
$x2 = $xc + ($raza - 9 * $lg) * cos(deg2rad($alfa_gr));
$y2 = $yc - ($raza - 9 * $lg) * sin(deg2rad($alfa_gr));
imageline($this->imag, $x1, $y1, $x2, $y2, $this->gray);
$val_a=$val_a+round(2*$this->val_max/((180-2*$this->alfa)));
$alfa_gr= $alfa_gr- 2;
$nrd=$nrd+1;
}
// redefinesc valoarea maxima in functie de maximul posibil de afisat pe ecran
$val_a=$val_a-round(2*$this->val_max/((180-2*$this->alfa)));
$this->val_max=$val_a;
}
function setval($val)
{
$lg = 5;
$xc = $this->x0 + $this->wx / 2;
$yc = $this->y0 + $this->hy-20;
$raza = $this->wx / 2;
// $alfa_gr unghiul in grade
$alfa_gr =(180-$this->alfa)-($val*(round((180-2*$this->alfa)/$this->val_max,2)));
$x = $xc + ($raza-10*$lg) * cos(deg2rad($alfa_gr));
$y = $yc - ($raza-10*$lg) * sin(deg2rad($alfa_gr));
imageline($this->imag, $xc, $yc, $x, $y, $this->red);
imagefilledarc($this->imag, $xc, $yc, 50, 50, 180, 0, $this->l_gray, IMG_ARC_PIE);
imagestring($this->imag, 5, $xc+$raza-50,$yc-30, $val, $this->red);
}
}
$instr1 = new voltmetru($img, 50, 50, 450, 40,500);
$instr1->deseneaza();
$instr1->setval(rand(0,500));
// output image in the browser
header("Content-type: image/png");
imagepng($img);
// free memory
imagedestroy($img);
?>
Pagini dinamice web responsive
Vom folosi un meniu web responsiv si vom crea o pagina dinamica
Fisierul meniu fiind:
Meniu dinamic
Toate paginile trebuie sa includa fisierul meniu. De exemplu pagina initiala "start_resp.php" fiind:
<?php # Script : start_resp.php
include ('meniu.php');
echo '
Utilizarea PHP pentru realizarea paginilor WEB dinamice
Aplicatiile web dinamice sunt realizate prin:
utilizarea si incorporarea fisierelor externe
manipularea formularelor si prelucrarea datelor continute de acestea
utilizarea functiilor proprii
utilizarea functiilor speciale
Succes in realizarea paginilor dinamice !
';
?>
La fel pagina "clculator.php" pentru calculul tva-ului include fisierul meniu.
<?php # Script: - calculator.php
include ('meniu.php');
echo '
';
// Se verifica daca form-ul a fost trimis
if (isset($_POST['trimis'])) {
// Validare mimimala form.
if ( is_numeric($_POST['cantit']) && is_numeric($_POST['pret']) && is_numeric($_POST['cota_tva']) ) {
// Calcularea rezultatelor.
$tva = $_POST['cota_tva'] / 100; // Turn 5% into .05.
$total = ($_POST['cantit'] * $_POST['pret']) * ($tva + 1);
// Afisarea rezultatelor.
echo '
Total Cost
Costul total al celor ' . $_POST['cantit'] . ' bucati, este: ' . number_format ($total, 2) .' lei Din care TVA '. $_POST['cota_tva'] . '% = ' . number_format ($_POST['pret']*$_POST['cantit']*$tva, 2) . '.
';
} else { // S-au trimis valori invalide.
echo '
Eroare !
Va rog introduceti cantitatea, pretul, si cota TVA.
';
}
} else {
echo '
Calcularea valorii si TVA-ului
Introduceti cantitatea, pretul si cota TVA.
';
}
?>
Pentru afisarea valorii presiunii avem nevoie de mai multe fisiere, primul fiind "manom_din":
<?php # Script : manom_din.php
include ('meniu.php');
echo '
';
?>
manometru.php fiind:
<?php
include ('manom_clss.php');
// creare imagine 250*200
$img = imagecreatetruecolor(250, 250);
// definire culori
$white = imagecolorallocate($img, 255, 255, 255);
// fundal alb imagine
imagefill($img, 0, 0, $white);
if (isset($_GET['vm'])) {
$vmax=$_GET['vm'];
}
else{
$vmax=500; // Valoarea maxima afisata
}
if (isset($_GET['vl'])) {
$val=$_GET['vl'];
}
else{
$val=rand(0,$vmax); // Valoarea maxima afisata
}
$manon = new manometru($img, 0, 0, 300, $vmax);
$manon->desen_grd();
$manon->set_val($val);
// output image in the browser
header("Content-type: image/png");
imagepng($img);
// free memory
imagedestroy($img);
?>
Clasa manometru:
<?php
class manometru {
function __construct($i,$x,$y,$w,$mx){
/* Variabile membru */
$this->imag = $i; // imaginea
$this->x0 = $x; // pozitia pe x in cadrul imaginii
$this->y0 = $y; // pozitia pe y in cadrul imaginii
$this->wx = $w; // latimea imaginii
$this->val_max = $mx; // valoarea maxima afisata
$this->xc=$x+$w/3+20; // Coordonata x a centrului arcului de cerc
$this->yc=$y+$w/3+20; // Coordonata y a centrului arcului de cerc
// variabile publice pentru toata clasa
$this->white = imagecolorallocate($this->imag, 255, 255, 255);
$this->blue = imagecolorallocate($this->imag, 0, 0, 255);
$this->red = imagecolorallocate($this->imag, 255, 0, 0);
$this->gray = imagecolorallocate($this->imag, 130, 130, 130);
$this->l_gray = imagecolorallocate($this->imag, 220, 220, 220);
$this->black = imagecolorallocate($this->imag, 0, 0, 0);
}
function desen_grd()
{
/* Variabile locale */
$lg = 5; // latimea gradatiilor
$raza = $this->wx / 3+16; // raza gradatiilor
$val_a = 0; // valoarea pentru afisat a gradtiilor
$nrd = 0; // numarul curent al diviziunii
$alfa_gr =630; // alfa_gr unghiul in grade
while ($alfa_gr >270) // afisarea se face in sensul acelor de ceasornic adica de la 630 gr la 270
{
if ($nrd % 10 == 0)
{
$xt = $this->xc + ($raza-2*$lg) * cos(deg2rad($alfa_gr))-10;// coordonate text
$yt = $this->yc - ($raza-2*$lg) * sin(deg2rad($alfa_gr));
$x1 = $this->xc + ($raza-5*$lg) * cos(deg2rad($alfa_gr));// coordonate sfarsit gradatii mari
$y1 = $this->yc - ($raza-5*$lg) * sin(deg2rad($alfa_gr));
$val_a=round(2*$nrd*($this->val_max)/360); // calculare valoare gradatie
imagestring($this->imag, 4, $xt,$yt, $val_a, $this->blue);// scriere valoare gradatie
}
else
{
$x1 = $this->xc + ($raza-7*$lg) * cos(deg2rad($alfa_gr));// coordonate sfarsit gradatii mici
$y1 = $this->yc - ($raza-7*$lg) * sin(deg2rad($alfa_gr));
}
$x2 = $this->xc + ($raza - 9 * $lg) * cos(deg2rad($alfa_gr));// coordonate inceput gradatii mari sau mici
$y2 = $this->yc - ($raza - 9 * $lg) * sin(deg2rad($alfa_gr));
imageline($this->imag, $x1, $y1, $x2, $y2, $this->gray);// trasare gradatii
$alfa_gr= $alfa_gr- 2;
$nrd=$nrd+1;
}
}
function set_val( $vl)
{
$wd=$this->wx/7; // latimea arcului de cerc
$alfa_i = 90; // unghiul initial
$alfa = $alfa_i+360*($vl/$this->val_max);// unghiul curent
imagefilledarc($this->imag, $this->xc , $this->yc, $this->wx/2, $this->wx/2, 0, 360, $this->l_gray,4);
imagefilledarc($this->imag, $this->xc , $this->yc, $this->wx/2, $this->wx/2, $alfa_i, $alfa, $this->red,4);
imagefilledarc($this->imag, $this->xc , $this->yc, $this->wx/2-$wd,$this->wx/2-$wd, 0, 360, $this->white,4);
imagearc($this->imag, $this->xc , $this->yc, $this->wx/2, $this->wx/2, 0, 360,$this->gray);
imagearc($this->imag, $this->xc , $this->yc, $this->wx/2-$wd, $this->wx/2-$wd, 0, 360,$this->gray);
imagestring($this->imag, 5, $this->xc-10 , $this->yc-10,$vl , $this->red);
}
}
?>