web - php

Post on 29-Nov-2014

1.479 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Tehnologii Web

Dr. Sabin­Corneliu 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 (built­in):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 (built­in) – 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 (built­in) – 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 (built­in) – 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 (built­in) – 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 (built­in) – 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 (built­in) – 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 (built­in) – 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 (built­in) – 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 e­shop)

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", "tux@pinguin.info",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=“…” />

??

top related