Baze de Date Curs 2 PP

31
Baze de date Cursul II Baze de date Lect.dr. P. Postolache 1

description

Fizica informatica baze de date curs 2

Transcript of Baze de Date Curs 2 PP

Page 1: Baze de Date Curs 2 PP

Baze de date

Cursul II

Baze de date Lect.dr. P. Postolache1

Page 2: Baze de Date Curs 2 PP

PHP

� Ca şi alte limbaje de scripting pentru Web, PHP vă

permite să furnizaţi un conţinut Web dinamic.

� Mai mult, spre deosebire de limbajele de scripting,

precum JavaScript, PHP rulează pe serverul Web, nu în precum JavaScript, PHP rulează pe serverul Web, nu în

browserul Web. În consecinţă, PHP poate obţine accesul

la fişiere, baze de date şi alte resurse inaccesibile

programului JavaScript.

Baze de date Lect.dr. P. Postolache2

Page 3: Baze de Date Curs 2 PP

PHP

� Un script PHP:� Numele fişierului trebuie să fie alcătuit numai din caractere minuscule,

cifre şi underscore şi minus. Utilizarea spaţiilor şi a altor caractere este interzisă.

� Extensia numelui fişierelor trebuie să fie .php sau .html� ScriptulMeu.php� scriptul_tău.php� scriptul_tău.php� scriptul-lui.php3� scriptul-ei.php

� Poate executa trei operaţii elementare:� Obţine date de la un utilizator.� Execută prelucrări ale datelor, respectiv obţin accesul la datele stocate în

fişiere şi baze de date şi le manipulează.� Afişează date astfel încât un utilizator să le poată vizualiza.

Baze de date Lect.dr. P. Postolache3

Page 4: Baze de Date Curs 2 PP

PHP

<?php

// script-exemplu.php

// Acest script afiseaza un mesaj vizibil pentru

// utilizator.

echo(“Acesta este un script foarte simplu.”);

echo(“<H2>Iată vine-un sol de pace…</H2>”);echo(“<H2>Iată vine-un sol de pace…</H2>”);

?>

După ce aţi creat un script PHP, pentru a-l executa, acestatrebuie încărcat pe un server WEB cu suport pentru PHP.

Baze de date Lect.dr. P. Postolache4

Page 5: Baze de Date Curs 2 PP

Limbajul PHP

� Variabile:� încep cu $ urmat neapărat de o literă sau “_”:$temperatura = 22.3;

� Tipul unei variabile se poate modifica dacă atribuiţi variabilei o valoare de un tip diferit faţă de cel al valorii curente a variabilei. curente a variabilei. � De exemplu, instrucţiunea de atribuire$x = 1;

atribuie variabilei $x tipul întreg. Dacă instrucţiunea de atribuire$x = 1.5;

va fi executată ulterior, atunci variabila $x devine de tip dublu.

Baze de date Lect.dr. P. Postolache5

Page 6: Baze de Date Curs 2 PP

Limbajul PHP

� Operatori:� +, -, /, *, % (Modulo)� ++ Incrementare� – – Decrementare

� . Concatenare� == Egal cu� === Identic cu (testează şi tipul variabilei)

� La ++ şi – – se pune problema ca la C (pre- sau post-incrementare)$x = ++$y; respectiv $x = $y++;

$nume_botez=“Radu”;

$nume_familie=“Vasilescu”;

$nume=$nume_botez.” ”.$nume_familie;

Baze de date Lect.dr. P. Postolache6

Page 7: Baze de Date Curs 2 PP

Limbajul PHP

� Funcţii (unele):� abs(x) – valoarea absolută a lui x� ceil(x) – valoarea x, rotunjită la întregul imediat superior� floor(x) – valoarea x, rotunjită la întregul imediat inferior� max(x,y,...) – valoarea maximă a unui set de valori� min(x,y,...) – valoarea minimă a unui set de valori� min(x,y,...) – valoarea minimă a unui set de valori� pow(x,n) – numărul x, ridicat la puterea specificată n� strftime(f) – data curentă, formatată conform conţinutului

parametrului f� sqrt(x) – rădăcina pătrată a lui x

� $lungime=sqrt($arie);

Baze de date Lect.dr. P. Postolache7

Page 8: Baze de Date Curs 2 PP

Formulare HTML

� Cea mai simplă pagină WEB:<HTML><HEAD><TITLE>Titlul paginii este inserat aici</TITLE></HEAD><BODY>ConŃinutul paginii este inserat aiciConŃinutul paginii este inserat aici</BODY></HTML>

� Formulare:� <FORM METHOD="metoda"ACTION="url"> F </FORM>

unde “metoda” = POST sau GET

Baze de date Lect.dr. P. Postolache8

Page 9: Baze de Date Curs 2 PP

Formulare HTML

� POST/GET:

� Dacă intrăm pe Google şi căutăm “php” pagina cu rezultatele căutării va avea adresa:http://www.google.com/search?hl=en&q=phpPutem presupune că aceasta este rezultatul unui formular Putem presupune că aceasta este rezultatul unui formular precum:

<FORM METHOD=“GET” ACTION=“http://www.google.com/search”>

<INPUT TYPE=“TEXT” NAME=“q”>

<INPUT TYPE=“SUBMIT” VALUE=“Google search”>

</FORM>

Baze de date Lect.dr. P. Postolache9

Page 10: Baze de Date Curs 2 PP

InteracŃiunea HTML–PHP

<?php // Fişierul p-3-1.php

phpinfo();

?>

___________________________________________________________________

<HTML>

<HEAD> <TITLE>Numele şi adresa de e-mail ale utilizatorului</TITLE>

</HEAD>

<BODY><BODY>

<FORM METHOD=”GET” ACTION=”p-3-1.php”>

<H3>Numele şi adresa de e-mail ale utilizatorului</H3>

<BR>Nume:<BR><INPUT TYPE=”TEXT” NAME=”numele_utilizatorului”>

<BR>E-mail:<BR><INPUT TYPE=”TEXT” NAME=”adresa_email”>

<BR><INPUT TYPE=”SUBMIT” VALUE=”Trimite datele”>

</FORM>

</BODY>

</HTML>

Baze de date Lect.dr. P. Postolache10

Page 11: Baze de Date Curs 2 PP

InteracŃiunea HTML–PHP

Baze de date Lect.dr. P. Postolache11

Page 12: Baze de Date Curs 2 PP

InteracŃiunea HTML–PHP

� Câmpuri ascunse� Uneori este utilă crearea aşa-numitelor câmpuri ascunse.

Valorile câmpurilor ascunse sunt trimise la server alături de valorile altor controale; cu toate acestea, utilizatorul nu are posibilitatea de a vizualiza sau manipula valorile câmpurilor ascunse.Câmpurile ascunse se utilizează frecvent în cadrul unei serii de � Câmpurile ascunse se utilizează frecvent în cadrul unei serii de formulare. De exemplu, datele introduse de utilizator în primul formular din serie pot fi necesare în formularele ulterioare, în loc de a determina utilizatorul să introducă datele în fiecare formular, acestea pot fi stocate în câmpuri ascunse, create şi iniţializate de scriptul care prelucrează primul formular. Pentru a crea un câmp ascuns, folosiţi următoarea sintaxă:<INPUT TYPE=”HIDDEN” NAME=”text” VALUE=”text”>

Baze de date Lect.dr. P. Postolache12

Page 13: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

<?php

$raza = 2;

$pi = 3.14159;

$arie = $pi*$raza*$raza;

echo “Valoarea variabilei \$aria este $arie.”;

?>?>

� Pentru a defini o constantă, folosiţi funcţia define():

define(„PI”, 3.14159);

$arie = PI*$raza*$raza;

Baze de date Lect.dr. P. Postolache13

Page 14: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

� Boolean:� TRUE (adevărat):

� $a = TRUE;� $a = 1;� $a = -1;

� sau FALSE (fals):� sau FALSE (fals):� $a = FALSE;� $a = 0;� $a = “”; //şirul vid

� Întreg şi Floating-point:� $a = 1234; $a = -123; $a = 0123; $a = 0x1AB; � $a = 1.23; $a = 1.2e3; $a = 7E-10;

Baze de date Lect.dr. P. Postolache14

În baza 8 În baza 16

Page 15: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

� String:� definirea cu ghilimele simple:$a = ‘Acesta este un string’;

� definirea cu ghilimele duble:$a = “Acesta este un string”;$a = “Acesta este un string”;

� Pentru afişarea caracterului apostrof ( ‘ ) în cadrul textului, acesta trebuie precedat de caracterul backslash ( \ ). La fel se procedează pentru afişarea caracterului backslash ( \ ).� Exemplu:� $a = 'Arnold a spus: "I\'ll be back"';

//Va afişa: Arnold a spus: “I’ll be back”

Baze de date Lect.dr. P. Postolache15

Page 16: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

� Cea mai importantă diferenţă dintre cele două modalităţi estecă în cazul al doilea pot fi inserate caractere speciale, iar dacăîn cadrul textului apare o variabilă, aceasta va fi înlocuităcu valoarea conţinută în ea.

� Exemplul 1:$x = 40;$x = 40;$a = “Afara sunt $x grade Celsius.”;//Va afişa: Afara sunt 40 grade Celsius.

� Exemplul 2:$x = 40;$a = ‘Afara sunt $x grade Celsius.’;//Va afişa: Afara sunt $x grade Celsius.

Baze de date Lect.dr. P. Postolache16

Page 17: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

� Tablouri:� Pentru a crea un tablou, atribuiţi unui element al tabloului o

valoare şi o cheie. De exemplu, instrucţiunea de atribuire$clasa[1] = “geometrie”;creează un tablou denumit $clasa şi un element cu valoarea "geometrie" identificat prin cheia 1. Pentru a stoca în tablou o a doua valoare, puteţi folosi următoarea instrucţiune de atribuire:doua valoare, puteţi folosi următoarea instrucţiune de atribuire:$clasa[2] = “contabilitate”;

� Cheile folosite pentru identificarea elementelor unui tablou nu trebuie să fie numere consecutive; nici măcar nu trebuie să fie numere:$preferinŃe[„Nelu”] =“îngheŃată elveŃiană cu migdale simplă”; $preferinŃe[„Gina”] = “căpşuni”;

Baze de date Lect.dr. P. Postolache17

Page 18: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

� Variabile:$a = ‘banana’;

$b = &$a; //variabila $b va contine stringul ‘banana’

$b = ‘portocala’; //modificand $b se va modifica si $a

---------------------------------------------------------------

$a = 1; /* variabila globala */

Function Test () {

echo $a; /* referinta spre o variabila locala */ }

Test ();

---------------------------------------------------------------

$a = 1; /* variabila globala */

Function Test () {

global $a;

echo $a; /* referinta spre o variabila locala */ }

Test ();

Baze de date Lect.dr. P. Postolache18

Nu afişează nimic

Afişează 1

Page 19: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

� Dubla indirectare sau variabile dinamice:$alta = 'Hello world!';$myvar = 'alta';echo $myvar;echo $$myvar;//Va afişa la primul echo alta şi la al doilea Hello world!

� Se spune că o variabilă dinamică face o referinţă indirectă la � Se spune că o variabilă dinamică face o referinţă indirectă la valoarea sa. Cu alte cuvinte, o variabilă dinamică nu conţine, practic, propria sa valoare. În schimb, conţine amplasamentul unde se poate găsi valoarea; cu alte cuvinte, numele unei alte variabile.

� Util!!!

Baze de date Lect.dr. P. Postolache19

Page 20: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

� Conversiile automate de tip:$x = 1;

$y = 2.5;

$z = $x+$y;

echo $z; //Va afisa 3.5

� $z este automat considerat de tip double. Variabila $x rămâne de tip întreg, chiar dacă PHP o tratează ca o valoare de tip dublu pentru a întreg, chiar dacă PHP o tratează ca o valoare de tip dublu pentru a executa calculul.$x = 1;

$y = $x+ „1 more”;

echo $y; //Va afisa 2

� Dacă şirul începe cu număr, valoarea şirului este dată de valoarea numerică respectivă; altfel, valoarea sa este zero.

� Dacă apare punct zecimal e double; altfel e integer.

Baze de date Lect.dr. P. Postolache20

Page 21: Baze de Date Curs 2 PP

Constante şi tipuri de variabile

� Conversiile forţate (manuale) de tip:$x = 1;

$y = 2.5;

$z = $x + (integer) $y;

echo $z; //Va afisa 3

� Doubleval() – tratează argumentul ca fiind de tip dublu. � Intval() - tratează argumentul ca fiind de tip întreg. � Strval() - tratează argumentul ca fiind de tip şir.

� Modificarea tipului unei variabile este posibilă prin utilizarea funcţiei settype():

$x = 1.5;

settype($x,”integer”);

echo $x; //Va afisa 1

Baze de date Lect.dr. P. Postolache21

Page 22: Baze de Date Curs 2 PP

InstrucŃiuni PHP - ifif ($numar > 10 ){

echo „<BR>Numarul este mai mare decăt 10.”;

echo „<BR>Deci, trebuie sa fie mai mare.”;

}

� O instrucţiune corelată atât cu instrucţiunea if, cât şi cu instrucţiunea else, este instrucţiunea elseif. Când este folosită corect, poate fi mai simplu de înţeles decât o instrucţiune if imbricată.instrucţiune if imbricată.

if ($numar > 100 )

echo “<BR>Acesta este un numar foarte mare.”;

elseif ($numar > 10)

echo “<BR>Acesta este un numar mare.”;

elseif ($numar > 1)

echo “<BR>Acesta este un numar mic.”;

else

echo “<BR>Acesta este un numar foarte mic.”;

Baze de date Lect.dr. P. Postolache22

Page 23: Baze de Date Curs 2 PP

InstrucŃiuni PHP - switch

� Pentru a putea lua o decizie în mai multe sensuri, puteţi folosi instrucţiuni if , else sau elseif. Când doriţi ca programul dumneavoastră să aleagă dintr-un set de alternative (valori întregi, reale, şiruri) instrucţiunea switch este o opţiune mai convenabilă:

switch($numar) {

case(1):case(1):

echo “mic”; break;

case(2):

echo “mediu”; break;

case(3):

echo “mare”; break;

default:

echo “Acesta nu este un cod valabil”;

}

Baze de date Lect.dr. P. Postolache23

Page 24: Baze de Date Curs 2 PP

InstrucŃiuni PHP - for$suma = 0

for ($n=1; $n<=3; $n++)

$suma += $n;

echo “<BR>Suma intregilor de la 1 la 3 este $suma.”;

� Prima expresie este expresia de iniţializare. A doua expresie � Prima expresie este expresia de iniţializare. A doua expresie este expresia de test, evaluată pentru prima dată imediat după evaluarea expresiei de iniţializare. Cea de-a treia expresie este expresia pas. În general, aceasta modifică una sau mai multe variabile la care se face referire în expresia test.

for($n=0;$n<=$numar; $n++)

echo “<BR><INPUT TYPE =\”BUTTON\” VALUE=\”$n\”>\n”;

Baze de date Lect.dr. P. Postolache24

Page 25: Baze de Date Curs 2 PP

InstrucŃiuni PHP – while

� Practic, instrucţiunile while şi do while reprezintă versiuni “manuale” ale instrucţiunii for:

for ( ; $i<= 3; ) $suma += $i;

while ($i <= 3) $suma += $i;

$n = 1;

$suma = 0;

$n = 1;

$suma = 0;

Baze de date Lect.dr. P. Postolache25

$suma = 0;

do {{{{$suma += $n;$n++;

}}}}

while ($n <= 3);echo “<BR>Suma intregilor

de la 1 la 3 este $suma.”;

$suma = 0;

while ($n <= 3){{{{

$suma += $n;$n++;

}}}}

echo “<BR>Suma intregilor

de la 1 la 3 este $suma.”;

Page 26: Baze de Date Curs 2 PP

InstrucŃiuni PHP - funcŃii

$num_aleatoriu = rand(1, 12);

� Când se produce o eroare în timpul execuţiei unei funcţii, PHP generează mesaje de eroare. Pentru a suprima mesajele de eroare care pot apărea în timpul execuţiei funcţiei f(), invocaţi funcţia:

Y = @f(x);Y = @f(x);

� Utilizarea fişierelor incluse:require(„fisierul.inc”);

� Când este încărcat un script PHP care conţine require (sau require_once), conţinutul fişierului specificat este inserat în script, înlocuind instrucţiunea require (sau require_once).

Baze de date Lect.dr. P. Postolache26

Page 27: Baze de Date Curs 2 PP

InstrucŃiuni PHP - funcŃii

� Altă variantă:$x = 1;

include("fişier".$x.".inc");

� Instrucţiunea require este prelucrată la încărcarea scriptului PHP asociat, înaintea legări valorilor la variabilele corespunzătoare, în consecinţă, nu puteţi folosi o expresie pentru a specifica numele fişierului variabilele corespunzătoare, în consecinţă, nu puteţi folosi o expresie pentru a specifica numele fişierului care urmează a fi inclus de către o instrucţiune require.

� Puteţi folosi instrucţiunea include, care este o instrucţiune executabilă ce determină evaluarea scriptului PHP dintr-un fişier specificat.

Baze de date Lect.dr. P. Postolache27

Page 28: Baze de Date Curs 2 PP

InstrucŃiuni PHP - funcŃiifunction calculeaza_arie($inaltime, $latime)

{

return $inaltime * $latime;

}

� Numele funcţiilor nu sunt case senzitive.� Este posibil ca o funcţie din PHP să se auto-apeleze.� Putem avea valori prestabilite pentru parametri. � Putem avea valori prestabilite pentru parametri. function impozit_vanzari($cantitate , $rata = 0.0725)

{

return $suma * $rata;

}

$impozit = impozit_vanzari($cumparaturi,0.08);

$impozit = impozit_vanzari($cumparaturi);

Baze de date Lect.dr. P. Postolache28

Page 29: Baze de Date Curs 2 PP

InstrucŃiuni PHP - funcŃii

� Variabilele din corpul funcţiilor pot fi:locale,globale (global $x) saustatice (static $x)

function prin_valoare($x)

{ $x = 1; }

function prin_referinta(&$x)

{ $x = 1; }

$y = 0;

prin_valoare($y);

$y = 0

prin_valoare(&$y);

$y = 0

prin_referinta($y);

Baze de date Lect.dr. P. Postolache29

$y=0

$y=1

$y=1

Page 30: Baze de Date Curs 2 PP

InstrucŃiuni PHP - tablouri

$limbaje[10] = “Perl”;

$limbaje[20] = “PHP”;

$limbaje[] =”Python”; (21=>”Python”)� Sau:$limbaje = array(10=>”Perl”, 20=>”PHP”, “Python”);

� Există instrucţiune pentru tabele nesecvenţiale:$limbaje = array(10=>”Perl”, 20=>”PHP”, ”Python”);$limbaje = array(10=>”Perl”, 20=>”PHP”, ”Python”);

// parcurge iterativ tabloul

foreach ($limbaje as $index => $limbaj)

{

echo “<BR>$index =>$limbaj”;

}

� foreach (array_expression as $key => $value)

Baze de date Lect.dr. P. Postolache30

Page 31: Baze de Date Curs 2 PP

InstrucŃiuni PHP - tablouri

� În afară de modalităţile de parcurgere iterativă a tablourilor, PHP oferă funcţii de traversare a tablourilor. � current() returnează valoarea curentă a tabloului. � next() şi prev() modifică pointerul intern al tabloului şi se

pot folosi pentru a parcurge un tablou.� key() returnează cheia asociată elementului curent:� key() returnează cheia asociată elementului curent:

$limbaje = array(10=>”Perl”, 20=>”PHP”);

$curent = current($limbaje);

$cheie = key($limbaje);

� each() returnează următoarea pereche cheie-valoare:$fiecare = each($limbaje);

$cheie = each[‘key’];

$valoare = each[‘value’];

Baze de date Lect.dr. P. Postolache31