Limbajul HTML este orientat n special spre definirea coninutului unui document online, i mai puin spre formatarea acestuia. Exist unele modaliti de stilizare a coninutului unui fiier HTML utilizarea para!rafelor, utilizarea atributelor fonturilor, a bac"!round#urilor, etc.$ dar acestea n!reuneaz manipularea fiierelor HTML deoarece comaseaz datele cu elementele stilistice lucru %izibil mai ales pentru proiecte mari$. &ropunerea '() este de a separa partea de desi!n de cea de date. *stfel, elementele ce definesc formatarea pa!inii aspect, aezare n pa!in$ sunt stocate ntr#un fiier )++ separat, uor de accesat dac este ne%oie. Sintaxa CSS ,n fiier %a conine un set de instruciuni )++. -iecare instruciune este alctuit dintr#un selector i un bloc de declaraii. p / selector 0 color.red1 / propietate2.%aloare21 text#ali!n.center1 / propietate3.%aloare31 font#size.23px1 / propietate(.%aloare(1 4 +electorul indic selecteaz$ CE element 2 se dorete a fi formatat, proprietile indic care sunt caracteristicile ce %or fi modificate n ce %aloare$. Toate elementele HTML de acel timp n cazul exemplului %orbim de para!rafele delimitate de ta!urile 5p6 i 57p6$ %or fi afectate de respecti%a instruciune )++. 8ac se dorete introducerea unor explicaii7comentarii, acest lucru se poate face cu ajutorul ta!urilor 79 : 97. )omentariile sunt multilinie. Selecia dup identificatorul elementului +e poate utiliza un identificator atunci c;nd %rem s formatm un element unic identificabil, identificator prefixat de simbolul <=>. ?nstruciunea )++ re!ulile de formatare definite n blocul de declaraii$ poate arta astfel. =para2 0 color.red1 text#ali!n.center1 font#size.23px1 4 Selecia dup clasa elementului +e utilizeaz pentru identificarea i formatarea elementelor ce aparin unei anumite clase. *tributul ce %a fi formatat este prefixat de simbolul < . >. ?nstruciunea )++ re!ulile de formatare definite n blocul de declaraii$ poate arta astfel. 2 ?dentificarea se poate face dup multe criterii, cel mai des utilizat fiind c@iar numele elementului. 2 PAII .center 0 color.red1 text#ali!n.center1 font#size.23px1 4 +e pot selecta i doar anumite elemente asupra crora se aplic respecti%a clas. p.center 0 color.red1 text#ali!n.center1 font#size.23px1 4 Aruparea selectorilor 8ac o sec%en este comun mai multor elemente care accept respecti%ele declaraii, aceste elemente pot fi !rupate. p,@2,@3 0 color.red1 text#ali!n.center1 font#size.23px1 4 Utilizarea instruciunilor CSS Exist ( moduri de utilizare a instruciunilor )++, !rupate ca foi de stil stylesheets$. 2. +tiluri inte!rate inline$. inte!rate n ta!urile elementelor HTML. 5p stBleCDcolor.red1text#ali!n.center1font#size.23px1D6Hello EorldF57p6 Gu este recomandat utilizarea acestei metode nu rezol% problema separrii datelor de elementele de formatare$. 3. -oi de stil interne. instruciunile )++ sunt inte!rate n fiierul HTML, fiind declarate n seciunea 5@ead6 57@ead6 a documentului cu ajutorul ta!urilor 5stBle6 57stBle6. 5@tml6 5@ead6 5stBle6 @2 0 color.red1 text#ali!n.center1 4 p 0 color.red1 text#ali!n.center1 font#size.23px1 3 PAII 4 57stBle6 57@ead6 5bodB6 : 57bodB6 57@tml6 ,tilizarea acestei metode este recomandat atunci c;nd se aplic un sin!ur stil ntre!ului document. (. -oi de stil externe. instruciunile )++ sunt incluse n fiiere externe extensia .css$ i apelate din fiierul HTML cu ajutorul ta!ului 5lin"6 n interiorul seciunii 5@ead6 57@ead6. 5@tml6 5@ead6 5lin" relCDstBles@eetD tBpeCDtext7cssD @refCDstBle.cssD6 57@ead6 5bodB6 ... 57bodB6 57@tml6 -iierele de stil conin instruciuni )++ care se aplic elementelor rele%ante din documentele HTML. *stfel se poate modifica aspectul ntre!ului site manipul;nd doar fiierul )++ asociat. ,n fiier HTML poate apela mai multe fiiere de stil externe acestea se pot !rupa, de exemplu, dup tipul lor, dup funcionalitate, dup elementele manipulate, etc.$. 8ac se utilizeaz instruciuni diferite pentru acelai selector n di%erse foi de stiluri, %alorile asociate proprietilor %or fi cele preluate din ultimele instruciuni rele%ante atunci c;nd exist conflicte$. p 0 color.red1 text#ali!n.left1 font#size.2Hpx1 4 p 0 color.red1 text#ali!n.center1 font#size.23px1 4 In exemplul de mai sus pa!ina rezultat para!rafele %or fi setate conform proprietilor. color:red; text-align:center; font-size:12px; &entru proprietile <text-align> i <font-size> ultimele declaraii considerate cronolo!ic %orbind$ ( PAII au fost cele utilizate pentru formatare. -oile de stil se citesc n ordinea n care sunt apelate i lu;ndu#se n considerare prioritatea la execuie / inline, external, internalF$, rezultatul execuiei fiind un sin!ur fiier !lobal care este apoi executat. Proprieti specifice CSS &entru proprieti specifice )++ urmrii pa!inile de la adresa. @ttp.77EEE.E(sc@ools.com7css7cssJbac"!round.asp i urmtoarele$. K P.A.I.I. - Formulare HTML Formulare HTML Obiective Dezvoltarea formularelor HTML Formularele HTML reprezint o modalitate de comunicare ntre utilizatori i server; prezint o utilitate deosebit atunci cnd sunt folosite n combinaie cu scripturi ce se execut pe server ex! "H"# "erl# $%" !&'T ect(! )n cadrul unei aplicaii *eb# formularele HTML i scripturile de validare +ava%cript sunt referite ca i client,side iar scripturile executate pe server ca server,side! -atele introduse ntr,un formular sunt de re.ul trimise ctre un server *eb sau prin pot electronic spre un cont de e,mail! )ntr,un document HTML# formularele sunt introduse prin marca/ul <form>...</form>! 0n document HTML poate s conin mai multe formulare# ns numai informaiile dintr,un sin.ur formular pot fi trimise la un anumit moment dat ctre server! )n .eneral# cmpurile unui formular destinate introducerii datelor cmpuri text# butoane de comand# casete de validare# butoane radio etc(# se specific prin intermediul marca/ului <input>! 'lementul <FORM> Atribute: name permite specificarea unui nume unic! $cest atribut este util atunci cnd un document HTML conine mai multe formulare! ation specific 01L,ul pro.ramului server care va prelua datele din formular! met!o" specific metoda prin care bro*ser,ul transmite informaiile ctre server! #$emple: <html> <head><title>Primul formular</title></head> <body> <form name=formular1 method=post action=http://apollo.eed.usv.ro /~tudor_c/prim.php> </form> </body> </html> <html> <head><title>Formular mail</title></head> <body> <form NAME=formularMail METH!D=POST EN"T#$E=tet/plai! A"T%!N=mailto:"e#master$site.com%Su#&ect'Pro(ram co!feri!ta> </form> </body> </html> P.A.I.I. - Formulare HTML 'lementul <I%P&T> Atribute: t'pe specific tipul controlului! o button 2 buton de comand! La un clic3 de mouse# se poate declana o aciune prin intermediul unui script ex! +ava%cript( o checkbox 2 caset de validare! 4ptiunea checked poate fi utilizat pentru a specifica daca o caset este 5marcat5 sau nu! o file 2 permite utilizatorului s selecteze un fiier din computerul propriu# pentru a,l ncrca pe server o hidden 2 un control 5invizibil5 utilizatorului! "streaz o perec6e variabil7valoare care nu este vizibil utilizatorului! o submit 2 buton de comand utilizat pentru trimiterea datelor din formular# ctre server o image 2 un buton pe suprafaa cruia este afiat o ima.ine i care are o funcie asemntoare cu submit! o password 2 un cmp de tip text# care nlocuiete fiecare caracter tastat cu un asterix 8(! o radio 2 buton cu interblocare; un .rup de elemente radio au acelai nume# ns numai un sin.ur element poate fi selectat o text 2 permite introducerea de text o reset 2 5cur5 ntre.ul formular# revenind la valorile implicite name , numele controlului elementului( (alue , valoarea atribuit elementului )i*e , numrul de caractere care vor fi vizibile ntr,un cmp de tip text sau password ma$len+t! , numrul maxim de caractere ce pot fi introduse ntr,un cmp de tip text sau password "i)able" , dezactiveaz un element rea"onl' , un element ce poate fi citit# dar nu i fi modificat 'lementul <T#,TAR#A> - permite introducerea de text pe mai multe rnduri! <te$tarea -ol).$/ -ro0).'/ -name.nume/ -0rap/ -rea"onl'/ ... </te$tarea> 'lementul <1#L#2T> - implementeaz o list de opiuni cu derulare <)elet -name.nume/ -)i*e."imen)iune/ -multiple/ > <option -(alue.(aloare34/> 5 </option> P.A.I.I. - Formulare HTML <option -(alue.(aloare36/> 5 </option> 5 <option -(alue.(aloare3n/> 5 </option> </)elet> Atribute: name specific numele controlului )i*e specific numrul de opiuni din list multiple prezena acestui atribut specific faptul c lista permite selectarea mai multor elemente cu a/utorul tastei 2trl! #$emplu! <html> <head><title>Primul formular</title></head> <body> <form name')formular)> P.A.I.I. - Formulare HTML <table b&color'li(ht(ra* border'+> <tr> <td>,ume:</td> <td> <in'ut ty'e'-tet- name'-!ume- ma(len&th'+.> </td> </tr> <tr> <td>/dresa:</td> <td> <in'ut ty'e'-tet- name'-!ume- ma(len&th'0.> </td> </tr> <tr> <td>Telefo!:</td> <td> <in'ut ty'e'-tet- name'-!ume- ma(len&th'0.> </td> </tr> <tr> <td>1arsta:</td> <td> <in'ut ty'e'-radio- name'-cat_varsta->1.210 <in'ut ty'e'-radio- name'-cat_varsta- chec)ed>102+. <in'ut ty'e'-radio- name'-cat_varsta->peste +. </td> </tr> <tr> <td vali&n'top>Pasiu!i:</td> <td> <table border'.> <tr> <td> <in'ut ty'e'-chec3#o- name'-mu4ica->Mu4ia </td> </tr> <tr> <td> <in'ut ty'e'-chec3#o- name'-literatura->5iteratura </td> </tr> <tr> <td> <in'ut ty'e'-chec3#o- name'-sportul->Sportul </td> </tr> </table> </td> </tr> <tr> <td>6o!tact:</td> <td> <*elect name'-co!tact-> <o'tion>7M</o'tion> <o'tion>MS,</o'tion> <o'tion>8oo(le Tal3</o'tion> </*elect> </td> </tr> <tr> <td vali&n'top>6ome!tarii:</td> <td> <te(tarea name'-come!tarii- col*'+. ro+*'9>6ome!tariile dv.</te(tarea> P.A.I.I. - Formulare HTML </td> </tr> <tr> <td></td> <td ali&n'ce!ter> <in'ut ty'e'-su#mit- name'-trimite- value'-Trimite-> <in'ut ty'e'-reset- name'-reset- value'-:eset-> </td> </tr> </table> </form> </body> </html> Tem9 %criei formularul HTML corespunztor fi.urii de mai /os9 P.A.I. Prezentare generala a limbajului PHP 1. Introducere
PHP este in momentul de fata cel mai utilizat limbaj script pentru programare pe internet datorita simplitatii sale precum si a multitudinii de functii oferite de acesta. Spre deosebire de CGI-urile realizate in limbaj C sau Perl, bucatile de cod PHP pot fi inserate direct in codul HTML al paginii web fara a afecta functionalitatea acesteia. Tagul specific pentru PHP este : <?PHP .... ?> .
Ceea ce deosebeste PHP de limbajele script de tipul JavaScript este faptul ca PHP este executat pe serverul de internet, iar utilizatorul va vedea in browser doar rezultatul executiei codului, fara a putea avea acces la codul propriu zis. Insa cel mai mare avantaj al PHP-ului este faptul ca este extrem de usor de invatat de cei fara experienta in programare, de asemeni oferind foarte multe avantaje programatorilor experimentati dintre care cel mai important este acela ca PHP-ul respecta in mare sintaxa limbajului de programare C.
Datorita faptului ca PHP este un limbaj orientat pe executarea la nivelul serverului, cu ajutorul lui se poate realiza tot ceea ce ofera celelalte tipuri de CGI-uri, adica colectarea datelor din formularele HTTP sau generarea dinamica de pagini de internet. Pe linga aceste caracteritici ale tuturor CGI-urilor, PHP poate comunica cu majoritatea tipurilor de baze de date intr-un mod deosebit de simplu, poate genera dinamic imagini, fisiere de tip PDF sau poate folosi majoritatea protocoalelor internet: SNMP, POP3, HTTP si FTP.
2. Primul script PHP
In cele ce urmeaza, vom prezenta cel mai simplu script PHP, ce afiseaza mesajul Hello World cu ajutorul functiei echo ce are rolul de a tipari variabila sau sirul de caractere ce-i urmeaza cu observatia ca un sir de caractere poate fi definit in doua moduri in PHP: intre ghilimele sau intre apostroafe.
2.1 Primul script PHP: <?php echo "Hello World"; ?>
2.3 Rezultatul executiei acestui script (ceea ce vede utilizatorul drept sursa) este: <html> <head> <title>PHP Test</title> </head> <body> <hr>Hello World<hr>"; </body> </html>
3. Variabile predefinite in PHP
Variabila Explicatii $SERVER_NAME numele serverului pe care este esecutat scriptul PHP $REQUEST_METHOD tipul metodei folosite de formular (GET, HEAD, POST, PUT) $QUERY_STRING sirul de caractere trimis de formular $REMOTE_ADDR adresa de internet a celui ce acceseaza scriptul $HTTP_GET_VARS un tablou ce contine datele daca a fost folosita metoda GET $HTTP_POST_VARS un tablou ce contine datele daca a fost folosita metoda POST
3.1 Exemplu de program ce foloseste variabilele predefinite
<html> <head> <title>PHP Test</title> </head> <body> <?php echo Serverul este : ; echo $_SERVER[SERVER_NAME]; echo <br>; echo Adresa d-voastra de IP este : ; echo $_SERVER[REMOTE_ADDR]; ?> </body> </html>
P.A.I. Prezentare generala a limbajului PHP 4. Tipuri de date
In PHP exista 5 tipuri de date importante, dintre care doar trei vor fi prezentate la acest moment: numere intregi numere reale siruri de caractere matrici obiecte
Numere intregi pot lua oricare din urmatoarele forme, avind semnificatiile corespunzatoare:
1254 numar intreg pozitiv in baza 10 -1963 numar intreg negativ in baza 10 02376 numar intreg in baza 8 0xFF - numar intreg in baza 16
Dimensiunea numerelor reale depinde de sistemul de operare unde se afla interpretorul de PHP, dar de obicei, numarul real maxim este 1.8e308 cu o precizie de 14 zecimale dupa virgula. In PHP se foloseste numerotatia engleza a numerelor reale cu punct (.) in loc de virgula (,) : 3.14 sau 1.71, etc.
Dupa cum a fost prezentat anterior, pentru a reprezenta sirurile de caractere, se folosesc doua notatii diferite: intre apostroafe Sir de caractere sau intre ghilimele Sir de caractere cu deosebirea ca cel de-al doilea mod de folosire va expanda sirul la valorile variabilelor incluse intre ele (vezi exemplul de la variabile). In interiorul sirurilor de caractere se pot folosi si urmatoarele secvente escape:
Secventa escape Semnificatie \n trecerea la un rind nou LF (Line Feed) \r - || - \t tab orizontal (are efectul tiparii a 4 sau uneori a 8 spatii) \\ backslash \$ semnul $ \ ghilimele introduse intr-un sir
Exemplu : Daca dorim afisarea pe ecran a textului Compilatorul vede toate erorile. si vom incerca afisarea cu urmatoarea instructiune: echo Compilatorul vede toate erorile.; interpretorul de PHP va semnala eroare imediat dupa primele ghilimele inchise (inainte de vede). Solutia corecta este folosirea secventei escape \ dupa cum urmeaza: echo Compilatorul \vede\ toate erorile.; in acest fel evitindu-se aparitia de erori nedorite. P.A.I. Prezentare generala a limbajului PHP 5. Variabile
In PHP, variabilele sunt definite prin plasarea semnului $ in fata unui nume de identificator ce trebuie sa respecte urmatoarele conditii: sa inceapa cu o litera sau underscore (_) ce este urmata de o insiruire de litere sau cifre sa nu contina caracterele speciale: @, #, %, ^, &, etc.
5.1 Concatenarea sirurilor
In PHP concatenarea sirurilor se realizeaza cu ajutorul operatorului . (punct). Exemple: 1. Hello .World! va genera sirul Hello World 2. $s1=AB; $s2=CD; $s3=$s1.$s2 va genera sirul $s3=ABCD
5.2 Variabile al caror nume este generat din PHP. Exemplu:
<?php $s = n; $$s = 123; /* se va genera variabila $n=123 */ echo $n; /* va afisa 123*/ ?>
5.3 Exemplu de expandare a unui sir de caractere atunci cind se folosesc
echo Sir expandat cu ghilimele :; echo $s_ghilimele; echo <br>; echo Sir expandat cu apostroafe ; echo $s_apostroafe; ?>
Explicati rezultatul programului.
Tema de laborator Sa se modifice scriptul PHP prezentat anterior cu ajutorul operatorului de concatenare a sirurilor de caractere. P.A.I. Lab.2 Constante. Operatori. Functii
Constante
Limbajul PHP defineste citeva constante predefinite si ofera un mecanism simplu de definire a altor constante utilizator. Constantele se aseamana oarecum cu variabilele PHP cu deosebirea ca se definesc cu ajutorul functiei define() si nu pot fi modificate in timp ce programul ruleaza.
Constantele PHP predefinite sunt: __FILE__ - numele scriptului PHP ce este interpretat __LINE__ - linia curenta din scriptul interpretat PHP_VERSION versiunea curenta de PHP PHP_OS sistemul de operare pe care ruleaza scriptul PHP
Exemple de folosire si definire a constantelor PHP:
Ex. 2 <?php echo Fisierul curent: ; echo __FILE__; echo <br>; echo linia in executie :; echo __LINE__; ?>
2. Operatori
2.1 Operatori aritmetici
Exemplu Rezultat $a + $b suma variabilelor $a si $b $a - $b diferenta variabilelor $a si $b $a * $b inmultirea dintre variabilele $a si $b $a / $b raportul variabilelor $a si $b $a % $b $a modulo $b (restul impartirii)
I P.A.I. Lab.2 Constante. Operatori. Functii
2.2 Operatori de atribuire
Operator Exemplu Explicatii = $a = 5 $a va lua valorea 5 += $a+=3 $a va fi incrementat cu 3 -= $a-=2 $a va fi decrementat cu 2
2.3 Operatori de comparatie
Exemplu Nume Rezultat $a == $b egalitate adevarat, daca $a este egal cu $b $a === $b identic adevarat, daca Sa==$b si sunt acelasi tip de date $a != $b sunt diferite adevarat, daca $a diferit de $b $a !== $b NOT identic sunt diferite sau nu sunt de acelasi tip $a < $b mai mic $a > $b mai mare $a <= $b mai mic sau egal $a >= $b mai mare sau egal
2.4 Operatori de incrementare/decrementare
Exemplu Nume Explicatii ++$a incrementare prefixata intai se incrementeaza, dupa aceea se evalueaza --$a decrementare prefixata intai se decrementeaza, dupa aceea se evalueaza $a++ incrementare postfixata evaluare urmata de incrementare $a-- decrementare postfixata evaluare urmata de decrementare
Exemplu Nume Rezultat $a and $b SI adevarat, daca si $a si $b sunt adevarate $a or $b SAU adevarat, daca una din variabile este adevarata !$a NOT adevarat, daca $a este fals $a && $b SI idem $a and $b $a || $b SAU idem $a or $b
echo "a este ".$a." , b este ".$b."<br>"; echo "Minimul este : ".Minim($a,$b)."<br>"; echo "Maximul este : ".Maxim($a,$b)."<br>";
?>
Tema de laborator :
Sa se scrie scriptul PHP care afiseaza numele fisierului curent executat, numarul fiecarei linii de program, versiunea de PHP si sistemul de operare unde este executat, cu functii. P.A.I. Lab. 3,4 Constante. Operatori. Functii
1.Instruciuni repetitive
n limbajul PHP avem urmtoarele instruciuni repetitive: while - se va executa corpul acesteia ct timp condiia este adevrat do ... while - se va executa cel puin odat, i se va repeta atta timp ct condiia este adevrat for - se va executa de un numr de ori specificat foreach - se va executa cte odat pentru fiecare element din tablou
1.1 Instruciunea while Sintax: while (condition) code to be executed;
Exemplu: <html> <body> <?php $i=1; while($i<=5) { echo "The number is " . $i . "<br />"; $i++; } ?> </body> </html>
1.2 Instruciunea do ... while Sintax: do { code to be executed; } while (condition);
Exemplu: <html> <body> <?php $i=0; do { $i++; echo "The number is " . $i . "<br />"; } while ($i<5); ?> </body> </html>
P.A.I. Lab. 3,4 Constante. Operatori. Functii
1.3 Instruciunea for Sintax: for (initialization; condition; increment) { code to be executed; }
PHP ofer o gam complet de funcii pentru citirea / scrierea datelor n fiiere de tip text sau fiiere binare. n cele ce urmeaz vom prezenta funciile pentru lucrul cu fiierele de tip text.
2.1 Funcia fopen() - se folosete pentru deschiderea unui fiier pentru citire, scriere sau append - funcia are doi parametrii: numele fiierului i modul de deschidere P.A.I. Lab. 3,4 Constante. Operatori. Functii
Moduri de deschidere: File Modes Description r Citire r+ Citire/Scriere w Scriere, dac fiierul exist deja, va fi recreat, dac nu, va fi creat. w+ Scriere/Citire, dac fiierul exist deja, va fi recreat, dac nu, va fi creat. a Citire/Adugare. Dac fiierul nu exist, va fi creat. a+ Read/Append. File pointer at the end of the file. If the file doesn't exist, fopen() will try to create the file x Va crea un fiier doar pentru scriere. Dac acesta exist, funcia va ntoarce eroare. Dac nu exist, va fi creat. x+ Va crea un fiier doar pentru scriere/citire. Dac acesta exist, funcia va ntoarce eroare. Dac nu exist, va fi creat.
Exemplu: <html> <body> <?php $f=fopen("welcome.txt","r") if (!$f) exit("Unable to open file!"); ?> </body> </html>
2.2 Funcia fclose() - se va folosi pentru a nchide un fiier, dup ce s-au terminat de efectuat toate operaiile (citire, scriere sau append) - fiierul trebuie s fie n prealabil deschis utiliznd funcia fopen() - funcia fclose() are un singur parametru: fiierului
Exemplu: <html> <body> <?php $file_name = "welcome.txt"; $f=fopen($file_name,"r"); if (!$f) exit("Unable to open file!");
echo "fisierul a fost deschis cu succes"; fclose($f); echo "fisierul a fost inchis "; ?> </body> </html>
P.A.I. Lab. 3,4 Constante. Operatori. Functii
2.2 Funcia feof() - este folosit pentru a testa sfritul de fiier - ntoarce valoarea de adevr TRUE dac pointerul de fiier a ajuns la sfritul acestuia - primete un singur parametru: fiierul
2.3 Funcii de citire dintr-un fiier
Funciile de citire dintr-un fiier sunt: fgetc - citete un caracter fgets - citete un ir de caractere fscanf - citete date formatate
Exemplu pentru 2.2 i 2.3: <?php if (!($f=fopen("welcome.txt","r"))) exit("Unable to open file."); while (!feof($f)) { $x=fgetc($f); echo $x; } fclose($f); ?>
Modificai programul n aa fel nct s citeasc fiierul linie cu linie.
2.4 Funii de scriere n fiier: Funciile de citire dintr-un fiier sunt: fputc - scrie un caracter fputs - scrie un ir de caractere fprintf - scrie date formatate
Un exemplu de scriere a datelor n fiier va fi prezentat la seciunea formulare.
3. Formulare HTML
Formularele HTML ncep i se termin cu tag-ul form: <form> . . . </form>
P.A.I. Lab. 3,4 Constante. Operatori. Functii
3.1 Cmpuri de tip text
Exemplu: <form> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> </form>
<p> This example cannot be edited because our editor uses a textarea for input, and your browser does not allow a textarea inside a textarea. </p>
<textarea rows="10" cols="30"> The cat was playing in the garden. </textarea>
</body> </html>
4. Formulare i PHP
Prezentm n continuare cteva exemple de formulare ce utilizeaz drept int script-uri PHP:
Exemplul 1: Cod HTML: <html> <body> <form action="welcome.php" method="POST"> Enter your name: <input type="text" name="name" /> Enter your age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>
Cod PHP: <html> <body> Welcome <?php echo $_POST["name"]; ?>.<br /> You are <?php echo $_POST["age"]; ?> years old! </body> </html>
Observaii: dac metoda de transmitere folosit este GET, vom folosi $_GET[""] dac nu dorim s depindem de metoda de transmitere a datelor folosit, vom folosi numele variabilelor aa cum sunt descrise n fiierul HTML (Ex: $name, $age) P.A.I. Lab. 3,4 Constante. Operatori. Functii
Teme de laborator: 1. Creai un formular ce va cere numele, prenumele, vrsta i preferinele culinare ale vizitatorului paginii. 2. Datele vor fi transmise spre un script PHP care le va aduga ntr-un fiier text. 3. Completai primul formular cu o opiune ce va afia datele din fiier (va trebui creat un nou formular n cadrul aceluiai fiier HTML, precum i un nou script PHP). 4. Creai un formular (i scriptul PHP adiacent) ce va afia persoanele care au vizitat pagina cel puin de dou ori.
MySQL
Introducere MySQL este un sistem de gestiune a bazelor de date relaional, produs de compania suedez MySQL AB i distribuit sub Licena Public General GNU. Este cel mai popular SGBD open-source la ora actual, fiind o component cheie a stivei LAMP (Linux, Apache, MySQL, PHP). Dei este folosit foarte des mpreun cu limbajul de programare PHP, cu MySQL se pot construi aplicaii n orice limbaj major. Exist multe scheme API disponibile pentru MySQL ce permit scrierea aplicaiilor n numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Borland Delphi, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfa de tip ODBC denumit MyODBC permite altor limbaje de programare ce folosesc aceast interfa, s interacioneze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. n sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul crora respectivele limbaje s poat folosi acest SGBD mult mai uor dect prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale. Licena GNU GPL nu permite ncorporarea MySQL n softuri comerciale; cei care doresc s fac acest lucru pot achiziiona, contra cost, o licen comercial de la compania productoare, MySQL AB. MySQL este component integrat a platformelor LAMP sau WAMP (Linux/Windows- Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicaie web este strns legat de cea a PHP-ului care este adesea combinat cu MySQL i denumit Duo-ul Dinamic. n multe cri de specialitate este precizat faptul ca MySQL este mult mai uor de invat i folosit dect multe din aplicaiile de gestiune a bazelor de date, ca exemplu comanda de ieire fiind una simpl i evident: exit sau quit. Pentru a administra bazele de date MySQL se poate folosi modul linie de comand sau, prin descrcare de pe internet, o interfa grafic: MySQL Administrator i MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicaia gratuit, scris n PHP, phpMyAdmin. MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD, GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista.
Tipuri de date in MySQL
TIP NUME INTERVAL VALORI ATRIBUTE Numeric {1 byte} TINYINT[(M)] -128 ,127 [0,255 pentru UNSIGNED] AUTO_INCREMENT UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE P.A.I.I - MYSQL - introducere Numeric {2 bytes} SMALLINT[(M)] -32,768, 32,767 [0, 65,535] AUTO_INCREMENT, UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE Numeric {3 bytes} MEDIUMINT[(M)] -8,388,608 to 8,388,607 [0 ,16,777,215] AUTO_INCREMENT, UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE Numeric {4 bytes} INT[(M)] -/+2.147E+9 [0, 4.294E+9] AUTO_INCREMENT, UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE Numeric {8 bytes} BIGINT[(M)] -/+9.223E+18 [0,18.45E+18] AUTO_INCREMENT, UNSIGNED, ZEROFILL, SERIAL DEFAULT VALUE Numeric {4 or 8} FLOAT(p) p=0-24 --> "FLOAT" p=25-53 --> "DOUBLE" UNSIGNED, ZEROFILL Numeric {4 bytes} FLOAT[(M,D)] Min=+/-1.175E-38 Max=+/-3.403E+38 UNSIGNED, ZEROFILL Numeric {8 bytes} DOUBLE[(M,D)] Min=+/-2.225E-308 Max=+/-1.798E+308 UNSIGNED, ZEROFILL Numeric {M+2} DECIMAL[(M,[D])] Stored as string Max Range = DOUBLE range Fixed point vs. DOUBLE float UNSIGNED, ZEROFILL Bit {8 bytes} BIT[(M)] Binary. Display by [add zero |converting with BIN()]. M=1-64 Prior to 5.03 TINYINT(1) Synonym String {M char's} CHAR[(M)] M=0-255 Characters, FIXED. Right padded with spaces. BINARY, CHARACTER SET String {M char's 1 } VARCHAR(M) M=0-65,535 Characters M=0-255 <v5.0.3 BINARY, CHARACTER SET String {#char's 1 } TINYTEXT 2 0-255 Characters BINARY, CHARACTER SET String {#char's 1 } TEXT 2 0-65,535 Char's BINARY, CHARACTER SET String {#char's 1 } MEDIUMTEXT 2 0-16,777,215 Char's BINARY, CHARACTER SET String {#char's 1 } LONGTEXT 2 0-4,294,967,295 Char's BINARY, CHARACTER SET String {M bytes} BINARY[(M)] M=0-255 bytes, FIXED. Global Only (case sensitive) String {M bytes} VARBINARY(M) 0-65,535 bytes M=0-255 <v5.0.3 Global Only (case sensitive) String {#bytes 1 } TINYBLOB 0-255 bytes Global Only (case sensitive) String {#bytes 1 } BLOB 0-65,535 bytes Global Only (case sensitive) String {#bytes 1 } MEDIUMBLOB 0-16,777,215 bytes Global Only (case sensitive) String {#bytes 1 } LONGBLOB 0-4,294,967,295 bytes Global Only (case sensitive) String {1-2 bytes} ENUM 2
("A1","A2",...) Column is exactly 1 of 1- 65,535 values CHARACTER SET String {1-8 bytes} SET 2
("A1","A2",...) Column is 0 or more values in list of 1-64 members CHARACTER SET Date & Time {3 bytes} DATE "1000-01-01" - "9999-12- 31" Global Only (YYYY-MM-DD) Date & Time {8 bytes} DATETIME "1000-01-01 00:00:00" - "9999-12-31 23:59:59" Global Only (YYYY-MM-DD hh:mm:ss) Date & Time {3 bytes} TIME "-838:59:59" - "838:59:59" Global Only (hh:mm:ss) Date & Time {4 bytes} TIMESTAMP 19700101000000 - 2037+ Global Only (YYYYMMDDhhmmss) Date & Time {1 bytes} YEAR 1900 - 2155 Global Only (YYYY)
Comenzi MySQL comenzile MySQL pot fi scrise pe unul sau mai multe rnduri i se termina cu ;.
1. CREARE DATABASE pentru crearea unei noi baze de date CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification ...]
create_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name
Ex.: CREATE DATABASE mydb;
2. DROP DATABASE pentru tergerea unei baze de date DROP {DATABASE | SCHEMA} [IF EXISTS] db_name Ex.: DROP DATABASE mydb;
3. SHOW DATABASES afieaz toate bazele de date de pe server.
4. USE schimbarea bazei de date USE db_name Ex.: USE mydb;
5. SHOW TABLES afieaz toate tabelele din baza de date curent
6. CREATE TABLE pentru crearea unei noi tabele CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }
Ex.: CREATE TABLE example1 ( id INT, data VARCHAR(100) );
CREATE TABLE STUDENTI ( nrmat INT, nume VARCHAR(200), datanasterii DATE, specializarea VARCHAR(100), anstudiu INT, grupa VARCHAR(10) );
7. DROP TABLE pentru tergerea unei tabele DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE] Ex.: DROP TABLE STUDENTI;
8. ALTER TABLE modificarea structurii unei tabele dintr-o baz de date MySQL ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification] ...
alter_specification: table_option ... | ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name ] | ADD [COLUMN] (col_name column_definition,...) | ADD {INDEX|KEY} [index_name] [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) | ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...) | ADD [FULLTEXT|SPATIAL] [INDEX|KEY] [index_name] (index_col_name,...) | ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} | CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name] | MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name] | DROP [COLUMN] col_name | DROP PRIMARY KEY | DROP {INDEX|KEY} index_name | DROP FOREIGN KEY fk_symbol | DISABLE KEYS | ENABLE KEYS | RENAME [TO] new_tbl_name | ORDER BY col_name [, col_name] ... | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name] | [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name] | DISCARD TABLESPACE | IMPORT TABLESPACE
index_col_name: col_name [(length)] [ASC | DESC]
index_type: USING {BTREE | HASH | RTREE} Ex.: ALTER TABLE STUDENTI ADD COLUMN media_generala float;
9. DESCRIBE pentru afiarea detaliata a informaiilor referitoare la cmpurile unei tabele MySQL {DESCRIBE | DESC} tbl_name [col_name | wild] Ex.: DESCRIBE STUDENTI; +---------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+-------+ | nrmat | int(11) | YES | | NULL | | | nume | varchar(200) | YES | | NULL | | | datanasterii | date | YES | | NULL | | | specializarea | varchar(100) | YES | | NULL | | | anstudiu | int(11) | YES | | NULL | | | grupa | varchar(10) | YES | | NULL | | +---------------+--------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
10. SHOW COLUMNS pentru afiarea detaliata a informaiilor referitoare la cmpurile unei tabele MySQL SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE 'pattern' | WHERE expr] Ex.: SHOW COLUMNS FROM STUDENTI;
11. INSERT INTO pentru adugarea unei noi nregistrri ntr-o tabel MySQL INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
Ex.: INSERT INTO STUDENTI VALUES(1,'Cerlinca Tudor','1977/9/7','Calculatoare',1,'1121a'); INSERT INTO STUDENTI VALUES(2,'Petriuc Mihai','1977/1/2','Calculatoare',1,'1121a'); INSERT INTO STUDENTI VALUES(3,'Petrea Andrei','1978/1/2','Calculatoare',1,'1121a'); INSERT INTO STUDENTI VALUES(4,'Ionescu Ion','1977/3/1','Calculatoare',1,'1121b');
12. UPDATE pentru actualizarea coninutului unei tabele MySQL UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] Ex.:UPDATE STUDENTI SET nume='Cerlinca Tudor Ioan' where nrmat=1;
13. DELETE pentru tergerea unor nregistrri dintr-o tabel MySQL DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count] Ex.: DELETE FROM STUDENTI where nrmat=1;
14. SELECT pentru afiarea informaiilor coninute n tabelele unei baze de date SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr, ... [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name' | INTO @var_name [, @var_name]] [FOR UPDATE | LOCK IN SHARE MODE]] Ex.: SELECT * FROM STUDENTI; +-------+----------------+--------------+---------------+----------+-------+ | nrmat | nume | datanasterii | specializarea | anstudiu | grupa | +-------+----------------+--------------+---------------+----------+-------+ | 2 | Petriuc Mihai | 1977-01-02 | Calculatoare | 1 | 1121a | | 1 | Cerlinca Tudor | 1977-09-07 | Calculatoare | 1 | 1121a | | 3 | Petrea Andrei | 1978-01-02 | Calculatoare | 1 | 1121a | | 4 | Ionescu Ion | 1977-03-01 | Calculatoare | 1 | 1121b | +-------+----------------+--------------+---------------+----------+-------+ 4 rows in set (0.00 sec)
SELECT * FROM STUDENTI ORDER BY datanasterii; +-------+----------------+--------------+---------------+----------+-------+ | nrmat | nume | datanasterii | specializarea | anstudiu | grupa | +-------+----------------+--------------+---------------+----------+-------+ | 2 | Petriuc Mihai | 1977-01-02 | Calculatoare | 1 | 1121a | | 4 | Ionescu Ion | 1977-03-01 | Calculatoare | 1 | 1121b | | 1 | Cerlinca Tudor | 1977-09-07 | Calculatoare | 1 | 1121a | | 3 | Petrea Andrei | 1978-01-02 | Calculatoare | 1 | 1121a | +-------+----------------+--------------+---------------+----------+-------+ 4 rows in set (0.00 sec)
SELECT * FROM STUDENTI WHERE grupa=1121a +-------+----------------+--------------+---------------+----------+-------+ | nrmat | nume | datanasterii | specializarea | anstudiu | grupa | +-------+----------------+--------------+---------------+----------+-------+ | 2 | Petriuc Mihai | 1977-01-02 | Calculatoare | 1 | 1121a | | 1 | Cerlinca Tudor | 1977-09-07 | Calculatoare | 1 | 1121a | | 3 | Petrea Andrei | 1978-01-02 | Calculatoare | 1 | 1121a | +-------+----------------+--------------+---------------+----------+-------+ 3 rows in set (0.00 sec)
SELECT * FROM STUDENTI WHERE nume LIKE Pe%; +-------+---------------+--------------+---------------+----------+-------+ | nrmat | nume | datanasterii | specializarea | anstudiu | grupa | +-------+---------------+--------------+---------------+----------+-------+ | 2 | Petriuc Mihai | 1977-01-02 | Calculatoare | 1 | 1121a | | 3 | Petrea Andrei | 1978-01-02 | Calculatoare | 1 | 1121a | +-------+---------------+--------------+---------------+----------+-------+ 2 rows in set (0.00 sec)
SELECT COUNT(*) as 'NrStudentiGrupa', grupa from STUDENTI GROUP BY grupa ORDER BY NrStudentiGrupa; +-----------------+-------+ | NrStudentiGrupa | grupa | +-----------------+-------+ | 1 | 1121b | | 3 | 1121a | +-----------------+-------+ 2 rows in set (0.00 sec)
SELECT COUNT(*) as 'NrStudentiGrupa', grupa from STUDENTI GROUP BY grupa HAVING NrStudentiGrupa>1 ORDER BY NrStudentiGrupa; +-----------------+-------+ | NrStudentiGrupa | grupa | +-----------------+-------+ | 1 | 1121b | | 3 | 1121a | +-----------------+-------+ 2 rows in set (0.00 sec)
Tema:
1. Veti crea urmtoarele tabele: autori si carti autori: idautor numar intreg nume sir de caractere carti: idcarte numar intreg titlul sir de caractere idautor numar intreg pret numar intreg
2. Veti introduce date in cele doua tabele Tabela AUTORI 1 Liviu Rebreanu 2 Marin Preda 3 Ion Creanga Tabela CARTI 1 Padurea Spanzuratilor 1 23 2 Ion 1 40 3 Morometii 2 15 4 Amintiri din copilarie 3 100 5 Capra cu trei iezi 3 75
3.Veti realiza urmatoarele interogari: a) listarea continutului tabelei autori b) listarea continutului tabelei carti c) afisarea autorilor al caror nume incepe cu litera L d) afisarea cartilor cu pretul mai mare decat o valoare de referinta (stablita de catre utilizator) e) afisarea cartilor scrise de un anumit autor f) afisarea cartilor sub urmatoarea forma: Titlu Autor Pret Padurea Spanzuratilor Liviu Rebreanu 23 Ion Liviu Rebreanu 40 -------------------------------------------------------------------------- MySQL
Chei primar. Chei strine
Definirea cheilor primare.
Ex.: create table stud ( id int , nume varchar(100), grupa varchar(20), PRIMARY KEY (id) ) ENGINE = INNODB;
insert into stud values(1, 'Cerlinca Tudor', '1121b'); insert into stud values(2, 'Cerlinca Marius', '1121a'); Urmtoarea comanda SQL va genera mesajul de eroare: Duplicate entry '1' for key 1 insert into stud values(1, 'Cerlinca Gheorghe', '1121c');
Definirea cheilor strine Ex.:
create table note( id_student int, nota int, INDEX ind(id_student), FOREIGN KEY(id_student) REFERENCES stud (id) ) ENGINE = INNODB;
insert into note values(1,10); insert into note values(1,8); Urmtoarele comenzi SQL vor genera mesaj de eroare: insert into note values(3,8); delete from stud where id=1;
Tema: 1. Veti crea urmtoarele tabele: studenti, discipline i note.
studenti: nrmat numar intreg nume - sir de caractere anstudiu - sir de caractere grupa -sir de caractere
P.A.I.I - MYSQL - chei discipline: id_disciplina numar intreg denumire - sir de caractere note: nrmat - numar intreg id_disciplina - numar intreg nota - numar intreg
2. Veti introduce date in cele dou tabele.
3. Veti scrie comenzi SQL pentru: a) listarea continutului tabelei studenti. b) listarea continutului tabelei discipline. c) afisarea grupelor si a numarului de studenti din fiecare grupa. d) afisarea anilor de studiu si a numarului de studenti din fiecare an de studiu. e) Afisarea situatiei scolare pentru un anumit student. Nume Disciplina Nota Ion Ionescu PTII 5 Ion Ionescu APA 10 f) Afisarea situatiei scolare pentru toti studentii dintr-o anumita grupa. Se va utiliza acelasi format de afisare ca si la punctul e. g) Afisarea situatiei scolare pentru toti studentii dintr-un anumit an de studiu. Se va utiliza acelasi format de afisare ca si la punctul e. h) Afisarea situatiei scolare de la o anumita disciplina. Disciplina Nota PTII 5 APA 10
MySQL Tema: 1. Veti crea urmatoarele tabele: produse, stoc si operatii. produse: idprodus numar intreg (cheie primara) nume - sir de caractere furnizor sir de caractere pret numar intreg
stoc: idprodus numar intreg (cheie straina) cantitate - sir de caractere
3. Veti scrie comenzi SQL pentru: a) listarea continutului tabelei produse. b) listarea continutului tabelei stoc. c) afisarea stocului Nume_Produs Pret Cantitate Pret_Total Paine 30 20 600 Mere 45 14 630 d) afisarea operatiilor pentru un anumit produs Nume_Produs Operatie Cantitate Paine 1 20 Paine 2 14 Paine 2 2 Paine 1 15 Paine 1 6 e) afisarea produselor cu pretul mai mare decat o valoare stabilita de utilizator f) afisarea produselor primite de la un anumit furnizor
P.A.I.I - MYSQL - exercitii P.A.I.I PHP si MYSQL PHP i MySQL 1. Conectarea la o baz de date MySQL Sintaxa: resource mysql_connect ([ string ser!er [" string username [" string #ass$ord [" bool ne$_lin% [" int client_&lags ''''' ) Ex.: <? $link=mysql_connect('localhost', 'tudo_c'! o die ('"u ma #ot conecta la se$e ul de %a&e de date' . mysql_eo(!!' ?( ). (nc)iderea unei cone*iuni Sintaxa: bool mysql_close ([ resource lin%_identi&ier ' + Ex.: <? mysql_close($link!' ?( *. Selectarea bazei de date Sintaxa: bool mysql_select_db ( string database_name [" resource lin%_identi&ier ' + Ex.: <? $d%_test = mysql_select_d%('test', $link!' i+ (,$d%_test! die ('"u ma #ot conecta la %a&a de date test : ' . mysql_eo(!!' ?( -. Crearea unei cereri SQL i rularea ei Sintaxa: resource mysql_query ( string query [" resource lin%_identi&ier ' + Ex.: <? $quey=.SE/E01 2 3456 studenti.' $esult = mysql_quey($quey, $link! o die('0eeea S7/ a +ost incoecta: ' . mysql_eo(!!' ?( ,bser!a-ii. a. Pentru S/L/C0" SH,1" 2/SC345/" /6PL748 &unc-ia mysql_query() 9ntoarce o resurs (c:nd interogarea a &ost e*ecutat cu succes+ sau !aloarea ;7LS/ 9n cazul a#ari-iei unei erori< Pentru a ob-ine numrul de 9nregistrri returnate de o interogare de ti#ul S/L/C0" se !a utiliza &unc-ia mysql_num_rows()< Pentru accesarea rezultatului returnat de ctre &unc-ia P.A.I.I PHP si MYSQL mysql_query() se !a utiliza &unc-ia mysql_fetch_array()< b. Pentru 48S/30" =P270/" 2/L/0/" 23,P etc" &unc-ia mysql_query() 9ntoarce 03=/ dac o#era-ia s>a realizat cu succes i ;7LS/ 9n caz contrar< Pentru a ob-ine numrul de 9nregistrri a&ectate" se !a utiliza &unc-ia mysql_affected_rows()< ?< =n e*em#lu com#let< 7&iarea datelor con-inute 9ntr>o tabel a unei baze de date MySQL< <? 88conectaea la se$eul local 6yS7/ $link=mysql_connect('localhost', 'tudo_c'! o die ('"u ma #ot conecta la se$eul de %a&e de date' . mysql_eo(!!' 88schim%aea %a&ei de date $d%_test = mysql_select_d%('test', $link!' i+ (,$d%_test! die ('"u ma #ot conecta la %a&a de date test : ' . mysql_eo(!!' 88ceaea si executia unei inteo9ai S7/ $quey=.SE/E01 2 3456 studenti.' $esult = mysql_quey($quey, $link! o die('0eeea S7/ a +ost incoecta: ' . mysql_eo(!!' 88a+isaea numaului de ine9istai din e&ultat $num_ine9=mysql_num_o:s($esult!' echo ."umaul de ine9istai din ta%ela studenti = ..$num_ine9..<%(.' 88o%tineea numaului de coloane $num_coloane=mysql_num_+ields($esult!' 88a+isaea datelo su% +oma ta%elaa echo .<ta%le(;n.' +o($i=<'$i<$num_ine9'$i==! > $linie=mysql_+etch_aay($esult!' echo .<t(;n.'88o noua linie +o($?=<'$?<$num_coloane'$?==! > echo .<td(.'88o noua coloana echo $linie@$?A' echo .<8td(;n.' B echo .<8t(;n.' B echo .<8ta%le(;n.' mysql_+ee_esult($esult!' 88inchideea conexiunii mysql_close($link!' P.A.I.I PHP si MYSQL ?( @< Po#ularea unei liste de selec-ie cu !alori #reluate dintr>o tabel a unei baze de date MySQL <? 88conectaea la se$eul local 6yS7/ $link=mysql_connect('localhost', 'tudo_c'! o die ('"u ma #ot conecta la se$eul de %a&e de date' . mysql_eo(!!' 88schim%aea %a&ei de date $d%_test = mysql_select_d%('test', $link!' i+ (,$d%_test! die ('"u ma #ot conecta la %a&a de date test : ' . mysql_eo(!!' 88ceaea si executia unei inteo9ai S7/ $quey=.SE/E01 2 3456 studenti.' $esult = mysql_quey($quey, $link! o die('0eeea S7/ a +ost incoecta: ' . mysql_eo(!!' $num_ine9=mysql_num_o:s($esult!' echo .<SE/E01 name='stud'(;n.' +o($i=<'$i<$num_ine9'$i==! > $linie=mysql_+etch_aay($esult!' > echo .<5C1D5" $alue='$linie@<A'(..$linie@1A..<85C1D5"(;n.' B B echo .<8SE/E01(;n.' mysql_+ee_esult($esult!' 88inchideea conexiunii mysql_close($link!' ?( A< 0eme a< Crea-i urmtoarele tabele. studenti . nrmat" nume" anstudiu" gru#a disci#line . id_disci#lina" denumire_disci#lina note . nrmat" id_disci#lina" nota b< 4ntroduce-i date 9n &iecare din cele B tabele c< Scrie-i un scri#t PHP care !a a&ia situa-ia colar a tuturor studen-ilor< 7&iarea !a &i de &orma. nume anstudiu gru#a denumire_disci#lina nota Cerlinca 0udor C DD?Da 3; DE 4onescu 4on 4C DDFGa PS2 H P.A.I.I PHP si MYSQL 4onescu 4on C DDFGa 3; DE d< Scrie-i un scri#t PHP care !a a&ia situa-ia colar a unui anumit student< 7&iarea !a &i de &orma. denumire_disci#lina nota 3; DE 4P H ,bser!a-ie. Selectarea studentului se realizeaz #rin intermediul unei liste de selec-ie ce !a &i #o#ulat 9n mod dinamic" cu numele tuturor studen-ilor din tabela studenti< d< Scrie-i un scri#t PHP care !a a&ia situa-ia colar #entru o anumit disci#lin< 7&iarea !a &i de &orma. nume anstudiu gru#a nota Cerlinca 0udor C DD?Da DE 4onescu 4on 4C DDFGa H 4onescu 4on C DDFGa DE ,bser!a-ie. Selectarea disci#linei se realizeaz #rin intermediul unei liste de selec-ie ce !a &i #o#ulat 9n mod dinamic" cu denumirile tutoror disci#linelor din tabela disci#line< e< Scrie-i un scri#t PHP ce !a #ermite introducerea unui nou student 9n tabela studenti< Ce-i a!ea 9n !edere crearea urmtorului &ormular<
8ume. 7n studiu. Iru#a. &< Scrie-i un scri#t PHP ce !a #ermite introduceea de noi note< Ce-i a!ea 9n !edere crearea unui &ormular cu urmtoarele elemente H0ML. > o list de selec-ie #o#ulat 9n mod dinamic cu numele tuturor studen-ilor > o list de selec-ie #o#ulat 9n mod dinamic cu denumirile tuturor disci#linelor > un cam# de editare #entru introducerea notei > un buton J4nregistreazaK > un buton J3esetK Inregistreaza Reset