Documente Academic
Documente Profesional
Documente Cultură
Cursul nostru isi propune sa faca o initiere in lucrul cu php si MySql. Vom trece in aceste 12 lectii in mare prin toate capitolele unui curs de php, prezentand exemple cel mai mult si dandu-va referinte pentru
a putea studia mai mult pe cont propriu. La sfarsitul cursurilor speram sa puteti face singuri cate o mica aplicatie.
Iata un prim pas in lucrul cu PHP si MySQL: vestea buna este ca puteti lucra cu aceste programe, local, pe computerul dvs., sub Windows (98,2000, XP). Daca cineva lucreaza sub Unix/Linux exista variante
de php, mysql si server de web Apache pentru Unix/Linux. Ne vom referi in continuare la instalarea sub Windows.
Puteti fie sa instalati separat PHP de pe site-ul www.php.net, MySQL de pe site-ul www.mysql.com si un server de web Apache de pe www.apache.org.
Dar mai simplu este sa instalati asa numitul "PHPTriad", un grup de 3 programe care se vor instala pe computerul dvs.: PHP, MySQL si server-ul de web Apache.
In mod normal instalarea se va face pentru Apache in c:apache, pentru MySQL in c:apachemysql, iar php-ul se va instala in c:apachephp .
Dupa instalare puteti sa va puneti cate un shortcut in StartUp pentru C:apacheApache.exe (care porneste server-ul web de Apache) si pentru C:apachemysqlbinwinmysqladmin.exe .(care porneste MySQL-
ul).
Apoi in browser-ul vostru deschideti : http://localhost/ . Veti vedea paginile web pe care le veti aseza in C:apachehtdocs (acesta corespunde cu wwwroot de pe un server de web obsinuit).
In mod normal daca lucrati cu server-ul de Apache, va trebui sa opriti functionarea server-ului de IIS (daca il aveti instalat in Win 98, Win 2k sau Win XP).
Pentru a deschide o baza de date MySQL puteti folosi phpMyAdmin, o unealta care se instaleaza odata cu phpTriad (il gasiti dupa instalare la http://localhost/phpMyAdmin ), sau un program gen
MySQLFront (acesta a ajuns la versiunea 2.5 si momentan nu mai este dezvoltat, dar este o unealta foarte buna, cu care va puteti conecta la baza de date), pe care il gasiti la
adresa:http://mysqlfront.sstienemann.de/ sau http://mysqlfront.venturemedia.de/ (la rubrica News).
Dupa ce instalati MySQLFront, va conectati la baza de date locala cu : hostname: localhost; user: root; port:3306 (este portul implicit). Ulterior puteti seta o parola pentru user-ul root (administrator al bazei de
date) si veti putea da acces pentru alti useri la diferite baze de date. Dupa conectarea cu MySQL Front la baza de date, veti putea crea propriile baze de date.
Pentru editarea programelor PHP puteti folosi un editor simplu de text (gen Notepad sau Edit pe care le aveti instalate in Windows), sau un program mai avansat care sa va arate automat si sintaxa
limbajului, asa cum este HomeSite (de la www.allaire.com, din pacate acesta nu este gratuit) sau un editor gratuit cum ar fi PhpEdit (de la www.phpedit.net ), sau Maguma Studio (il gasiti
lahttp://www.maguma.com/en/lightdownload.html ).
Lectia 2 : DATE
Tipuri de date, Variabile, Constante, Operatori, Definire functii
In PHP lucrul cu variabile este extrem de simplu. PHP recunoaste usor tipurile variabilelor, iar sintaxa de definire a acestora are structura cea mai simpla posibila. Aceia care au mai lucrat cu C,
Java sau Perl, vor gasi lucrul cu PHP foarte usor.
Toate variabilele, in PHP incep su semnul dolar ($). Nu conteaza ce tip de variabila folositi. In codul programului toate arata la fel. PHP retine tipul informatiei stocate in variabila
Nu este necesara o declarare a variabilelor la inceputul programului. Tot ce trebuie sa faceti este doar sa le folositi si ele exista. Cum am spus, toate tipurile de variabile arata la fel. Urmatorul
exemplu arata cum se declara o variabila de tipul string, integer, si floating-point (tipurile de date vor fi discutate si explicate imediat):
1. 1. TIPURI DE DATE
1. - boolean
2. - integer
3. - floating-points
4. - string
5. - array
6. - null.
Boolean
Este cel mai simplu tip de date. O variabila de tipul boolean poate avea doar doua valori: TRUE sau FALSE (ADEVARAT sau FALS). De asemenea poate lua valori intregi care sa le repreainte pe
cele de mai sus. Astfel, valoarea 0 inseamna FALSE, iar orice alta valoare intreaga diferita de 0 inseamna TRUE.
$a = TRUE;
$a = 1;
$a = -1;
$a = FALSE;
$a = 0;
$a = ; //sirul vid
Integer
Variabilele de acest tip pot fi initializate cu numere intregi specificate in format zecimal (in baza 10), hexazecimal (in baza 16) sau octal (in baza 8).
Exemplu:
Dimensiunea unui numar de tip Integer este dependenta de platforma, dar valoarea maxima este de aproximativ 2.000.000.000 cu semn (-2.000.000.000 0 +2.000.000.000)
Floating-points
Reprezinta numerele cu virgula mobila, care pot fi specificate folosind oricare din sintaxele urmatoare:
$a = 1.23;
$a = 1.2e3;
$a = 7E-10;
Dimensiunea acestui tip de date este foarte mare, si este data de numere ce pot fi scrise pe 64 de biti (numarul maxim este in jurul valorii de 10^20 = 10 la puterea 20). Dezavantajul este ca are
o precizie scazuta la ultimele cifre.
String
Exista 3 moduri de definire a variabilelor de tip String, dar numai 2 sunt folosite in mod uzual.
- definirea cu ghilimele simple:
Pentru afisarea caracterului apostrof ( ) in cadrul textului, acesta trebuie precedat de caracterul backslash ( \ ). La fel se procedeaza pentru afisarea caracterului backslash ( \ ).
Exemplu:
Diferenta dintre cele doua modalitati este ca in cazul al doilea pot fi inserate anumite caractere speciale, iar daca in cadrul textului apare o variabila, aceasta va fi inlocuita cu valoarea continuta in
ea.
Exemplu:
$x = 40;
\t tab
\\ backslash
\$ semnul dolar
\ ghilimele
Array
In limba romana acest tip de date se numeste tipul Tablou si reprezinta o structura ordonata pe mai multe dimensiuni. Datele continute intr-un Array pot fi de tipuri diferite.
$nume_array[cheie] = valoare;
// Acesta
, 4 // cheia este 0
);
// este absolut echivalent cu
$a['culoare'] = 'rosu';
$a['gust'] = 'dulce';
$a['forma'] = 'rotund';
$a['nume'] = 'mar';
//sau
$b[] = 'a';
$b[] = 'b';
$b[] = 'c';
Null
$a = Null;
1. 2. VARIABILE
Cum am spus si la inceput, toate variabilele sunt precedate de semnul dolar ( $ ). Numele variabilelor este case-sensitive, adica tine cont de litere mari sau mici ($var este o variabila diferita de
$Var). Numele unei variabile trebuie sa inceapa cu o litera sau liniuta de subliniere ( _ ) urmata de oricate litere, cifre sau liniute de subliniere.
Exemplu:
$var = Bob;
$Var = John;
In PHP este permisa atribuirea unei valori prin referinta. Aceasta inseamna ca noua variabila va fi o referinta spre variabila originala. Modificarea variabilei noi va duce la modificarea celei
originale, si invers. Aceasta atribuire are loc mult mai rapid, iar efectul se observa mai ales in structuri care se repeta. Pentru o astfel de atribuire se foloseste semnul ( & ) in fata valorii atribuite.
Exemplu:
$a = banana;
Variabilele declarate in cadrul unui program nu sunt valabile si in interiorul functiilor definite de utilizator. Variabilele globale sunt valabila in tot programul, iar variabilele locale sunt valabile doar in
cadrul structurii definite de utilizator.
Exemplu:
$a = 1; /* variabila globala */
Function Test () {
Test ();
Aceasta functie nu va afisa nimic, pentru ca variabila locala $a nu are atribuita nici o valoare. Pentru a folosi o variabila globala in interiorul functiei definite de utilizator, ea trebuie declarata in
cadrul functiei cu clauza global.
$a = 1; /* variabila globala */
Function Test () {
global $a;
Test ();
Variabilele pot fi luate si dintr-un formular HTML sau prin specificarea lor la apelarea paginii web, insa acestea vor fi tratate in alta lectie.
1. 3. CONSTANTE
Constanta este un identificator pentru o valoare simpla. Cum spune si numele, valoarea acesteia nu se modifica pe durata executiei scriptului. Numele constantei este case-sensitive, ca si in
cazul variabilelor. Prin conventie, constantele se scriu intotdeauna cu litere mari.
Exemplu:
Constantele pot contine numai date de tipul: boolean, integer, floating-point si string.
- constantele pot fi definite si accesate oriunde, fara a tine cont de regulile de la variabile
1. 4. OPERATORI
Operatori aritmetici
$a + $b adunare
$a - $b scadere
$a * $b inmultire
$a / $b impartire
$a % $b modulo
Operatori de atribuire
$b = "Hello ";
$a & $b Si
$a | $b Sau
$a ^ $b Sau-Exclusiv
~ $a Not (Negare)
Operatori de comparare
$a == $b egal cu
$a === $b identic cu
$a != $b deferit
$a <> $b diferit
$a !== $b neidentic
Operatori de incrementare/decrementare
++$a Pre-incrementare (aduna 1 la $a, apoi returneaza $a)
Operatori logici
$a and $b Si
$a or $b Sau
$a xor $b Sau-Exclusiv
! $a Not (Negare)
$a && $b Si
$a || $b Sau
3.Structuri de control
Structurile de control sunt scheletul ( inima) limbajelor de programare . PHP are incluse structurile de control necesare functionarii unui limbaj.
Daca aveti ceva cunostinte de Cobol, Pascal, C nu o sa fiti deloc surprinsi de ceea ce urmeaza.
Programele PHP iau decizii prin evaluare unor expresii conditionale si executa instructiuni bazate pe rezultatele acestor evaluarii.
Expr. Conditionale se mai numesc si expresii booleene , uneori , si au valorile asociate : true (1) adevarat
O modalitate mai utila de a forma o expresie conditionala consta in utilizarea unui operator relational pentru compararea a doua valori numerice.
Expresia conditionala de mai sus are valoarea true daca si numai daca valoarea variabilei $a are valoarea mai mica decat unitatea ; in toate celelalte cazuri are valoarea false.
Puteti folosi operatori relationali si pentru compararea sirurilor, numai ca aceste siruri vor fi convertite la o valoare numerica inainte de evaluarea expresiei. Vom vedea mai tarziu totusi ca exista
si functii de comparare a sirurilor.
1. a<b Adevrat dac valoarea lui a este mai mic dect valoarea lui b.
2. a>b Adevrat dac valoarea lui a este mai mare dect valoarea lui b.
3. a<=b Adevrat dac valoarea lui a este mai mic sau egal cu valoarea lui b.
4. a>=b Adevrat dac valoarea lui a este mai mare sau egal cu valoarea lui b.
7. a= =b Adevrat dac a i b sunt identice; cu alte cuvinte, dac a i b au acelai tip i dac valoarea lui a este egal cu valoarea lui b.
8. a!= =b Adevrat dac a i b nu sunt identice; cu alte cuvinte, dac a i b nu sunt de acelai tip sau dac valoarea lui a este diferit de valoarea lui b.
Pentru a sintetiza, iat regulile care definesc rezultatul unei expresii condiionale:
O expresie condiional care const dintr-o valoare nedefinit are valoarea false; n caz contrar, rezultatul depinde de tipul valorii, n spe numeric, ir, tablou sau obiect.
O expresie condiional care const dintr-o valoare numeric are valoarea false dac valoarea este zero; n caz contrar, are valoarea true.
O expresie condiional care const dintr-o valoare de tip ir are valoarea false dac irul este vid; n caz contrar, are valoarea true.
O expresie condiional care const dintr-o valoare de tip tablou sau obiect are valoarea false dac tabloul sau obiectul sunt vide; n caz contrar, are valoarea true.
O expresie condiional alctuit dintr-un operator relaional i din operanzii si ia valori n conformitate cu rezultatul comparaiei (numerice sau nu).
Putei forma expresii condiionale complexe prin unirea a dou expresii condiionale cu ajutorul unui operator logic.
De exemplu, expresia urmtoare este adevrat dac ambele expresii condiionale care o compun sunt adevrate:
Cu alte cuvinte, expresia este adevrat dac att variabila $a, ct i variabila $b au valori mai mici dect 1.
In general, expresiile sunt evaluate de la stnga la dreapta. Ca si in alte limbaje de programare totui, operatorii care apar n partea superioar a tabelului dispun de o preceden mai ridicat i
sunt efectuai anterior operatorilor cu o precedent mai redus, dac nu sunt folosite paranteze pentru a specifica o alt ordine a operaiilor.
Operator Descriere
Operator
! ~ ++ (int) (double) (string) (array) (object)
/%
+-.
= = != = = = ! = =
&
&&
?:
And
Xor
Or
,
Exemplu :
Consideram expresia $a + $b * $c
Precedena operatorului de multiplicare * este mai ridicat dect aceea a operatorului de adunare +, deci nmulirea este efectuat prima, chiar dac adunarea apare la stnga nmulirii. Cu alte
cuvinte, expresia este evaluat ca i cum ar fi fost scris astfel:
$a + ( $b * $c )
Dac dorii ca adunarea s fie efectuat prima, putei folosi paranteze n cadrul expresiei, astfel:
( $a + $b ) * $c
INSTRUCTIUNEA IF
SIMPLA
$a= 15 ;
- daca conditia este adevarata executa echo sau orice alta instructiune care ar putea fi ;
1. Plasai urmtorul script PHP ntr-un fiier denumit lectia3-1.php i ncrcai acest fiier n serverul dumneavoastr PHP:
<HTML>
<HEAD>
<TITLE>Lectia3-1</TITLE>
</HEAD>
<BODY>
<?php
?>
</BODY>
</HTML>
2. Plasai urmtoarea pagin HTML ntr-un fiier denumit lectia3-1.html i ncrcai acest fiier n serverul dumneavoastr, plasndu-l n acelai catalog ca i fiierul lectia3-1.php:
<HTML>
<HEAD>
<TITLE>Lectia 3-1</TITLE>
</HEAD>
<BODY>
<!--Fiier lectia3-1.html-->
</FORM>
</BODY>
</HTML>
COMPLEXA
$a= 15 ;
if ($a > 10 )
sau
sa zicem ca $a = 8 ;
if ($numar > 10 )
echo <BR>Acesta este un numar mare .;
else
if ($numar > 10 )
else
else
Exemplul afieaz mesajul Acesta este un numr foarte mare." dac valoarea variabilei $numar depete 100; n caz contrar, dac valoarea variabilei $numar este mai mare dect 10, se
afieaz mesajul Acesta este un numr mare.". Dac valoarea variabilei $numar este mai mic sau egal cu 10, exemplul afieaz mesajul Acesta este un numr mic.".
INSTRUCTIUNEA ELSEIF
else
Exemplul extinde funcionalitatea exemplului anterior, afind mesajul Acesta este un numr foarte mic." pentru valori ale variabilei $numar mai mici sau egale cu 1
Scrierea instruciunilor switch, break i default
Instruciunea if v permite s luai o decizie n dou sensuri. Pentru a putea lua o decizie n mai multe sensuri, putei folosi mai multe instruciuni if , else sau elseif. Cu toate acestea, cnd dorii
ca programul dumneavoastr s aleag dintr-un set de alternative care pot fi reprezentate prin valori ntregi, instruciunea switch este o opiune mai convenabil.
De exemplu, s presupunem c valoarea variabilei $numar este l, 2 sau 3, reprezentnd respectiv dimensiunile mic, medie i mare. Iat un mic program care afieaz dimensiunile asociate
valorilor variabilei $numar:
Switch($numar)
case(1):
echo mic;
break;
case(2):
echo mediu;
break;
case(3):
echo mare;
break;
default:
Instruciunea break determin ncheierea execuiei instruciunii switch, transfernd controlul urmtoarei instruciuni secveniale care succede instruciunii switch. n absena instruciunii break,
execuia trece la urmtoarea instruciune case sau default, fapt nedorit n majoritatea cazurilor.
INSTRUCTIUNEA FOR
Instructiunea for este o instructiune bucla sau o instructiune iterative; o instructiune care executa in mod repetat instructiunile associate.
Exemplu:
$suma = 0
$suma += $n;
Instruciunea for include trei expresii, care apar ntre paranteze; fiecare expresie este separat de vecina sa printr-un caracter punct i virgul. De asemenea, instruciunea for include o
instruciune sau un grup de instruciuni, cunoscute sub numele de corpul instruciunii for. n exemplul de mai sus, instruciunea $suma += $n este corpul instruciunii for.
Prima expresie este expresia de iniializare. Aceasta se execut atunci cnd PHP ajunge la instruciunea for. In exemplu, expresia de iniializare atribuie valoarea variabilei $n, variabil
denumit variabil de ciclare sau index.
A doua expresie este expresia de test. Aceasta este o expresie condiional care indic dac se execut sau nu corpul instruciunii, n general, face referire la variabila de ciclare. In cadrul
exemplului, expresia de test compar valoarea variabilei $n cu valoarea 3. Expresia de test este evaluat pentru prima dat imediat dup evaluarea expresiei de iniializare.
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. n cadrul exemplului, expresia pas incrementeaz
valoarea variabilei $n.
6. Se trece la etapa 2.
Instruciunea for este util pentru numrare i executarea n mod repetat a unor aciuni. Ca alt exemplu, iat o instruciune for care creeaz numeroase controale de tip buton. Numrul
controalelor create este determinat de valoarea variabilei $numar:
for($n=0;$n<=$numar; $n++)
$suma = 0;
$n++;
Instruciunea do while este oarecum asemntoare instruciunii while. Diferena este aceea c instruciunea do while i execut corpul nainte de a-i evalua expresia de test.
Astfel, corpul buclei unei instruciuni do while este ntotdeauna executat cel puin o dat; corpul unei instruciuni while este omis dac expresia de test are iniial valoarea false.
Exemplu :
$suma = 0;
$n = 1;
do
$suma += $n;
$n++;
1. Pentru a descrie un formular folositi eticheta FORM, care are urmatoarea forma elementara:
Atributul METHOD poate lua una din valorile GET sau POST.
Cand METHOD este GET (implicit), datele introduse in form sunt trimise ca o cerere HTTP GET cu ?form_data adaugat la sfarsitul URL-ului specificat de atributul ACTION . Astfel, datele trimise
prin metoda GET pot fi vizualizate de catre utilizator (dezavantaj).Folositea metodei GET permite ca trimiterea form-ului sa fie continuta in URL. Aceasta prezinta avantajul ca poate fi facuta
bookmark in browserele actuale, dar, datele nu pot contine caractere non-ASCII precum "" si "". De asemenea, cantitatea de date care poate fi procesata prin metoda GET este limitata de
lungimea maxima a URL-ului pe care o accepta serverul si browserul. Pentru siguranta, form-urile care ar putea contine caractere non-ASCIIsau mai mult de 100 de catactere trebuie sa
foloseasca METHOD=POST.Cu valoarea METHOD egala cu POST, datele introduse in form sunt trimise ca o cerere HTTP POST , iar datele sunt continute in interiorul cererii .Majoritatea
browserelor actuale nu pot face bookmark la cereri POST , dar, astfel POST nu limiteaza lungimea si tipul de caracter introdus ,precum la GET.
Ca incepator este mai bine sa folositi in mod consecvent metoda POST, deoarece alegerea intre metodele GET si POST este destul de complicata.Ca regula empirica, multi programatori
folosesc GET pentru formulare care executa o cautare sau o interogare, respectiv POST pentru formulare care actualizeaza o baza de date sau un fisier.Astfel, datele trimise prin metoda GET
pot fi vizualizate de catre utilizator.
Atributul ACTION specifica adresa URL a scriptului PHP care prelucreaza datele adunate prin intermediul formularului. Adresa URL poate fi o adresa completa,care include protocolul, numele
gazdei si calea de acces, respectiv o adresa partiala, care specifica o locatie relativa la locatia paginii curente.
Ex 1:
3. Daca trimitem scriptului PHP date confidentiale, folosim o caseta text de tip password
4. Pentru a expedia datele unui script PHP aveti nevoie de un buton de expediere :
Atributul VALUE specifica textul care trebuie sa apara pe suprafata butonului de expediere
Ex 2:
Crearea unui formular cu 3 controale: un control de tip text, unul de tip password si un buton
</FORM>
Ca o caseta cu text, o suprafata cu text permite unui utilizator sa introduca text.Cu toate acestea, o suprafata cu text poate permite utilizatorului sa introduca mai multe linii de text, in timp ce o
caseta de text permite introducerea unei singure linii de text.
O eticheta TEXTAREA trebuie combinata cu o eticheta /TEXTAREA.Orice text care apare intre etichete va fi prezentat drept continut initial al controlului de tip suprafata cu text.
6. Crearea campurilor ascunse
Uneori este utila crearea asa-numitelor campuri ascunse.Valorile campurilor ascunse sunt trimise la server alaturi de valorile altor controale; cu toate acestea, utilizatorul nu are posibilitatea de a
vizualiza sau manipula valorile campurilor
Pentru datele care pot avea numai una din doua valori, cum ar fi pornit sau oprit, caseta de validare este controlul ideal.De exemplu, caseta de validare este un control adecvat pentru a
permite utilizatorului sa opteze pentru livrarea rapida a unui colet.In cazul in care caseta de validare este validata, coletul va fi livrat mai rapid, in caz contrar, coletul se va deplasa cu mijloace
obisnuite.
Daca atributul CHECKED apare, caseta de validare va fi selectata in mod prestabilit; in caz contrar, caseta de validare nu este selectata initial.
Atributul VALUE specifica valoare care este trimisa serverului in cazul in care caseta de validare este selectata; daca atributul nu este specificat, se va trimite valoarea on (activat)
Ca si casetele de validare, butoanele radio pot avea numai una din doua valori. Cu toate acestea, butoanele radio sunt organizate in grupuri, iar la un moment dat poate fi activat un singur buton
radio din cadrul unui grup; toate celelalte trebuie sa fie dezactivate.Butoanele radio sunt utile pentru a permite unui utilizator sa aleaga dintr-o serie de alternative mutual exclusive.De exemplu,
puteti folosi un set de trei butoane radio pentru a permite utilizatorului sa specifice tipul de ambalaj pentru un cadou: fara ambalaj, cu ambalaj simplu sau sofisticat. Numai unul din cele trei
butoane radio poate fi activat; la un loc, setul de butoane radio ofera utilizatorului o tripla optiune.
Atributele unui buton radio au aceeasi semnificatie ca si acelea ale unei casete de validare
Toti membrii unui set de casete de validare prezinta acceasi valoare a atributului name
9. Crearea de selectii
O selectie este un meniu care defileaza, de unde utilizatorul poate alege una sau mai multe optiuni. De exemplu, intr-o selectie pot fi enumerate garniturile pentru pizza, astfel incat un utilizator
sa poata selecta orice combinatie de garnituri pe care o doreste.
Eticheta SELECT este folosita in combinatie cu eticheta /SELECT. Intre cele doua etichete este inclusa o serie de etichete OPTION.
Atributul MULTIPLE arata ca utilizatorul poate alege mai multe optiuni mentinand apasata tasta CTRL si executand click pe aceasta.In absenta atributului MULTIPLE, utilizatorul poate selecta o
singura optiune.Daca specificati atributul MULTIPLE, trebuie sa specificati si un atribut NAME, care atribuie un nume de tablou ca nume al controlului. De exemplu, un control de tip selectie care
permite utilizatorului sa aleaga mai multe garnituri pentru desert trebuie denumit folosind sintaxa garnitura[], nu garnitura.
Atributul SIZE specifica numarul de optiuni vizibile.Prin utilizarea unui buton de derulare in jos sau a unei bare de defilare, utilizatorul poate manipula selectia pentru a obtine accesul la restul
optiunilor si a alege dintre acestea.
Asa cum s-a aratat, o selectie este asociata cu una sau mai multe optiuni.Pentru a crea o optiune care urmeaza a fi utilizate in cadrul unei selectii, folositi urmatoare sintaxa:
Eticheta OPTION este combinata cu eticheta /OPTION. Textul dintre aceste etichete este cunoscut sub numele de continut al optiunii. Continutul optiunii apare in controlul SELECT.
Multi programatori HTML omit eticheta /OPTION, caz in care textul optiunii se extinde pana la urmatoarea eticheta OPTION sau /SELECT/.Totusi s-ar putea ca acest mod de utilizare sa nu fie
compatibil cu versiunile ulterioate ale standardului HTML.
Acest buton este folosit pentru ca utilizatorul sa poata sterge toate informatiile incluse intr-un formular.
Unicul atribut obligatoriu este TYPE. Atributul optional VALUE specifica textul care va aparea pe suprafata butonului de reinitializare; daca atributul este omis, pe buton va scrie Reset.
Am vazut cum se poate crea un formular in HTML.Acum o sa vedem cum putem prelua variabilele din php si sa le afisam intr-o fereastra noua.
O variabila preluata dintr-un formular poate fi preluata prin una din modalitatile :
1. $_POST[nume_variabila] sau cu $_GET[nume_variabila] (in functie de atributul method al formului post sau get)
3. Daca in PHP.ini (fisierul de configurare al php-ului) aveti setat register_globals=on puteti folosi $nume_variabila
test.html
</form>
test.php
<?php
?>
test1.html
</form>
test1.php
<?php
echo "Ati selectat culorile :<br>";
if($_POST["color_alb"]!="")
if($_POST["color_rosu"]!="")
if($_POST["color_verde"]!="")
?>
test2.html
</form>
test2.php
<?php
?>
test3.html
<form action="test3.php" method="POST">
Selecteaza culoare :
<option>alb</option>
<option>negru</option>
<option>rosu</option>
<option>verde</option>
<option>albastru</option>
<option>galben</option>
</select>
</form>
Obs: daca doriti selectie simpla puneti name=color iar daca doriti sa fie vizibila o singura optiune la un moment dat stergeti size=3
test3.php
<?php
if(is_array($_POST["color"])){
$c=count($_POST["color"]);
echo "$value<br>";
else{
?>
Nume Da text
Prenume Da text
Sex Da radio
Oras Da text
Judet/Sector Da select selectul va contine judetele din Romania+ cele 6 sectoare din Bucuresti
Email Da text
Telefon Nu text
Fax Nu text
Venit lunar Nu radio aici alegeti si voi niste intervale (100-200$, 201-300$, 301-500$, peste 500$ )
Modalitate de expediere a newsletter-ului Da checkbox (3 controale) modalitatile prin care sa primeasca newsletterului : email,posta si fax
Cerinte :
Obs 1 - Se testeaza variabilele obligatorii in PHP (NU folosind JavaScript ).Daca a aparut vreo eroare (adica daca au fost omise campuri obligatori) se trebuie sa ne intoarcem in formularul initial
pastrandu-se variabilele postate deja
ex : daca am introdus numele si am omis prenumele , cand ma va intoarce in pagina initiala numele trebuie sa fie deja completat.
Obs 2 - la email se testeaza corectitudinea adresei introduse : sa aiba @ si sa contina cel putin un caractet . (punct)
Spor la lucru !
5.Introducere in MySQL
Introducere in MySQL (exercitii din linia de comanda),
Probabil ca daca cineva v-ar ruga sa ii realizati un magazin online, probabil l-ati ruga sa va ofere date despre produsele sale iar voi ati incerca sa realizati un design bun si sa gasiti o forma de a-i prezenta
produsele. Cand e vorba de 5-10 produse nu ar fi o problema asa mare. Dar daca se pune problema unui numar de cateva 100 de produse? Ar trebui sa luati de pe servarul unde se afla site-ul (asta daca nu
aveti deja o copie a site-ului pe calculator), sa o modificati si sa-l puneti din nou pe servar. Probabil ca fiecare produs va avea propria pagina cu descriere si probabil caracteristici. Va puteti inchipui ce
inseamana sa ti "up to date" un astfel de site. Sisif s-ar fi considerat probabil norocos.
Si probabil acum veti intelege cat de puternica este o baza de date. Sa pornim de la un caz practic. Vom incerca sa realizam un site de anunuturi online (ceva mai simplu decat www.adserv.ro). In mod
normal cinva care trebuie sa dea un anunt, va va trimite un email cu anuntul, voi veti modifica pagina html cu anunuturi si o veti pune pe server. Si asta pentru fiecare anunt in parte. Lucrurile vor devenii
destul de dificile atunci cand veti avea de publicat cateva zeci de mesaje pe zi. Si cum va spuneam mai devreme sau mai tarziu vom "esua" prin a folosi o baza da date.
Dar ce este pana la urma o baza de date? O baza de date (in cazul nostru MySQL) este un program ce poate stoca o cantitate foarte mare de informatii si o poate organiza intr-un format ce este usor
accesibil in mod direct sau de catre un alt program (in cazul nostru PHP).
O baza de date este formata din unul sau mai multe tabele. In cazul nostru vom incepe cu o singura tabela pe care o sa o numim "anunturi". Asa dupa cum ii spune si numele o tabela e de fapt un tabel ce
contine informatii. Fiecare coloana contine un anumit tip de informatii iar fiecare rand contine un set de astfel de informatii. In cazul nostru un anunt reprezinta un astfel de rand. Randurile si coloanele unei
tabele arata cam asa:
Observati ca tabela noastra are o cloana ce contine anuntul ("text_anunut") si data la care a aparut ("data_anunut"). Probabil o sa ma intrebati ce e cu coloana "id". O proiectare buna a unei baze de date
presupune ca un anumit anunt sa fie indentificat unic. In viata de zi cu zi daca cineva ne-ar ruga sa identificam un anunt i-am spune probabil ca e alac cu "masina de....". Dar pentru o baza de date e un pic
mai complicat sa identifice astfel in mod unic un anunt. Si atunci folosim o coloana ce contine un numar unic. Astfel e mai simplu sa aflam ce de fapt anunutul care ne intereseaza e anuntul 2 (id=2).
prima linie pare destul de simpla. daca stiti ceva engleza e suficient sa traduceti si veti vedea ca ii spunem servarului de MySQL ca dorim sa crem o tabela
a doua linie e in schimb ceva mai complicata. Sa o luam pe rand. Aceasta linie comunica serverului MySQL ca dorim sa crem o coloana cu numele "id" de timp intreg ("INT") ce se va auto
incrementa ("AUTO_INCREMENT") si informatile continute in aceasta coloana vor fi unice ("PRIMAY KEY"). V-am explicat mai sus ca o baza de date bine proiectata trebuie sa aiba un mod de
a indentifica in mod unic o inregistrare (linie).
a treia linie ii comunica serverului MySQL ca dorim sa crem o coloana cu numele "text_anunt" de tim "TEXT"
a patra linie ii comunica serverului MySQL ca dorim sa crem o coloana cu numele "data_anunt" de tim "DATE" si mai mult decat atat pune conditia ca totdeuna sa existe informatii (sa nu fie
niciodata gol).
Recomandarea mea este sa consultati manualul MySQL (il veti gasi in directorul unde ati instalat MySQL in subdirectorul "Doc") pentru a afla mai multe despre tipuirle de date atunci cand
creati o tabela.
Daca doriti sa stergeti o tabela puteti utiliza:
mysql> DROP TABLE nume_tabela;
introducere de date intr-un tabel
Acum am creat baza de date si tablea dar ea inca goala. Nu am introdus nici o informatie. Exista 2 modalitati de a introduce informatii in baza de date. Folositi-o pe cea care vi se pare cea mai
simpla:
mysql> INSERT INTO anunturi SET
-> text_anunut = "vand masina de spalat automata. tel. 11111111",
-> data_anunt = "2003-04-20";
sau:
mysql> INSERT INTO anunturi
-> (text_anunut, data_anunt) VALUES(
-> "inchiriez spatiu comercial ultracentral. tel 232323", "2003-04-21");
Retineti ca ambele variante sunt absolut echivalente. Observati ca in nici una din variante nu am amintit nimic de campul "id". De ce? Pentru ca initial (cand am creat tabela) am pus conditia ca
acest camp sa fie AUTO_INCREMENT, iar la fiecare inserare MySQL va avea grija sa incrementeze cu 1 valoare precedenta si sa o adauge automat in tabela.
Sau daca dorim sa aflam anunutul si data cand a fost publicat folosim:
mysql> SELECT text_anunut, data_anunt FROM anunuturi;
Dar daca vrem sa aflam cate anunturi au fost publicate de exemplu in data de 21 aprilie 2003?
mysql> SELECT COUNT(*) FROM anunutur where data_anunt="2003-04-21"i;
Sfatul meu e sa incercati sa va mai jucati cu astfel de interogari catre baza de date (query in engleza).
Puteti lesne observa ca am modificat randul ce are id=1. Daca acest camp nu ar fi existat acesta modificare ar fi fost un pic mai dificila pentru ca ar fi fost destul de greu sa-i comunicam
Daca in lectia precedenta am vorbit despre baza de date acum a venit timpul sa afisem datele stocate intr-o forma "comerciala". Cei dintre voi care au avut curiozitatea sa incerce exemplele din
lectia precedenta au observat ca rezultatul query-urilor sunt afisate intr-un tabel, lucru nu foarte estetic. Mai mult decat atat un browser web nu se poate lega direct la servarul MySQL, nu poate
trimite query-uri si nu poate afisea rezultatul returnat de acestea. Un browser web nu poate decat sa afiseze pagini HTML. Si de aceea aici avem nevoie de PHP, care se poate conecta la
MySQL, poate trimite interogari si poate afisea rezultatul interogarior in format HTML, format inteles de un browser web. Principiul de functionare este cel descris in figura 1.
figura 1
Sa detaliem un pic. Browserul web vrea sa afiseze o pagina. El cere aceasta pagina serverului web, care vazand ca este o pagina de tip PHP o trimite spre prelucrare modulului de PHP
instalat. Acesta interpreteaza codul, vede ca sunt cerute date din baza de date, se conecteaza la aceasta, le obtine si genereaza codul html pentru afiserea lor. Astfel pagina generata este
servita browserului care o afiseaza. Sa parcurgem in detaliu toate aceste etape.
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
?>
Functia mysql_connect se conecteaza la MySQL folosind ca parametri adresa serverului unde ruleaza MySQL (daca il aveti instalat pe propriul calculator aceasta ar trebui sa fie localhost),
user-ul (daca il aveti instalat pe propriul calculator aceasta ar trebui sa fie root) si parola (daca il aveti instalat pe propriul calculator aceasta ar trebui sa nu existe).
Deci exemlul de mai sus particularizat pentru cazul in care aveti MySQL instalat pe proriul calculator:
<?php
$link = mysql_connect("localhost", "root", "")
or die("Nu se poate conecta");
?>
Functia die nu face altceva decat sa afiseze mesajul si sa nu mai execute nici un cod dupa. Variabila $link reprezinta un identificator pentru aceasta conxiune (pentru ca ne putem conecta
simultan la mai multe server MySQL).
Numai conectarea nu este suficienta. Trebuie sa-i spunem servarului MySQL ce baza de date dorim sa folosim. Pentru a exemplifica vom folosi baza de date de la lectia 5.
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
mysql_select_db("anunturi", $link) or die("nu se poate alege baza de date");
?>
Observati ca functia mysql_select_db este cea care ii transmite serverului MySQL ce baza de date vrem sa folosim.
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
mysql_select_db("anunturi", $link) or die("nu se poate alege baza de date");
$query = "UPDATE anunturi SET data_anunt = '2003-05-10' WHERE id =2";
$result = mysql_query($query) or die("Query failed");
?>
Functia mysql_query este cea care transmite serverului MySQL query-ul pe care dorim sa-l executam ca string. Variabila $querycintine in acest caz un string ce reprezinta query-ul nostru de
update. Se pot astfel executa orice fel de query-uri, dar probabil cele mai importante sunt cele care selecteaza si afiseaza informatii din baza de date, asa cum vom vedea in paragraful urmator.
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
mysql_select_db("anunturi", $link) or die("nu se poate alege baza de date");
$query = "select * from anunturi";
$result = mysql_query($query) or die("Query failed");
?>
Functia nou introdusa in exemlul nostru este mysql_fetch_array functie ce nu face decat sa ia pe rand (pana se termina) fiecare rand (inregistrare) returnat de query si sa o introduca intr-un
vector ($myrow). Puteti observa ca, cheile acestui vector sunt chiar numele campuriolor din tabela noastra.
Vom folosi un fisier (html) in care va exista un formular unde vom introduce anunturile sa-l numim 6_form.htm. El are urmatorul continut:
<html>
<head>
<title>Adaugare in baza de date</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" method="post" action="6_insert.php">
<strong>anunt:</strong>
<input type="text" name="anunt" id="anunt">
<br>
<strong>data:</strong>
<input type="text" name="data" id="data">
(in format aaaa-ll-zz)<br>
<input type="submit" name="Submit" value="adauga">
<input type="reset" name="Submit2" value="reset">
</form>
</body>
</html>
Prin intermediul acestui fisier se pot introduce anuntul si data la care a fost publicat.
Acum cel de-al doilea fisier (de data asta de tip php) care va prelua datele din formularul precedent si le va introduce in baza de date. Sa-l numim 6_insert.php.
html>
<head>
<title>Adaugare in baza de date</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Nu se poate conecta");
mysql_select_db("anunturi", $link) or die("nu se poate alege baza de date");
$query = "INSERT INTO anunturi SET text_anunt='".$_POST["anunt"]."', data_anunt='".$_POST["data"]."'";
$result = @mysql_query($query);
if ($result) echo "anuntul a fost indrodus cu succes. <a href=\"6_form.htm\">introduceti alt anunt?</a>";
else
{
echo "eroare. anuntul nu a putut fi introdus";
exit();
}
?>
</body>
</html>
In acest fisier se introduc informatiile in baza de date si se afiseaza daca a intervenit vreo eroare.
de Cristi, PHPRomania
dbase
FrontBase
Interbase
SQL Server
mSQL
MySQL
Oracle
Cea mai frecventa combinatie o reprezinta PHP si MySQL pe care o vom prezenta in aceasta lectie.
Introducere
MySQL reprezinta o baza de date relationala oferita gratuit, disponibila atat pentru Windows, cat si pentru Linux. Este folosita in realizarea aplicatiilor mici si medii.
Ideea pe care se bazeaza interactiunea PHP - MySQL sau in general interactiunea dintre PHP si o baza de date este aceea ca permite ca informatiile care se doresc sa apara pe site sa fie
prezente in baza de date. In acest fel informatiile pot fi actualizate usor si prezentate intr-o forma "dinamica" in cadrul site-ului.
Ca si parametri vom folosi adresa care reprezinta IP-ul sau hostname-ul calculatorului pe care am instalat baza de date MySQL. Acesta poate fi acelasi cu cel pe care ruleaza serverul de web
(de obicei Apache sau IIS) sau un alt calculator. In cazul in care se gaseste pe acelasi calculator cu serverul de web, putem folosi la adresa si localhost. Numele de utilizator si parola vor fi cele
setate pentru MySQL. Implicit acestea sunt nume de utilizator: root si fara parola. Este recomandat ca aceste setari implicite sa fie modificate.
Functia mysql_connect returneaza un numar de identificare a conexiuni in caz de succes sau false in caz de eroare
mysql_select_db(baza_de_date, identificatorul_conexiunii);
Parametrii folositi in acest caz vor fi numele bazei de date ales si identificatorul returnat de catre mysql_connect.
In exemplul de mai sus am selectat baza de date curs. Ca si in exemplul anterior, in cazul in care nu putem selecta baza de date curs se va trece la executia functiei die a carui comportament
a fost explicat mai sus.
In exemplul urmator vom insera intr-o baza de data o inregistrare. Pentru aceasta vom folosi functia mysql_query cu ajutorul careia vom executa o instructiune SQL.
mysql_query(instructiune_SQL, identificatorul_conexiunii);
Aceasta instructiune (in cazul nostru <<INSERT INTO cursanti(nume) VALUES('$nume')>>) va fi transmisa serverului MySQL care il va executa si va returna rezultatul. In
cazul mysql_query rezultatul va fi true, in caz de succes, sau false, in caz de eroare.
Pentru a testa exemplul urmator va trebui sa creati un fisier cu numele "adauga_nume.php". Acest fisier va afisa in browser un formular cu o linie in care va puteti introduce numele si un buton
care in momentul in care este apasat va transmite numele mai departe. Dupa cum se observa am setat formularului la actiune valoarea "adauga_nume.php", ceea ce inseamna ca valoarea va fi
transmisa spre acelasi fisier.
Dupa ce valoarea este transmisa, executia va continua si in interiorul instructiunii if, executie care initial a fost ignorata, deoarece variabila $nume nu exista in cazul primei executii.
<?
if($nume) {
$idSQL = mysql_connect("localhost", "root", "");
mysql_select_db("curs", $idSQL);
$query = "INSERT INTO cursanti(nume) VALUES('$nume')";
mysql_query($query, $idSQL);
print("Numele dvs a fost introdus in baza de date!");
}
?>
<form method="POST" action="adauga_nume.php">
Numele dvs:
<input type="text" name="nume" size="30">
<input type="submit" value="Adauga"></form>
Atentie: In unele cazuri este necesar sa se foloseasca variabila $HTTP_POST_VARS['nume'] in momentul in care se doreste preluarea variabilei nume transmisa prin metoda POST prin
intermediul formularului.
Selectarea inregistrarilor
Dupa ce am inserat o inregistrare in baza de date dorim sa o afisam in browser. De aceea vom incerca sa vedem daca in tabela cursanti exista un utilizator cu numele Cristi. Pentru aceasta
construim o instructiune sql de tipul celei de mai jos. Instructiunea mysql_num_rows returneaza numarul de rezultate returnate de executia instructiunii. Se poate observa ca in cazul in care se
foloseste instructiunea mysql_query cu o instructiune SELECT, acesta nu va returna true sau false, ci va returna o lista de rezultate sau false in caz de eroare.
Atentie: Trebuie sa fiti conectati la baza de date inainte de a executa instructiunea SQL.
In urmatorul exemplu dorim sa afisam toate inregistrarile din tabela cursanti. Vom proceda ca si in exemplul anterior. Insa in cazul in care gasim rezultate in tabela cursanti vom parcurge
fiecare din aceste rezultate si il vom afisa pe ecran.
mysql_fetch_row(rezultatul_returnat_de_mysql_query);
Instructiunea mysql_fetch_row va parcurge rezultatul returnat de instructiunea mysql_query si va returna pentru fiecare inregistrare un tablou care contine fiecare camp returnat. Indexarea
tablourilor incepe de la valoare 0. Instructiune while va avea ca efect returnarea pentru fiecare linie a unui tablou. In cazul nostru vom avea in $row[0], numele cursantului.
Atentie: Trebuie sa fiti conectati la baza de date inainte de a executa instructiunea SQL.
In urmatorul exemplu vom selecta dintr-o tabela toti cursanti a caror nume incep cu litera c. Pentru aceasta vom folosi o instructiune SQL mai complexa. Portiunea <nume LIKE 'c%'> din
interiorul instructiunii SQL se traduce prin toate inregistrarile a caror camp nume incepe cu litera c. Semnul %inseamna orice numar de caractere chiar si nici unul.
In acest exemplu am selectat pe langa nume si campul email, pe care il afisam prin intermediul lui $row[1].
Atentie: Trebuie sa fiti conectati la baza de date inainte de a executa instructiunea SQL.
In urmatorul exemplu vom actualiza toate inregistrarile care contin emailul test@asp.net cu test@asp.net. In cazul nu exista nici un utilizator care sa posede adresa de email test@asp.net,
tabela va ramane nemodificata.
Final
Este recomandat ca dupa fiecare selectie a unor inregistrari din cadrul tabelei prin instructiunea SQL SELECT sa se foloseasca instructiunea mysql_free_result. Aceasta permite eliberarea
resurselor asociate variabilei $result.
mysql_free_result($result);
Tema de casa
Realizati o tabela care sa contina campurile: nume, prenume, adresa, oras, judet.
Cerintele sunt urmatoarele:
- inserati prin intermediul unui formular noi inregistrari in tabela
- afisati in browser toti utilizatorii care sunt din Bucuresti
- afisati in browser toti utilizatorii care sunt dintr-un judet care incepe cu litera T
Resurse
mod Descriere
Deschide doar pentru citire; pozitioneaza pointerul la
'r'
inceputul fisierului.
deschide pentru citire si pentru scriere;pozitioneaza
'r+'
pointerul la inceputul fisierului
Deschide doar pentru scriere; pozitioneaza pointerul la
'w' inceputul fisierului si trunchiaza lungimea fisierului la
0.Daca fisierul nu exista incearca sa-l creeze.
Deschide pentru scriere si pentru citire; pozitioneaza
'w+' pointerul la inceputul fisierului si trunchiaza lungimea
fisierului la 0.Daca fisierul nu exista incearca sa-l creeze.
Deschide doar pentru scriere; pozitioneaza pointerul la
'a' sfarsitul fisierului .Daca fisierul nu exista incearca sa-l
creeze
Deschide pentru scriere si pentru citire;pozitioneaza
'a+' pointerul la sfarsitul fisierului .Daca fisierul nu exista
incearca sa-l creeze
Exemple:
<?php
$filename = "fisier.txt";
$handle = fopen ($filename, "r") or
die("Eroare la deschidere");
$contents = fread ($handle, 1024);
fclose ($handle);
?>
<?php
//scrie o linie noua in fisierul ex2.txt
$filename = 'ex2.txt';
$text = "O linie singura linie\n";
$handle = fopen($filename, "w") or
die("Eroare la deschidere");
fwrite($handle, $text);
fclose($handle);
print "Success, am scris $text in fisierul $filename";
?>
fwrite($handle,"text");
fwrite($handle,"1234");
fwrite($handle,"a,b,c\nAm invatat php");
Exemple:
<?
//afiseaza prima linie dintr-un fisier
$nume_fisier="exemplu.txt";
$handle=fopen($nume_fisier,"r") or
die("Eroare la deschidere");
$linie=fgets($handle,4096);
fclose($handle);
echo $linie;
?>
<?php
//scrie o linie noua la sfarsitul fisierului ex2.txt
$filename = 'ex2.txt';
$text = "O linie noua \n";
$handle = fopen($filename, "a") or
die("Eroare la deschidere");
fputs($handle, $text);
fclose($handle);
print "Success, am scris $text in fisierul $filename";
?>
Exemple:
<?php
$nume_fisier="fisier.txt";
$handle=fopen($nume_fisier,"r") or
die("Eroare la deschidere");
$n=0;
while(!feof($handle))
{
$c=fgetc($handle);
echo $c;
}
fclose($handle);
?>
% - un caracter procent.
b - argumentul este tratat ca un integer, si prezentat ca un numar
binar.
c - argumentul este tratat ca un integer, si prezentat ca, caracterul
cu acel cod ASCII.
d - argumentul este tratat ca un integer, si prezentat ca un numar
zecimal cu semn.
u - argumentul este tratat ca un integer, si prezentat ca un numar
zecimal fara semn.
f - argumentul este tratat ca un numar real, si prezentat ca un
numar real.
o - argumentul este tratat ca un integer, si prezentat ca un numar
in baza 8.
s - targumentul este tratat ca un sir de caractere, si prezentat ca un
sir de caractere.
x - argumentul este tratat ca un integer, si prezentat ca un numar
in baza 16 (cu litere mici).
X -argumentul este tratat ca un integer, si prezentat ca un numar in
baza 16 (cu litere mari).
Exemple:
$a=65;
$b="un text";
$y="f";
$z=12.33;
fprinf($handle,"%d",$a); //Imi scrie in fisierul referit de $handle
numarul intreg 65;
fprinf($handle,"%b",$a); //Imi scrie in fisierul referit de $handle
numarul 65 in baza 2 adica1000001
fprinf($handle,"%x",$a); //Imi scrie in fisierul referit de $handle
numarul 65 in baza 16 adica 41
fprinf($handle,"%c",$a); //Imi scrie in fisierul referit de $handle
caracterul care are codul ascii 65 adica A
fprinf($handle,"%o",$a); //Imi scrie in fisierul referit de $handle
numarul 65 in baza 8 adica 101
fprinf($handle,"%f",$z); //Imi scrie in fisierul referit de $handle
numarul real 12.330000
fprinf($handle,"%.2f",$z); //Imi scrie in fisierul referit de $handle
numarul real 12.33 doar cu doua zecimale dupa virgula.
fprinf($handle,"%s",$z); //Imi scrie in fisierul referit de $handle
textul 12.33.
fprinf($handle,"%s",$b); //Imi scrie in fisierul referit de $handle
textul un text.
fprinf($handle,"variabila a are valoarea %d, variabila b are
valoarea %s",$a,$b);
//Imi scrie in fisierul referit de $handle: variabila a are valoarea
65, variabila b are valoarea un text
Exemple:
<?php
$handle = fopen ("fisier.txt","r") or
die("Eroare la deschidere");
while ($info = fscanf ($handle, "%s\t%s\n"))
{
echo $info[0] . "<br>";
}
fclose($handle);
?>
pentru fisier.txt:
Ion Popescu
George Octavian
Vasile Ionescu
imi va afisa:
Ion
George
Vasile
Exemple:
<?php
$handle = fopen ("exemplu.txt", "r");
fseek($handle,2);
fscanf($handle,"%c",$char); echo $char;
?>
abcdefsds
sdadad
exemplul va afisa:
Alte exemple:
Ex1:
<?php
//suma numerelor intregi dintr-un fisier, numerele fiind scrise cate
unul pe o linie
$nume_fisier="ex1.txt";
$handle = fopen ($nume_fisier, "r") or
die("Eroare la deschidere");
$s=0;
while (!feof($handle))
{
$buffer = fgets($handle, 4096);
$s+=(int)$buffer;
}
echo $s;
fclose ($handle);
?>
Ex2:
<?
//afiseaza numarul de aparitii ale unui caracter intr-un fisier
$nume_fisier="ex2.txt";
$l='a';
$handle=fopen($nume_fisier,"r") or
die("Eroare la deschidere");
$n=0;
while(!feof($handle))
{
$c=fgetc($handle);
if($c==$l) $n ++;
}
fclose($handle);
echo "Litera ($l) apare de $n ori in fisierul ($nume_fisier)"
?>
Ex3:
<?
//afiseaza numarul de aparitii al unui cuvant intr-un fisier
$nume_fisier="ex3.txt";
$cuvant='cuvant';
$handle=fopen($nume_fisier,"r") or
die("Eroare la deschidere");
$n=0;
while(!feof($handle))
{
$linie=fgets($handle,4096);
$n += substr_count($linie, $cuvant); ;
}
fclose($handle);
echo "Cuvantul $cuvant apare de $n ori in fisierul $nume_fisier";
?>
Ex4:
<?
//Copiaza continutul primului fisier in cel de-al doilea.
$fisier1 = "origine.txt";
$fisier2 = "destinatie.txt";
$handle1 = fopen($fisier1, "r") or
die("Eroare la deschidere");
$handle2 = fopen($fisier2, "w") or
die("Eroare la deschidere");
while (!feof($handle1))
{
$buffer=fread($handle1,1024);
fwrite($handle2,$buffer,1024);
}
fclose($handle1);
fclose($handle2);
echo "Am scris continutul fisierului $fisier1 in fisierul $fisier2";
?>
rand();
Y = @f(x);
function nume_functie(nume_argument)
{
// aici se insereaza corpul functiei
}
function calculeaza_arie($inaltime,$latime)
{
return$inaltime * $latime;
}
$arie = calculeaza_arie(2,4);
Functii recursive
function recursor()
{
return recursor();
}
$x = recursor();
$cumparaturi = 123.45;
echo "<BR>cumparaturi = $cumparaturi";
$impozit = impozit_vanzari($cumparaturi,0.08);
echo "<BR>impozit = $impozit";
$cumparaturi = 123.45;
echo "<BR>cumparaturi = $cumparaturi";
$impozit = impozit_vanzari($cumparaturi);
echo "<BR>impozit = $impozit";
Dupa cuvantul cheie global pot urma una sau mai multe variabile; fiecare
variabila este separata de vecina sa prin intermediul unei virgule. Iata un
exemplu care prezinta modul de functionare a instructiunii global:
function nu_este_global()
{
echo "<BR>nuglobal: x=$x";
}
function este_global()
{
global $x;
echo "<BR>global: x=$x";
}
$x = 1;
nu_este_global();
este_global;
nuglobal: x =
global: x = 1
function are_local()
{
$x = 2;
echo "<BR>In corpul functiei: x = $x";
}
$x = 1
echo "<BR>In corpul scriptutlui: x = $x";
are_local();
echo "<BR>In corpul scriptului: x = $x";
In corpul scriptului: x = 1
In corpul functiei: x = 2
In corpul scriptului: x = 1
Remarcati diferenta dintre cele doua variabile, chiar daca numele variabilelor
este acelasi. Domeniul de existenta al variabilei globale $x nu se extinde in
interiorul corpului functiei are_local(), iar domeniul de existenta al variabilei
locale $x nu se extinde dincolo de corpul functiei respective. Cu alte cuvinte,
domeniile de existenta ale celor doua variabile sunt complet distincte si, ca
atare, PHP nu poate confunda valorile variabilelor respective.
require(nume_fisier);
require("fisierul.inc");
<HTML>
<HEAD>
<TITLE>Aplicatia care pune capac la toate aplicatiile</TITLE>
</HEAD>
<BODY>
<H1>Aceasta este aplicatia care incheie toate aplicatiile</H1>
<H5>Copyring 2005, Fane Programatorul si Compania SRL.</H5>
si asa mai departe
require("antet.inc");
mktime(ore,minute,secunde,luna,zi,an)
Setcookie(fruct, , time()-3600);
setcookie(cookies[$i], $i);
(isset($cookies))
Pe de alt parte, stocarea mai multor valori ntr-o singur variabil cookie
este posibil. Pentru aceasta, inserai valorile ntr-un tablou i folosii funcia
serialize() pentru a mpacheta" elementele tabloului ntr-un ir; ulterior,
putei recupera valoarea tabloului folosind funcia unserialize(). Iat un
exemplu care prezint modul de creare a unei variabile cookie care conine
mai multe valori, precum i modul de acces la aceasta:
// Se creeaza un tablou
$tablou[$i]=$i;
$s = serialize($tablou);
setcookie(cookies,$s);
if(isset($cookies))
$tablou = unserialize(stripslashes($cookies));
}
Funcia stripslashes() este folosit pentru eliminarea secvenelor escape
adugate la ir atunci cnd valoarea variabilei cookie este returnat de PHP.
Cam asta a fost pe scurt tema voastra.Acum sa trecem s-o dezbatem mai pe
larg:
inscriere.php
Campuri :
Username (*)
Parola (*)
Email (*)
Nume (*)
Prenume (*)
Sex (*)
Site personal
Telefon
Domenii de interes
Verificarea campurilor obligatorii v-o las la alegerea voastra (indicat este s-o
faceti prin ambele mijloace : din Java Script si din PHP)
Dupa logare, in ambele cazuri (si pentru admin si pentru user obisnuit),
paginile unde vor fi redirectati vor contine doar o lista de meniuri
Meniuri :
Un meniu la alegere
Logout
Administrator (admin.php)
Meniuri :
Nume
Prenume
Username
Parola
Trimite mesaj
Citeste mesaje
Sterge mesaje
Logout