Download - Web - PHP
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tehnologii Web
Dr. SabinCorneliu BuragaFacultatea de Informatica
Universitatea “A.I.Cuza” – Iasi, Romania
http://www.infoiasi.ro/~busaco/
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Programare Web
PHP: o prezentare generala
Detalii in [AW, 13‐70, 237‐246] [SWC, 357‐361]
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
PHP (PHP: Hypertext Preprocessor)Evolutie
CaracterizareInteractiunea cu utilizatorulProgramare obiectuala in PHP
Prelucrarea bazelor de date in PHPInstrumente & resurse
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Personal Home Page Tools(1994‐1995) – Rasmus Lerdorf
PHP/FI 2.0 (1995)PHP 3 (1998) – incepe sa fie dezvoltat de ZendZeev Suraski & Andi Gutmans
PHP 4 (2000) – motor de procesare ZendPHP 4.3 (2002‐2003) – motor de procesare Zend 2.0PHP 5 (2004) – multe facilitati inspirate din JavaPHP 6 (in dezvoltare)
php: istoric
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Limbaj de programare de tip script, interpretat, poate fi inclus direct in cadrul documentelor HTML
Procedural, oferind si suport pentru programareaorientata‐obiect
Sintaxa inspirata de C/C++, Perl si Java – case sensitivePaginile incluzind cod PHP au extensia .php(in trecut .php3, .phtml)
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Disponibil gratuit (open source) pentru diverse platforme(UNIX/Linux, Windows, Mac OS X) si servere Web
(Apache, IIS, lighttpd,…)
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Maniera de functionare a procesorului (engine‐ului) PHP
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Faciliteaza interactiunea cu utilizatorul(formulare Web, cookie‐uri, sesiuni, integrare Apache)
Suport pentru manipularea bazelor de date(MySQL, ODBC, Oracle, PostgreSQL, SQLite,…)
Procesarea continutului resurselor(tipuri de arhive, PDF, fisiere grafice, certificate digitale,…)
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Suport pentru tehnologiile XML(procesari SAX, DOM, simplificate; transformari, validari;
servicii Web prin SOAP/REST)
Include extensii (module) diverse
Documentatia oficiala: www.php.net/docs.php
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Variabile create “din zbor” Tipuri scalare: integer, double, boolean, stringTipuri complexe: tablouri (indexate/asociative) & obiecte
Tipuri speciale: resursa, referinta, nul (NULL)
$ani = 21; /* o variabila obisnuita */ $conectat = TRUE; # variabila logica$prefer["culoare"] = "gri"; // tablou asociativ
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Structuri de control – similare celor din C (if, switch, while, do, for, break, continue)
if (!$nume) { echo ("Nu ati precizat numele!");
} else {echo ("Bine ai venit, " . $nume . "!\n");
}
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
<?php// umplem un tablou cu valori de la 1 la 10for ($contor = 1; $contor <= 10; $contor++) {$valori[$contor] = $contor;
} // realizam suma valorilor$suma = 0;foreach ($valori as $element) $suma += $element;
// afisam suma obtinute la iesirea standard // pentru a fi trimisa browseruluiecho ("<p>Suma de la 1 la 10 este: <em>" . $suma . "</em></p>");
?>
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
php: caracterizare
Invocarea (rularea) programului PHP direct din linia de comanda:
Salvam codul intr‐un fisier text .php – valori.phpApelam interpretorul PHP din linia de comanda
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
php: caracterizare
Invocarea (rularea) programului PHPfolosind tehnologiile Web:
Plasam fisierul intr‐un director al serverului WebDin browser, indicam URL‐ul catre program pentru a‐l invoca via HTTP
Rezultatulgenerat de script
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Constante predefinite: PHP_VERSION, CHAR_MAX,…Operatori – ca si cei din limbajul C/Perl (e.g., concatenarea sirurilor cu “.”)
Functii‐utilizator:
function trimite_mesaj ( $from="", $to="", $subject="Web"){// corp…
}
php: caracterizare
Parametri cu valori implicite
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
<?phpfunction patrat ($numar) { // functia de ridicare la patratreturn $numar * $numar;
}$numar = 0;while ($numar < 10) {$numar++; // incrementam numarul
if ($numar % 2) // e numar impar...continue; // continuam cu urmatoarea iteratie
// e numar par, deci afisam patratulecho "<p>$numar la patrat este " . patrat($numar) . "</p>";
} // final de while?>
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin):matematice & de conversiede manipulare a sirurilor de caracterede prelucrare a tablourilorde acces la resurse si de lucru cu fisierede manipulare a bazelor de dateprivitoare la conexiunile de reteapentru accesarea resurselor XML, PDF, JPEG,...specifice sistemului de operaregenerale
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin) – matematice:abs(), mod(), fmod()ceil(), floor(), round(), max(), min()exp(), log10(), log()pow(), sqrt()sin(), cos(), tan(), asin(), …, sinh(), …, pi()rand(), srand()bindec(), octdec(), dechex(),…, base_convert()is_finite(), is_infinite(), is_nan()
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin) – siruri de caractere:echo(), print(), printf(), sprintf() etc.strlen(), chr(), ord(), substr(), strstr(), strpos(),…strcmp(), strcasecmp(), strnatcmp() etc. strcat(), str_replace(), str_ireplace(), strrev() etc.trim(), ltrim(), rtrim() explode(), implode(), split(), join(), strtok() nl2br(), htmlentities(), htmlspecialchars(), strip_tags(),…
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin) – tablouri:array_count_values(), array_search(), array_filter(), array_slice(), array_chunk()
array_fill(), array_combine(), array_shift(), array_reverse(), array_multisort(), array_sum(),…
array_merge(), array_intersect(), array_diff()array_keys(), array_key_exists()array_push(), array_pop()
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin) – de manipularea caracterelor:ctype_digit(), ctype_xdigit(), ctype_print(), ctype_punct(), ctype_space(),…
ctype_alpha(), ctype_alnum(), ctype_lower(), ctype_upper()
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin) – timp & data:getdate(), localtime(), gettimeofday(), time() etc.date(), idate(), gmdate(),…checkdate() strftime(), strtotime()
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin) – fisiere/directoare:Folosind tipul de date FILE: fopen(), fread(), fscanf(), fgets(), fwrite(), fprintf(), fseek(), ftell(), feof(), fclose(), ftruncate(), fstat(), flock()
file(), copy(), rename(), delete(), move_uploaded_file(), tmpfile()
file_exists(), filesize(), filetype(), fileperms(),…, stat()is_dir(), is_file(), is_readable(), is_writeable(),…chdir(), mkdir(), rmdir()disk_free_space(), disk_total_space()
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin) – URL‐uri:urldecode(), urlencode(), parse_url()base64_decode(), base64_encode()
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii predefinite (builtin) – variabile PHP:is_bool(), is_int(), is_float(),…, is_array(), is_null(), is_resource(), is_scalar(), is_string()
gettype(), settype()empty(), isset(), unset()strval(), print_r(), var_dump() serialize(), unserialize()
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Alte facilitati:SPL (Standard PHP Library) – acces la metodestandard de prelucrare a datelor
Rularea din linie de comanda: PHP CLI (Command Line Interface) sau ca modul Apache
Crearea de interfete grafice (aplicatii desktop): PHP‐GTK – http://gtk.php.net/
Inter‐conectivitatea cu alte tehnologii/platforme(COM, Flash, Java, .NET)
Suport pentru Internet/Web (FTP, HTTP, IMAP, LDAP, NNTP, POP3, SNMP, SOAP, XML‐RPC)
php: caracterizare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Datele transmite de client (browser) se regasescin tablouri asociative predefinite (si globale):
$_GET[] – datele transmise prin GET$_POST[] – datele transmise prin POST$_COOKIE[] – cookie‐urile receptate$_REQUEST[] – datele primite de la client (continutul lui $_GET, $_POST si $_COOKIE)
$_SESSION[] – datele de tip sesiune
php: interactiune web
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Alte variabile globale utile:$_SERVER[] – datele oferite de serverul Web
$_SERVER['PHP_SELF'] numele scriptului PHP$_ENV[] – datele oferite de mediu (environment)$_FILES[] – datele despre fisierele primiteprin upload
php: interactiune web
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Formularul Web:<form action="afiseaza.php" method="post">
<input type="text" name="nume" /> <input type="text" name="virsta" /> <input type="submit“ value="Trimite" />
</form> Scriptul afiseaza.php:<?php if (!$_REQUEST["nume"]) {?>
<p style="color: red">Nu ati specificat numele!</p> <?php } else {
echo (“Numele este “ . $_REQUEST[“nume”]); }
?>
php: interactiune web
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Programare obiectuala – incapsularea:<?phpclass Student { // specificarea unei clasevar $an; var $nume; var $email; // metodefunction seteazaAn ($un_an) { $this->an = $un_an; }function furnizeazaAn () { return $this->an; }
}$stud = new Student; // instantierea unui obiect?>
Se pot accesa direct, nefiind privati in PHP4
php: obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Programare obiectuala – mostenirea:
class StudentDestept extends Student {var $note; // notele obtinute (data membru)// metodefunction seteazaNote ($n) { $this->note = (array) $n; } function furnizeazaNote () { return (array) $this->note; }
}$alt_stud = new StudentDestept;$alt_stud->seteazaAn (2); // apel de metodă din clasa de bază$alt_stud->seteazaNote ($niste_note);
// apel de metodă din clasa derivată
php: obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Programare obiectuala – constructori:class Student {var $an, $nume, $email; // date-membru
function Student ($a, $n, $e = '') { // constructor$this->an = $a;$this->nume = $n;$this->email = $e;
} // alte metode…
}$stud = new Student (2, "Ping Uinix");
php: obiecte
Destructorinu existain PHP 4!
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii de manipulare a claselor si obiectelorget_class() va returna numele unui obiect, instanță a unei clase
get_parent_class() furnizează clasa părintedin care provine un anumit obiect
method_exists() testează dacă există o metodăpentru un anumit obiect specificat
class_exists() testează existența unei claseis_subclass_of() va determina existențaunei relații de moştenire dintre două clase
php: obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Programare obiectuala – PHP 5:Constructorii sunt numiti __construct()Destructorii sunt denumiti __destruct()Accesul la clasa parinte parent::Membrii pot fi publici (public), privati (private) sau protejati (protected)
Se permit clase/metode abstracte: abstractObiectele pot fi “clonate” via cloneObiectele pot fi comparate folosind ===Pot fi declarate si interfete (in stilul Java)Se permite si introspectia via clasa Reflection
php: obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Programare obiectuala – PHP 5:class Student { // clasa privitoare la un student
private $an; // date-membru (private/publice)public $nume; public $email;// constructor (in stilul nou) function __construct($a = 1, $n = '', $e = '') {
$this->an = $a; $this->nume = $n; $this->email = $e;
} function __destruct() { // destructor
print '<p>L-am distrus pe ' . $this->nume . '!</p>'; }
}
php: obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Programare obiectuala – PHP 5:// folosim introspectia// cream o instanta a clasei predefinite ReflectionClass$clasa = new ReflectionClass ('StudentDestept');// afisam informatii despre clasa specificataprintf("<p>Clasa <em>%s</em> extinde %s si
e declarata in fisierul <tt>%s</tt>.</p>", $clasa->getName(), var_export ($clasa->getParentClass(), 1), $clasa->getFileName()
);
php: obiecte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
baze de date
Organizarea si regasirea facila a informatiilor, conduc lastocarea acestora in baze de date (relationale)
Fiecare baza de date contine mai multe tabeleO tabela este structurata în coloane (cimpuri)si rânduri (înregistrari)
Fiecare cimp se desemnat de un nume si un tip de date (numeric, sir de caractere, data,...)
Pentru facilitarea cautarii/sortarii pot fi asociati siindecsi, conform valorilor unui/unor cimp(uri)
Intre tabelele unei baze de date se pot defini relatii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
baze de date
Ansamblul de aplicatii care realizeazamanagementul bazelor de date se numeste
sistem de baze de date relationalRelational DataBase Management System –RDBMS
DB2Informix
Microsoft SQL ServerMySQLOracle
PostgreSQL…
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
baze de date
Operatiile asupra bazelor de date, tabelelor, valorilor inregistrarilor etc. se specifica
intr‐un limbaj declarativ:SQL (Structured Query Language)
Accesul la un server de gestiune a bazelor de datese realizeaza via un client
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL
Arhitectura open sourceFoarte rapid, optimizat pentru acces la datewww.mysql.comLarg folosit in cadrul solutiilor de comert electronic (e.g., aplicatii Web de tip eshop)
API‐uri disponibile in majoritatea limbajelorde programare (C, C++, Perl, PHP, Python,…)
Componente: server (mysqld) + client (e.g., mysql, PHPMyAdmin, script CGI, program PHP, servlet Java)
Manualul: http://dev.mysql.com/doc/mysql/en
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL
Alte facilitati:Crearea “din zbor” de variabile ce pot fi ulterior refolosite in interogari
Replicarea datelorPaleta larga de functii, operatorisi structuri de control
Suport pentru triggers si clusters Multe altele
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL
Accesul la server via un client in linie de comanda: mysql [ optiuni ] [ nume_baza_de_date ]
Optiuni uzuale:‐h masina (numele masinii/serverului)‐p [ parola ] (parola pentru autentificare)
‐u utilizator (numele utilizatorului)
Exemplu: mysql –u tux –p
Alte detalii: info mysql (in UNIX/Linux)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL: exemplu
(infoiasi)$ mysql –u tux –pEnter password: *******Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 7 to server version: 5.0.18-nt-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> use clienti;Reading table information for completion of table and column namesDatabase changed
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL: exemplu
mysql> select nume, prenume from comenzi;+---------+---------+| nume | prenume |+---------+---------+| Savon | Buritin || Vigoniu | Bonzui || Nilla | Sapo || Lzian | Xi || Tin | Debre |+---------+---------+5 rows in set (0.01 sec)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL: exemplu
mysql> select nume from comenzi where id > 3;+-------+| nume |+-------+| Lzian || Tin |+-------+2 rows in set (0.11 sec)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL
Alte operatii uzuale:insertupdatedelete
create databasecreate tabledrop tablegrant
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL: exemplu
mysql> create database studenti;Query OK, 1 row affected (0.00 sec)mysql> use studenti;Database changedmysql> create table note (
-> nume char (40),-> adresa char(40),-> grupa integer,-> nota integer not null);
Query OK, 0 rows affected (0.01 sec)mysql> insert into note values
-> ("Ping Uinix", "[email protected]",2, 10);
Query OK, 1 row affected (0.00 sec)
Am creat o baza de date, iar in cadrul ei o tabela.
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL: exemplu
mysql> grant usage on studenti.* to tux@localhost;
Query OK, 0 rows affected (0.00 sec)mysql> grant select, insert, delete on studenti.* to tux@localhost;
Query OK, 0 rows affected (0.00 sec)
Am acordat permisiuni de utilizare a bazei de date.
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
MySQL
Accesul la server via un client Web folosindaplicatia PHPMyAdmin
Instrument Web de management al serverului MySQL:crearea si invocare de interogari SQL,export/import in/din diverse formate,interfata atractiva in multe limbi etc.
www.phpmyadmin.net
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
PHP ofera suport pentru o multitudinede servere/tehnologii de baze de date:
MySQL – functiilemysql_*(), mysqli_*()PostgreSQL – functiile pg_*()SQLite – functiile sqlite_*()Oracle – functiile ora_*()ODBC (Open DataBase Connectivity) etc.
php: bd
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Functii/metode pentru accesul la MySQL:Conectare la serverul MySQL: mysql_connect ()Selectare (utilizare) baza de date: mysql_select_db ()Executia unei interogari: mysql_query ()Raportare de erori: mysql_errno (),mysql_error ()Preluarea rezultatelor intr‐un tablou:
mysql_fetch_array ()Multe altele…
php: bd
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
php: bd
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru inceput, vom crea un cont MySQL care sa asigure acces autentificat din programele PHPasupra bazei de date students:(infoiasi)$ mysql –u root mysqlmysql> GRANT SELECT, INSERT, UPDATE, DELETE,
CREATE, DROP ON students.* TO 'tux'@'localhost' IDENTIFIED BY 'p@rola' WITH GRANT OPTION;
Query OK, 0 rows affected (0.11 sec)
php: bd – exemplu
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Folosind mysql in linia de comanda sauPHPMyAdmin, cream tabela students cu structura:CREATE TABLE IF NOT EXISTS `students` (
`name` varchar(50) NOT NULL default '', `year` enum('1','2','3') NOT NULL default '1', `id` int(11) NOT NULL auto_increment, `age` smallint(2) unsigned zerofill NOT NULL default '00', PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1AUTO_INCREMENT=1;
php: bd – exemplu
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Cream tabela
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Generam structura
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Confirmarea crearii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Eventual, inseram o inregistrare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
// conectarea la serverul MySQL$conexiune = mysql_connect ('localhost', 'tux', 'p@rola'); // deschidem baza de datemysql_select_db ('students', $conexiune) // formulam o interogare & o executam$sql = "select name, year from students where year = 2"; $interog = mysql_query ($sql, $conexiune); // salvam într-un tablou înregistrarile gasite$inreg = mysql_fetch_array ($interog); while ($inreg) { echo ('<p>Studentul ' . $inreg['name'] .
' este in anul ' . $inreg['year'] . '</p>'); $inreg = mysql_fetch_array ($interog);
} mysql_close ($conexiune);
php: bd – exemplu
Afisam numelestudentilordin anul 2
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
php: bd – extensia mysqli
Scop: crearea unei extensii pentru acces facilsi flexibil la MySQL >4 din programele PHP5
Faciliteazamentalibilitatea codului,compatibilitatea cu API‐ul MySQL, abordarea procedurala sau orientata‐obiect
Vitezamai mare de procesare + securitateMetode importante: mysqli (), query (), prepare (),
execute (), fetch (), fetch_assoc (), close () etc.Detalii la www.php.net/mysqli
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
php: bd – extensia mysqli
// instantiem obiectul mysqli$mysql = new mysqli ('localhost', 'tux', 'p@rola', 'students'); if (mysqli_connect_errno()) { die ('Conexiunea a esuat...'; } // formulam o interogare si o executamif (!($rez = $mysql->query ('select name, year from students'))) {
die ('A survenit o eroare la interogare'); } echo ('<ol>'); while ($inreg = $rez->fetch_assoc()) {
echo ('<li>Studentul ' . $inreg['name'] . ' este in anul ' . $inreg['year'] . '</li>');
} echo ('</ol>'); // inchidem conexiunea cu serverul MySQL$mysql->close();
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
SQLiteExtensie PHP pentru acces la biblioteca SQLite
Baza de date este stocata ca fisier obisnuit, fara a finecesara conectarea la un server de baze de date extern
Se ofera suport pentru interogari SQL
Detalii la http://sqlite.org/
Exista posibilitatea administrarii via PHPSQLiteAdmin:http://phpsqliteadmin.sourceforge.net
php: bd
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
// deschidem o baza de date SQLite (daca nu exista, va fi creata)if (($bd = sqlite_open ('studenti', 0666, $er)) === FALSE) { die ($er); }// cream o tabela & inseram o inregistraresqlite_exec ('CREATE TABLE studs (name varchar(50), age smallint(2))',
$bd);sqlite_exec ("INSERT INTO studs VALUES ('…'," . rand(10, 90) . ')', $bd);// selectam studentii cu virste intre 20 si 50$rez = sqlite_query ('SELECT * FROM studs WHERE age < 50 and
age > 20 ORDER BY age desc', $bd);// afisam…while ($r = sqlite_fetch_array ($rez)) {
echo '<p>' . $r['name'] . ' are ' . $r['age'] . ' de ani.</p>'; }
php: bd – exemplu
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Apache2Triad & XAMPP – medii pre‐configurate de dezvoltareWeb (Apache, PHP, MySQL,…)
PHPMyAdmin – aplicatie Web scrisa in PHP pentruadministrarea facila a bazelor de date MySQL
Smarty – faciliteaza realizarea de template‐uri de redarea continutului Web
PEAR (PHP Extension and Application Repository) – clase/module care extind functionalitatile PHP: http://pear.php.net/
instrumente
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
PHP Designer – editor Web avansatZend Studio – platforma comerciala de dezvoltarea aplicatiilor PHP de anvergura
PHP plugin for Eclipse – extensie Eclipse facilitinddezvoltarea de cod PHP
instrumente
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Zend Framework – http://framework.zend.com/Biblioteca open source de clase PHP5 focalizatapentru dezvoltareWeb de calitate
Exploatare facila, bazata pe oferirea de solutii: MVC, acces la baze de date, validare & filtrarea datelor de intrare, autentificare, controlulaccesului, management de sesiuni, caching etc.
PRADO – framework PHP5 permitind interactiuni Web conduse de evenimente in stilul .NET
JPSpan, Symfony & Xajax – framework‐uri AJAX
instrumente
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
T. Anghel, Programarea in PHP, Polirom, 2005
S. Buraga (coord.), Aplicatii Web la cheie, Polirom, 2003
S. Buraga (coord.), Situri Web la cheie, Polirom, 2004
S. Buraga, Tehnologii XML, Polirom, 2006
L. Alboaie, S. Buraga, Servicii Web, Polirom, 2006
resurse
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Situl PHP oficial: www.php.net/PHP Builder: www.phpbuilder.com/PHP Classes: www.phpclasses.org/
PHP Developer: www.phpdeveloper.org/PHP Freaks: www.phpfreaks.com/
Zend: www.zend.com/
resurse
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
PHP (PHP: Hypertext Preprocessor)Evolutie
CaracterizareProgramare obiectuala in PHPInteractiunea cu utilizatorul
Prelucrarea bazelor de date in PHPInstrumente & resurse
rezumat
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
??