Va rugam dezactivati programul ad block pentru a vizualiza pagina!

Rezultate pentru tag: baze




Aplicaţii: laseri.

LASERi: emisia stimulată, inversia de populaţie. Tehnologii de construcţie, proprietăţi, aplicaţii.

Acizi şi baze. Teoria protolitică.

Reacţia de neutralizare. Acizi, baze. Protonul. Transferul de protoni. Ion hidroniu. Teoria Brönsted-Lowry sau teoria protolitică. Clasificarea acizilor. Acid conjugat, bază conjugată. Cupluri acid-bază conjugate. 

Tăria acizilor şi bazelor – amfoliţi acido-bazici

Acizi tari şi acizi slabi. Ionizarea acizilor tari. Ionizarea acizilor slabi. Constanta de aciditate. Ka. Baze tari şi baze slabe. Ionizarea bazelor tari. Ionizarea bazelor slabe. Constanta de bazicitate, Kb. Caracterul amfoter. Amfoliţi acido-bazici. 

pH-ul soluţiilor apoase

pH – definiţie, semnificaţie matematică. Reacţia de autoprotoliză a apei. Soluţie neutră. Produsul ionic al apei, Kw. Soluţii acide, soluţii neutre şi soluţii bazice. pH neutru, pH bazic şi pH acid. Scala de pH. 

Celule electrochimice

Electrochimie. Celulă electrochimică. Elemente galvanice/voltaice. Conductori metalici şi electroliţi. Electrod, anod, catod. Semicelulă galvanică. Punte de sare. Procesele chimice care au loc la anod şi la catod. Simbolizarea unei celule electrochimice. Pile uscate/baterii. Pila Daniell.

Proprietăţile triunghiului isoscel

Proprietăţile triunghiului isoscel. Un triunghi isoscel are două unghiuri congruente. Într-un triunghi isoscel, mediana, înălțimea, bisectoarea și mediatoarea corespunzătoare bazei coincid.

Trapezul

Patrulaterul care are două laturi opuse paralele, iar celelalte două neparalele se numește trapez. Definiția unui trapez isoscel. Proprietățile trapezului isoscel. Modalități de a demonstra că un trapez este isoscel.

Linia mijlocie în trapez

Segmentul care uneşte mijloacele laturilor neparalele ale unui trapez se numeşte linie mijlocie a trapezului.

Tetraedrul

Descrierea tetraedrului. Elementele unui tetraedru. Desfășurarea tetraedrului.Tetraedru regulat.

Paralelipipedul dreptunghic

Descrierea unui paralelipiped dreptunghic. Elementele unui paralelipiped dreptunghic. Diagonala paralelipipedului. Desfășurarea paralelipipedului.

Secțiuni paralele cu baza în corpuri geometrice

Secțiune în corp geometric. Secțiuni paralele cu baza în prismă. Secțiuni paralele cu baza în corpuri rotunde. Secțiuni paralele cu baza în piramide.

Trunchiul de piramidă (definiție, elemente)

Trunchi de piramidă. Definiția și elementele trunchiului de piramidă. Înălțimea trunchiului. Apotema trunchiului. Apotema bazei mari, apotema bazei mici. Trunchi de piramidă patrulateră regulată. Trunchi de piramidă triunghiulară regulată. 

Corpuri geometrice asemenea

Corpuri asemenea. Definiția a două piramide asemenea. Raport de asemănare. Raportul ariilor a două suprafețe omoloage. Raportul volumelor a două piramide asemenea. 

Piramida patrulateră regulată

Descrierea piramidei patrulatere regulate. Elementele unei piramide patrulatere. Înalțimea piramidei. Apotema piramidei. Apotema bazei. Desfășurarea piramidei patrulatere.

Prisma

Descrierea prismei. Elementele unei prisme. Înălțimea prismei. Prisma dreaptă. Prisma oblică. Desfășurarea prismei.

Piramida triunghiulară regulată

Descrierea piramidei triunghiulare regulate. Elementele unei piramide triunghiulare. Înalțimea piramidei. Apotema piramidei. Apotema bazei. Desfășurarea piramidei triunghiulare.

Reacţii de hidroliză

Hidroliza compuşilor halogenaţi – hidroliza compuşilor monohalogenaţi, a compuşilor dihalogenaţi geminali şi a compuşilor trihalogenaţi geminali. Hidroliza esterilor în mediu acid. Hidroliza esterilor în mediu bazic. Hidroliza trigliceridelor.

Săpunuri şi detergenţi

Reacţia de saponificare. Agenţi activi de suprafaţă (surfactanţi). Clasificarea şi structura surfactanţilor. Modul de acţiune al săpunurilor şi detergenţilor. Clasificarea detergenţilor.

Derivaţi halogenaţi – proprietăţi chimice

Derivaţi halogenaţi cu reactivitate normală, derivaţi halogenaţi cu reactivitate mărită şi derivaţi halogenaţi cu reactivitate scăzută. Reacţii de substituţie – reacţia de hidroliză, reacţia cu cianurile alcaline. Reacţia de dehidrohalogenare (de eliminare a hidracidului). Regula lui Zaiţev. 

Proteine

Aminoacizi – structură şi nomenclatură. Peptide şi polipeptide. Reacţia de policondensare a aminoacizilor. Legătura peptidică. Clasificarea proteinelor. Funcţii. Proprietăţi fizice. Proteine simple şi proteine conjugate. Grupe prostetice. Denaturarea proteinelor. Factori denaturanţi. 

Aminoacizi

Proteine, peptide, aminoacizi. Legătură peptidică, rest de aminoacid. Cei 20 de aminoacizi naturali. Structura aminoacizilor. Sistemul D, L. Aminoacizii - seria sterică L. Reacţii stereospecifice. Proprietăţi chimice ale aminoacizilor. Amfion (formă dipolară). Clasificarea aminoacizilor în funcţie de polaritatea radicalului hidrocarbonat. Caracterul amfoter al aminoacizilor. Soluţii tampon. 

Acizi nucleici - mononucleotide, polinucleotide

Secvenţă de nucleotide. Acid deoxiribonucleic (ADN) şi acid ribonucleic (ARN). Informaţie genetică. Structura acizilor nucleici. Mononucleotide - pentoză, acid fosforic, baze azotate. Baze purinice şi baze pirimidinice. Riboză şi deoxiriboză. Nucleozide. Policondensarea mononucleotidelor. 

Acizi nucleici - ADN, ARN, codul genetic

Structura de dublu helix a ADN-ului. Perechi de baze complementare în ADN şi perechi de baze complementare in ARN. Secvenţa mononucleotidelor. ARN mesager, ARN de transport, ARN ribozomal. Sinteza proteinelor - transcriere, traducere. Cod genetic, codon, genă, universalitatea codului genetic. 

Corpuri geometrice

Cubul, paralelipipedul dreptunghic, piramida, cilindrul, conul, sfera. Recunoașterea elementelor: muchii, fețe, vârfuri.

Aria trapezului

Formula pentru arie trapez. Înălțimea unui trapez. Probleme cu aria unui trapez.

Noţiuni de termochimie, partea II

Reacţii endoterme. Reacţii exoterme. Efecte termice: degajare de căldură, absorbţie de căldură. Căldura de reacţie. Condiţii standard de determinare a căldurii de reacţie.

Viteza de reacţie

Cinetica chimică – definiţie. Viteza medie de reacţie. Variaţia concentraţiei reactanţilor şi a produşilor de reacţie în timp. Exemplu de calcul pentru viteza medie de reacţie. Clasificarea reacţiilor chimice în funcţie de viteza de reacţie. Reacţii rapide. Reacţii cu viteză moderată. Reacţii lente. Măsurarea vitezei de reacţie. 

Influenţa catalizatorilor asupra vitezei de reacţie

Catalizatori – definiţie şi mod de funcţionare. Reprezentarea grafică a energiei de activare pentru o reacţie necatalizată şi o reacţie catalizată. Etapa determinantă de viteză. Reacţii catalitice. Proprietăţile catalizatorilor - activitatea catalitică, selectivitatea. Promotorii şi otrăvurile. Tipuri de reacţii catalitice –reacţii omogene, eterogene şi enzimatice. Suport catalitic. Inhibitori. 

Proprietățile logaritmilor

Propritățile logaritmilor: logaritmul produsului, logaritmul raportului, logaritmul unei puteri. Formula pentru schimbarea bazei logaritmului și alte formule logaritmice. Operații cu logaritmi.

Cilindrul circular drept

Descrierea cilindrului circular drept. Elementele unui cilindru circular drept. Înălțimea cilindrului. Generatoarea unui cilindru. Secțiunea axială a cilindrului. Desfășurarea unui cilindru circular drept. Aria cilindrului și volumul cilindrului. Deducerea formulelor de calcul pentru arie cilindru circular și volum cilindru circular. Aria laterală a cilindrului circular drept. Aria totală a cilindrului circular drept. Volumul cilindrului circular drept.

Conul circular drept

Descrierea conului circular drept. Elementele unui con circular drept. Înălțimea conului. Generatoarea conului. Secțiunea axială a conului. Desfășurarea unui con circular drept. Aria conului și volumul conului. Deducerea formulelor de calcul pentru arie con circular și volum con circular. Aria laterală a conului circular drept. Aria totală a conului circular drept. Volumul conului circular drept.

Trunchiul de con circular drept

Descrierea trunchiului de con circular drept. Elementele unui trunchi de con circular drept. Înălțimea trunchiului de con. Generatoarea trunchiului de con. Secțiunea axială a trunchiului de con. Desfășurarea unui trunchi de con circular drept. Aria trunchiului de con și volumul trunchiului de con. Deducerea formulelor de calcul pentru arie trunchi de con și volum trunchi de con. Aria laterală a trunchiului de con circular drept. Aria totală a trunchiului de con circular drept. Volumul trunchiului de con circular drept.

Echilibre acido-bazice. Tăria acizilor. Exponentul de aciditate.

Protonul și ionul de hidrogen. Ionul hidroniu și ionul hidroxil. Teoria protolitică Brønsted-Lowry. Cuplu acid-bază conjugată. Echilibru acido-bazic. Constanta de aciditate. Disocierea în apă a acizilor tari. Disocierea în apă a acizilor slabi. Exemple de acizi tari. Exemple de acizi slabi. 

Tăria bazelor. Constanta de bazicitate și exponentul de bazicitate.

Disocierea bazelor tari în apă. Disocierea bazelor slabe în apă. Exemple de baze tari și baze slabe. Constanta de bazicitate. Exponentul de bazicitate. Apa - substanță amfoteră (amfolit acido-bazic). Produsul ionic al apei. 

pH-ul soluțiilor apoase de acizi

Definiție pH. Produsul ionic al apei. pH și pOH. Calculul concentrației ionilor hidroniu pentru soluțiile de acizi tari și pentru soluțiile de acizi slabi. Calculul pH-ului pentru soluțiile de acizi tari și pentru soluțiile de acizi slabi. Exemplu de calcul pH pentru o soluție de acid tare. Exemplu de calcul pH pentru o soluție de acid slab. 

pH-ul soluțiilor apoase de baze

Calculul concentrației ionilor hidroxil din soluțiile de baze tari și din soluțiile de baze slabe. Calculul concentrației ionilor hidroniu din soluțiile de baze tari și din soluțiile de baze slabe. Calculul pH-ului soluțiilor de baze tari și al soluțiilor de baze slabe. Exemplu de calcul pH pentru o soluție de bază tare. Exemplu de calcul pH pentru o soluție de bază slabă (o soluție de amoniac). 

Reacția de neutralizare în soluții apoase

Reacția de neutralizare - definiție. Neutralizarea unui acid tare cu o bază tare. Ioni spectatori. Căldura molară de neutralizare. Formarea sărurilor prin neutralizarea unui acid tare cu o bază tare. Reacția dintre un acid slab și o bază tare. Reacția dintre un acid tare și o bază slabă. 

Titrări acido-bazice

Reacția de neutralizare. Titrare acido-bazică. Punct de echivalență. Indicatori acido-bazici. Domeniu de viraj. Exemple de indicatori acido-bazici: metiloranj, turnesol, fenolftaleină. Biuretă. Exemplu de calcul: aflarea concentrației unei soluții de acid clorhidric prin titrare acido-bazică cu o soluție de hidroxid de sodiu de concentrație cunoscută. 

Hidroliza sărurilor

Sărurile - compuși ionici. Comportamentul anionilor în apă. Comportamentul cationilor în apă. Reacția de hidroliză. Săruri care formează soluții neutre (săruri provenite de la acizi tari și baze tari). Săruri care formează soluții acide (săruri provenite de la acizi tari și baze slabe). Săruri care formează soluții bazice (săruri provenite de la acizi slabi și baze tari). Săruri provenite de la acizi slabi și baze slabe. Hidroliza azotatului de sodiu (NaNO3), hidroliza clorurii de amoniu (NH4Cl), hidroliza sulfurii acide de sodiu (NaHS), hidroliza cianurii de amoniu (NH4CN). Aplicații; calculul pH-ului unei soluții de sare. 

Operaţii cu şiruri convergente

Operaţii cu şiruri convergente: limita sumei a două şiruri convergente, limita produsului, limita câtului, limita unei puteri.

Operaţii cu limite de funcţii

Operaţii cu limite de funcţii: adunarea, înmulţirea, câtul, ridicarea la putere.

CSS Responsive Web Design - Viewport

Responsive Web Design - Viewport
Ce este Viewport?
Viewport este zona vizibilă a utilizatorului unei pagini web.
Viewportul variază în funcție de dispozitiv și va fi mai mic pe un telefon mobil decât pe un ecran al computerului.
Înainte de tablete și telefoane mobile, paginile web erau concepute doar pentru ecranele computerului și era comun ca paginile web să aibă un design static și o dimensiune fixă.
Apoi, când am început să navigăm pe internet folosind tablete și telefoane mobile, paginile web cu dimensiuni fixe erau prea mari pentru a se potrivi cu ecranul. Pentru a remedia acest lucru, browserele de pe aceste dispozitive au redus întreaga pagină web pentru a se potrivi ecranului.
Nu a fost perfect !! Dar o rezolvare rapidă.
Setarea Viewport
HTML5 a introdus o metodă pentru a permite proiectanților web să preia controlul asupra viewport-ului, prin intermediul etichetei <meta>.
Ar trebui să includeți următorul element viewport <meta> în toate paginile dvs. web.
Un element viewport <meta> oferă instrucțiuni browserului cu privire la modul de control al dimensiunilor și scalării paginii.
width=device-width part stabilește lățimea paginii pentru a urma lățimea ecranului dispozitivului (screen-width) (care va varia în funcție de dispozitiv).
initial-scale=1.0 setează nivelul inițial de zoom atunci când pagina este încărcată prima dată de browser.
Iată un exemplu de pagină web fără viewport meta tag și aceeași pagină web cu viewport meta tag.
Mărimea conținutului la Viewport (Size Content to The Viewport)
Utilizatorii sunt folosiți pentru a derula site-urile pe verticală atât pe desktop cât și pe dispozitive mobile - dar nu pe orizontală!
Așadar, dacă utilizatorul este obligat să defileze orizontal sau să mărească, pentru a vedea întreaga pagină web, rezultă o experiență slabă a utilizatorului.
Câteva reguli suplimentare de urmat:
NU folosiți elemente cu lățime fixă ​​mare - De exemplu, dacă o imagine este afișată la o lățime mai largă decât cea din portofoliu, aceasta poate determina derularea portofoliului pe orizontală. Nu uitați să ajustați acest conținut pentru a se încadra în lățimea vizualizării.
NU lăsați conținutul să se bazeze pe o anumită lățime a viewportului (viewport width) pentru a fi redat - Deoarece dimensiunile ecranului și lățimea în pixeli CSS variază foarte mult între dispozitive, conținutul nu ar trebui să se bazeze pe o anumită lățime a viewportului pentru a fi redat.
Utilizați interogări CSS media (media queries) pentru a aplica stiluri diferite pentru ecrane mici și mari - Setarea lățimilor CSS mari pentru elementele paginii va face ca elementul să fie prea larg pentru viewport de pe un dispozitiv mai mic. În schimb, luați în considerare utilizarea unor valori de lățime relative, cum ar fi lățimea: 100%. De asemenea, aveți grijă să folosiți valori mari de poziționare absolută. Poate determina elementul să iasă în afara ecranului pe dispozitive mici.

CSS Responsive Web Design - Grid-View

Responsive Web Design - Grid-View
Ce este un Grid-View?
Multe pagini web se bazează pe un grid-view, ceea ce înseamnă că pagina este împărțită în coloane.
Un responsive grid-view are adesea 12 coloane și are o lățime totală de 100% și se va micsora și se va extinde pe măsură ce redimensionați fereastra browserului.
Construirea unui responsive Grid-View
Vom începe să construim un responsive Grid-View.
Mai întâi asigurați-vă că toate elementele HTML au proprietatea box-sizing setată pe border-box. Acest lucru asigură că padding și border sunt incluse în lățimea totală și înălțimea (total width and height) elementelor.

SQL Introducere

Introducere în SQL
SQL este un limbaj standard pentru accesarea și manipularea bazelor de date.
Ce este SQL?
SQL înseamnă limbaj de interogare structurat
SQL vă permite să accesați și să manipulați bazele de date
SQL a devenit un standard al American National Standards Institute (ANSI) în 1986 și al Organizației Internaționale pentru Standardizare (ISO) în 1987
Ce poate face SQL?
SQL poate executa interogări împotriva unei baze de date
SQL poate prelua date dintr-o bază de date
SQL poate insera înregistrări într-o bază de date
SQL poate actualiza înregistrările într-o bază de date
SQL poate șterge înregistrările dintr-o bază de date
SQL poate crea baze de date noi
SQL poate crea tabele noi într-o bază de date
SQL poate crea proceduri stocate într-o bază de date
SQL poate crea vizualizări într-o bază de date
SQL poate seta permisiunile pe tabele, proceduri și vizualizări
SQL este un Standard - DAR ....
Deși SQL este un standard ANSI / ISO, există diferite versiuni ale limbajului SQL.Cu toate acestea, pentru a respecta standardul ANSI, toate acceptă cel puțin comenzile majore (cum ar fi SELECT, UPDATE, DELETE, INSERT, WHERE) într-o manieră similară.
Majoritatea programelor bazei de date SQL au și extensii proprii în plus față de standardul SQL.
Utilizarea SQL pe site-ul dvs. Web
Pentru a construi un site web care arată datele dintr-o bază de date, veti avea nevoie de:
Un program de bază de date RDBMS (adică MS Access, SQL Server, MySQL)
Pentru a utiliza un limbaj de script din partea serverului, cum ar fi PHP sau ASP
Pentru a utiliza SQL pentru a obține datele dorite
Pentru a utiliza HTML / CSS pentru stilul paginii
RDBMS reprezintă sistemul relațional de gestionare a bazelor de date.
RDBMS este baza pentru SQL și pentru toate sistemele de baze de date moderne precum MS SQL Server, IBM DB2, Oracle, MySQL și Microsoft Access.
Datele din RDBMS sunt stocate în obiectele bazei de date numite tabele. Un tabel este o colecție de intrări de date asociate și este format din coloane și rânduri.
Fiecare tabel este împărțit în entități mai mici numite câmpuri. Câmpurile din tabelul Clienți constau din CustomerID, CustomerName, ContactName, Adresa, Oraș, Cod Postal și Țară. Un câmp este o coloană dintr-un tabel concepută pentru a păstra informații specifice despre fiecare înregistrare din tabel.
O înregistrare, numită și rând, este fiecare intrare individuală care există într-un tabel. De exemplu, există 91 de înregistrări în tabelul Clienților de mai sus. O înregistrare este o entitate orizontală dintr-un tabel.
O coloană este o entitate verticală dintr-un tabel care conține toate informațiile asociate cu un câmp specific dintr-un tabel.

SQL Sintaxă

Sintaxa SQL
Tabele de baze de date (Database Tables)
O bază de date conține cel mai adesea una sau mai multe tabele. Fiecare tabel este identificat printr-un nume (de exemplu, „Clienți” sau „Comenzi”). Tabelele conțin înregistrări (rânduri) cu date.
În acest tutorial vom folosi bine-cunoscuta bază de date de exemplu Northwind (inclusă în MS Access și MS SQL Server).
Selecție din tabelul „Clienți”.
Tabelul conține cinci înregistrări (una pentru fiecare client) și șapte coloane (CustomerID, CustomerName, ContactName, Address, City, PostalCode și Country).
Instrucțiuni SQL
Majoritatea acțiunilor pe care trebuie să le efectuați într-o bază de date sunt efectuate cu instrucțiuni SQL.
Ține minte că...
Cuvintele cheie SQL NU sunt sensibile la majuscule și minuscule (nu sunt case sensitive): selectarea este identică cu SELECT
În acest tutorial vom scrie toate cuvintele cheie SQL cu majuscule.
Semicolon după Instrucțiuni SQL?
Unele sisteme de baze de date necesită punct și virgulă la sfârșitul fiecărei instrucțiuni SQL.
Semicolon este modul standard de a separa fiecare instrucțiune SQL în sistemele de baze de date care permit executarea a mai mult de o instrucțiune SQL în același apel către server.
În acest tutorial, vom folosi punct și virgulă la sfârșitul fiecărei instrucțiuni SQL.
Unele dintre cele mai importante comenzi SQL
SELECT - extrage date dintr-o bază de date
UPDATE - actualizează datele dintr-o bază de date
DELETE - șterge datele dintr-o bază de date
INSERT INTO - introduce date noi într-o bază de date
CREATE DATABASE - creează o nouă bază de date
ALTER DATABASE - modifică o bază de date
CREATE TABLE - creează un nou tabel
ALTER TABLE - modifică un tabel
DROP TABLE - șterge un tabel
CREATE INDEX - creează un index (cheie de căutare)
DROP INDEX - șterge un index
 

SQL SELECT DISTINCT

Instrucțiunea SQL SELECT DISTINCT
Instrucțiunea SELECT DISTINCT este utilizată pentru a returna doar valori distincte (diferite).
În interiorul unui tabel, o coloană conține adesea multe valori duplicate; și uneori doriți doar să enumerați valorile diferite (distincte).
SELECT DISTINCT Sintaxa
SELECT DISTINCT column1, column2, ...
FROM table_name;
Exemplu SELECT fără DISTINCT
Următoarea instrucțiune SQL selectează TOATE (inclusiv duplicatele) valorile din coloana „Country” din tabelul „Customers”:
SELECT Country FROM Customers;
Acum, să folosim cuvântul cheie DISTINCT cu instrucțiunea SELECT de mai sus și să vedem rezultatul.
Exemple SELECT DISTINCT
Următoarea instrucțiune SQL selectează numai valorile DISTINCT din coloana „Country” din tabelul „Customers”:
SELECT DISTINCT Country FROM Customers;
Următoarea instrucțiune SQL listează numărul de țări client (customer countries) diferite (distincte):
SELECT COUNT(DISTINCT Country) FROM Customers;
Exemplul de mai sus nu va funcționa în Firefox și Microsoft Edge! Deoarece COUNT (DISTINCT column_name) nu este acceptat în bazele de date Microsoft Access. Firefox și Microsoft Edge folosesc Microsoft Access în exemplele noastre.
Iată soluția pentru MS Access:
SELECT Count(*) AS DistinctCountries
FROM (SELECT DISTINCT Country FROM Customers);

SQL WHERE

Clauza SQL WHERE
Clauza WHERE este folosită pentru a filtra înregistrările.
Clauza WHERE este utilizată pentru a extrage doar acele înregistrări care îndeplinesc o condiție specificată.
Sintaxa WHERE
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Clauza WHERE nu este utilizată numai în instrucțiunea SELECT, ci este utilizată și în instrucțiunea UPDATE, DELETE etc.
Exemplu de clauză WHERE
Următoarea declarație SQL selectează toți clienții din țara „Mexic”, în tabelul „Customers”:
SELECT * FROM Customers
WHERE Country='Mexic';
Text Fields vs. Numeric Fields
SQL necesită citate unice în jurul valorilor de text (majoritatea sistemelor de baze de date vor permite, de asemenea, ghilimele duble).
Cu toate acestea, câmpurile numerice nu trebuie incluse între ghilimele:
SELECT * FROM Customers
WHERE CustomerID=1;
Operatori în clauza WHERE
În clauza WHERE pot fi folosiți următorii operatori:
=  Egal
> Mai mare decât
< Mai mic decât
> = Mai mare sau egal
<= Mai mic sau egal
<> Nu este egal. Notă: În unele versiuni de SQL, acest operator poate fi scris ca !=
BETWEEN - Între un anumit interval
LIKE - Căutați un model
IN - Pentru a specifica mai multe valori posibile pentru o coloană

SQL TOP, LIMIT sau ROWNUM

Clauzele SQL TOP, LIMIT sau ROWNUM
Clauza SQL SELECT TOP
Clauza SELECT TOP este utilizată pentru a specifica numărul de înregistrări de returnat.
Clauza SELECT TOP este utilă pe tabele mari cu mii de înregistrări. Restituirea unui număr mare de înregistrări poate afecta performanța.
Nu toate sistemele de baze de date acceptă clauza SELECT TOP. MySQL acceptă clauza LIMIT pentru a selecta un număr limitat de înregistrări, în timp ce Oracle utilizează ROWNUM.
Sintaxa SQL Server / MS Access
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
Sintaxa MySQL 
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
Sintaxa Oracle
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
Exemple SQL TOP, LIMIT și ROWNUM
Următoarea instrucțiune SQL selectează primele trei înregistrări din tabelul „Customers”:
SELECT TOP 3 * FROM Customers;
Următoarea instrucțiune SQL arată exemplul echivalent folosind clauza LIMIT:
SELECT * FROM Customers
LIMIT 3;
Următoarea instrucțiune SQL arată exemplul echivalent folosind ROWNUM:
SELECT * FROM Customers
WHERE ROWNUM <= 3;
Exemplu SQL TOP PERCENT
Următoarea instrucțiune SQL selectează primele 50% de înregistrări din tabelul „Customers”:
SELECT TOP 50 PERCENT * FROM Customers;
Adăugați o clauză WHERE
Următoarea declarație SQL selectează primele trei înregistrări din tabelul „Customers”, unde țara este „Germania”:
SELECT TOP 3 * FROM Customers
WHERE Country='Germania';
Următoarea instrucțiune SQL arată exemplul echivalent folosind clauza LIMIT:
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;
Următoarea instrucțiune SQL arată exemplul echivalent folosind clauza ROWNUM:
SELECT * FROM Customers
WHERE Country='Germania' AND ROWNUM <= 3;

SQL LEFT JOIN

SQL LEFT JOIN
Cuvântul cheie SQL LEFT JOIN
Cuvântul cheie LEFT JOIN returnează toate înregistrările din tabelul din stânga (table1), si înregistrările potrivite din tabelul din dreapta (table2). Dacă nu există nicio potrivire din partea dreaptă rezultatul este NULL.
LEFT JOIN Syntax
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
În unele baze de date LEFT JOIN se numește LEFT OUTER JOIN.
Exemplu SQL LEFT JOIN
Următoarea instrucțiune SQL va selecta toți clienții (customers) și orice comenzi (orders) ar putea avea:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;
Cuvântul cheie LEFT JOIN returnează toate înregistrările din tabelul din stânga (Clienți/Customers), chiar dacă nu există potriviri în tabelul din dreapta (Comenzi/Orders).

SQL RIGHT JOIN

SQL RIGHT JOIN
Cuvântul cheie SQL RIGHT JOIN
Cuvântul cheie RIGHT JOIN returnează toate înregistrările din tabelul din dreapta (table2), si înregistrările potrivite din tabelul din stânga (table1). Când nu există nici o potrivire rezultatul este NULL din partea stângă.
RIGHT JOIN Syntax
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;
În unele baze de date, RIGHT JOIN se numește RIGHT OUTER JOIN.
Exemplu SQL RIGHT JOIN
Următoarea instrucțiune SQL va returna toți angajații și orice comenzi ar fi făcut:
Cuvântul cheie RIGHT JOIN returnează toate înregistrările din tabelul din dreapta (Angajați/Employees), chiar dacă nu există meciuri în tabelul din stânga (Comenzi/Orders).

SQL Comentarii

Comentarii SQL
Comentariile sunt utilizate pentru a explica secțiunile instrucțiunilor SQL sau pentru a preveni executarea de instrucțiuni SQL.
Exemplele din acest capitol nu vor funcționa în Firefox și Microsoft Edge!
Comentariile nu sunt acceptate în bazele de date Microsoft Access. Firefox și Microsoft Edge folosesc baza de date Microsoft Access în exemplele noastre.
Comentarii cu o singură linie
Comentariile cu o singură linie încep cu -.
Orice text între - și sfârșitul liniei va fi ignorat (nu va fi executat).
Următorul exemplu utilizează un comentariu cu o singură linie ca explicație:
--Select all:
SELECT * FROM Customers;
Următorul exemplu utilizează un comentariu cu o singură linie pentru a ignora sfârșitul unei linii:
SELECT * FROM Customers -- WHERE City='Berlin';
Următorul exemplu utilizează un comentariu cu o singură linie pentru a ignora o afirmație:
--SELECT * FROM Customers;
SELECT * FROM Products;
Comentarii cu mai multe linii
Comentariile cu mai multe linii încep cu / * și se termină cu * /.
Orice text între / * și * / va fi ignorat.
Următorul exemplu utilizează un comentariu cu mai multe linii ca explicație:
/*Selectați toate coloanele
din toate înregistrările
în tabelul Clienți (Customers): * /
SELECT * FROM Customers;
Următorul exemplu utilizează un comentariu cu mai multe linii pentru a ignora multe afirmații:
/*SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories;*/
SELECT * FROM Suppliers;
Pentru a ignora doar o parte dintr-o afirmație, utilizați și / * * / comentariu.
Următorul exemplu utilizează un comentariu pentru a ignora o parte a unei linii:
SELECT CustomerName, /*City,*/ Country FROM Customers;
Următorul exemplu utilizează un comentariu pentru a ignora o parte dintr-o afirmație:
SELECT * FROM Customers WHERE (CustomerName LIKE 'L%'
OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%'
OR CustomerName LIKE 'T%'*/ OR CustomerName LIKE 'W%')
AND Country='USA'
ORDER BY CustomerName;

SQL CREATE DATABASE

SQL CREATE DATABASE
Instrucțiunea SQL CREATE DATABASE
Instrucțiunea CREATE DATABASE este utilizată pentru a crea o nouă bază de date SQL.
Sintaxă
CREATE DATABASE databasename;
CREATE DATABASE Example
Următoarea instrucțiune SQL creează o bază de date numită "testDB":
CREATE DATABASE testDB;
Asigurați-vă că aveți privilegiul admin înainte de a crea orice bază de date. Odată creată o bază de date, o puteți verifica în lista bazelor de date cu următoarea comandă SQL: SHOW DATABASES;

SQL DROP DATABASE

SQL DROP DATABASE
Instrucțiunea SQL DROP DATABASE
Instrucțiunea DROP DATABASE este utilizată pentru a renunța la o bază de date SQL existentă.
Sintaxă
DROP DATABASE databasename;
Aveți grijă înainte de a renunța la o bază de date. Ștergerea unei baze de date va duce la pierderea informațiilor complete stocate în baza de date!
Exemplu DROP DATABASE
Următoarea instrucțiune SQL renunță la baza de date existentă "testDB":
DROP DATABASE testDB;
Asigurați-vă că aveți privilegiul admin înainte de a renunța la orice bază de date. Odată ce o bază de date este abandonată, o puteți verifica în lista bazelor de date cu următoarea comandă SQL: SHOW DATABASES;

SQL BACKUP DATABASE

SQL BACKUP DATABASE 
SQL BACKUP DATABASE pentru SQL Server
Instrucțiunea SQL BACKUP DATABASE
Instrucțiunea BACKUP DATABASE este utilizată în SQL Server pentru a crea o copie de rezervă completă a unei baze de date SQL existente.
Sintaxă
BACKUP DATABASE databasename
TO DISK = 'filepath';
Instrucțiunea SQL BACKUP WITH DIFFERENTIAL
O copie de rezervă diferențială (differential back up) face doar backup pentru părțile bazei de date care s-au modificat de la ultima copie de rezervă completă a bazei de date.
Sintaxă
BACKUP DATABASE databasename
TO DISK = 'filepath'
WITH DIFFERENTIAL;
Exemplu BACKUP DATABASE 
Următoarea instrucțiune SQL creează o copie de rezervă completă (full back up) a bazei de date existente "testDB" pe discul D:
BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak';
Faceți întotdeauna o copie de siguranță (back up) a bazei de date pe o unitate diferită de baza de date reală. Apoi, dacă primiți un crash pe disc, nu veți pierde fișierul dvs. de rezervă împreună cu baza de date.
Exemplu BACKUP WITH DIFFERENTIAL
Următoarea instrucțiune SQL creează o copie de rezervă diferențială (differential back up) a bazei de date "testDB":
BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak'
WITH DIFFERENTIAL;

 

SQL ALTER TABLE

SQL ALTER TABLE
Instrucțiunea SQL ALTER TABLE
Instrucțiunea ALTER TABLE este utilizată pentru a adăuga, șterge sau modifica coloane dintr-un tabel existent.
Instrucțiunea ALTER TABLE este de asemenea folosită pentru a adăuga și a scădea diverse constrângeri pe un tabel existent.
ALTER TABLE - ADD Column
Pentru a adăuga o coloană într-un tabel, utilizați următoarea sintaxă:
ALTER TABLE table_name
ADD column_name datatype;
Următorul SQL adaugă o coloană „Email” la tabelul „Clienți” (Customers):
ALTER TABLE Customers
ADD Email varchar(255);
ALTER TABLE - DROP COLUMN
Pentru a șterge o coloană dintr-un tabel, utilizați următoarea sintaxă (observați că unele sisteme de baze de date nu permit ștergerea unei coloane):
ALTER TABLE table_name
DROP COLUMN column_name;
Următorul SQL șterge coloana „Email” din tabelul „Clienți” (Customers):
ALTER TABLE Customers
DROP COLUMN Email;
ALTER TABLE - ALTER/MODIFY COLUMN
Pentru a modifica tipul de date al unei coloane dintr-un tabel, utilizați următoarea sintaxă:
SQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype;
My SQL / Oracle (versiunea anterioară 10G):
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
Oracle 10G și mai târziu:
ALTER TABLE table_name
MODIFY column_name datatype;
Exemplu SQL ALTER TABLE
Creați tabelul „Persoane” (Persons):
Acum vrem să adăugăm o coloană numită "DateOfBirth" în tabelul "Persoane"(Persons).
Folosim următoarea instrucțiune SQL:
ALTER TABLE Persons
ADD DateOfBirth date;
Observați că noua coloană, "DateOfBirth", este de tip date (data type) și va păstra o dată. Data type specifică ce tip de date poate conține coloana. 
Exemplu Modificați Data Type
Acum dorim să schimbăm tipul de date (Data Type) al coloanei numită „DateOfBirth” din tabelul „Persoane”(Persons).
Folosim următoarea instrucțiune SQL:
ALTER TABLE Persons
ALTER COLUMN DateOfBirth year;
Observați că coloana „DateOfBirth” are acum un tip year și va păstra year într-un format de două sau patru cifre.
Exemplu DROP COLUMN
În continuare, dorim să ștergem coloana numită „DateOfBirth” din tabelul „Persoane”(Persons).
Folosim următoarea instrucțiune SQL:
ALTER TABLE Persons
DROP COLUMN DateOfBirth;

 

SQL CREATE INDEX

SQL CREATE INDEX
Instrucțiunea SQL CREATE INDEX
Instrucțiunea CREATE INDEX este utilizată pentru a crea indexuri în tabele.
Se folosesc indexuri pentru a prelua date din baza de date mai rapid decât in caz contrar. Utilizatorii nu pot vedea indexurile, ci sunt folosite doar pentru a accelera căutările / interogările (searches/queries).
Actualizarea unei tabele cu indexuri necesită mai mult timp decât actualizarea unui tabel fără indexuri (deoarece indexurile au nevoie și de o actualizare). Deci, creați doar indexuri pe coloane care vor fi căutate frecvent.
Sintaxă CREATE INDEX
Creează un index într-un tabel. Valorile duplicate sunt permise:
CREATE INDEX index_name
ON table_name (column1, column2, ...);
Sintaxă  CREATE UNIQUE INDEX 
Creează un index unic pe un tabel. Valorile duplicate nu sunt permise:
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
Sintaxa pentru crearea indexurilor variază printre diferite baze de date. Prin urmare: verificați sintaxa pentru a crea indexuri în baza de date.
Exemplu CREATE INDEX
Instrucțiunea SQL de mai jos creează un index numit "idx_lastname" în coloana "LastName" din tabelul "Persoane" (Persons):
CREATE INDEX idx_lastname
ON Persons (LastName);
Dacă doriți să creați un index pe o combinație de coloane, puteți lista numele coloanelor din paranteze, separate prin virgule:
CREATE INDEX idx_pname
ON Persons (LastName, FirstName);
Declarație DROP INDEX (DROP INDEX Statement)
Instrucțiunea DROP INDEX este utilizată pentru a șterge un index dintr-un tabel.
MS Access:
DROP INDEX index_name ON table_name;
SQL Server:
DROP INDEX table_name.index_name;
DB2/Oracle:
DROP INDEX index_name;
MySQL:
ALTER TABLE table_name
DROP INDEX index_name;

SQL Vizualizări

Vizualizări SQL (SQL Views)
Instrucțiunea SQL CREATE VIEW
În SQL, o vizualizare (view) este un tabel virtual bazat pe setul de rezultate al unei instrucțiuni SQL.
O vizualizare (view) conține rânduri și coloane, la fel ca un tabel real. Câmpurile dintr-o vizualizare (view) sunt câmpuri dintr-una sau mai multe tabele reale din baza de date.
Puteți adăuga funcții SQL, WHERE și instrucțiuni JOIN într-o vizualizare (view) și prezentați datele ca și cum datele proveneau dintr-un singur tabel.
Sintaxă CREATE VIEW
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
O vizualizare (view) afișează întotdeauna date actualizate! Motorul bazei de date recreează datele, folosind instrucțiunea SQL a vizualizării (view), de fiecare dată când un utilizator solicită o vizualizare (view).
Exemple SQL CREATE VIEW
Următorul SQL creează o vizualizare (view) care arată toți clienții (customers) din Brazilia:
CREATE VIEW [Brazilia Customers] AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = "Brazilia";
Putem consulta întrebarea de mai sus după cum urmează:
SELECT * FROM [Brazilia Customers];
Următorul SQL creează o vizualizare (view) care selectează fiecare produs din tabelul „Produse” (Products) cu un preț mai mare decât prețul mediu:
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName, Price
FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products);
Putem consulta întrebarea de mai sus după cum urmează:
SELECT * FROM [Products Above Average Price];
SQL Actualizarea unei vizualizări (SQL Updating a View)
O vizualizare (view) poate fi actualizată cu comanda CREATE SAU REPLACE VIEW.
Sintaxă SQL CREATE SAU REPLACE VIEW
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Următorul SQL adaugă coloana „Oraș” (City) la vizualizarea (view) „Clienții din Brazilia” (Brazilia Customers):
CREATE OR REPLACE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = "Brazil";
SQL Eliminarea unei vizualizări (SQL Dropping a View)
O vizualizare (view) este ștersă cu comanda DROP VIEW.
Sintaxă SQL DROP VIEW
DROP VIEW view_name;
Următorul SQL renunță la vizualizarea (view) „Clienții din Brazilia” (Brazilia Customers):
DROP VIEW [Brazilia Customers];

SQL Injection

Injecția SQL (SQL Injection)
Injecția SQL (SQL Injection) este o tehnică de injecție de cod (code injection) care ar putea distruge baza de date.
Injecția SQL (SQL Injection) este una dintre cele mai frecvente tehnici de hacking web.
Injecția SQL (SQL Injection) este plasarea codului rău intenționat în declarațiile SQL, prin introducerea paginii web.
SQL în paginile web
Injecția SQL (SQL Injection) are loc de obicei atunci când ceri utilizatorului o introducere, cum ar fi numele său de utilizator / userid (username/userid), iar în loc de nume / id (name/id), utilizatorul vă oferă o declarație SQL pe care o veți rula în mod neștiut pe baza de date.
Uitați-vă la următorul exemplu care creează o instrucțiune SELECT adăugând o variabilă (txtUserId) la un șir selectat. Variabila este preluată din intrarea utilizatorului (getRequestString):
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;
Restul acestui capitol descrie pericolele potențiale ale utilizării intrării utilizatorului în declarațiile SQL.
Injecția SQL pe baza 1 = 1 este întotdeauna adevărată
Privește din nou exemplul de mai sus. Scopul inițial al codului a fost crearea unei instrucțiuni SQL pentru a selecta un utilizator, cu un id de utilizator (user id) dat.
Dacă nu există nimic care să împiedice un utilizator să introducă o intrare „greșită” (wrong), utilizatorul poate introduce unele intrări „inteligente” (smart) ca aceasta:
UserId: 105 SAU 1 = 1
Apoi, instrucțiunea SQL va arăta astfel:
SELECT * FROM Users WHERE UserId = 105 OR 1=1;
SQL-ul de mai sus este valid și va întoarce TOATE (ALL) rândurile din tabelul „Utilizatori” (Users), deoarece OR 1 = 1 este întotdeauna TRUE.
Exemplul de mai sus pare periculos? Ce se întâmplă dacă tabelul „Utilizatori” (Users) conține nume și parole?
Instrucțiunea SQL de mai sus este la fel ca aceasta:
SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1;
Un hacker ar putea avea acces la toate numele de utilizator și parolele (user names și passwords) dintr-o bază de date, introducând pur și simplu 105 OR 1 = 1 în câmpul de introducere.
Injecția SQL Bazată pe "" = "" este întotdeauna adevărată
Iată un exemplu de autentificare a utilizatorului pe un site web:
Nume utilizator: John Doe
Parola: myPass
Exemplu:
uName = getRequestString("username");
uPass = getRequestString("userpassword");
sql = 'SELECT * FROM Users WHERE Name ="' + uName + '" AND Pass ="' + uPass + '"'
Rezultat:
SELECT * FROM Users WHERE Name ="John Doe" AND Pass ="myPass"
Un hacker ar putea avea acces la numele de utilizator și parolele (user names și passwords) dintr-o bază de date, introducând pur și simplu "OR" "=" în caseta de text a numelui de utilizator sau a parolei (user name sau password):
Nume utilizator: "sau" "="
Parola: "sau" "="
Codul de la server va crea o declarație SQL validă astfel:
Rezultat:
SELECT * FROM Users WHERE Name ="" or ""="" AND Pass ="" or ""=""
SQL de mai sus este valid și va returna toate rândurile din tabelul „Utilizatori” (Users), deoarece OR „„ = „„ este întotdeauna TRUE.
Injecție SQL bazată pe declarații SQL Batched (SQL Injection Based on Batched SQL Statements)
Majoritatea bazelor de date acceptă declarația SQL batched.
Un batch (lot) de instrucțiuni SQL este un grup de două sau mai multe instrucțiuni SQL, separate prin punct și virgulă.
Instrucțiunea SQL de mai jos va returna toate rândurile din tabelul „Utilizatori” (Users), apoi va șterge tabelul „Furnizori” (Suppliers).
SELECT * FROM Users; DROP TABLE Suppliers
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;
User id: 105; DROP TABLE Suppliers
SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers;
Utilizați parametrii SQL pentru protecție
Pentru a proteja un site web de injecția SQL, puteți utiliza parametrii SQL.
Parametrii SQL sunt valori care sunt adăugate la o interogare SQL la momentul executării, într-o manieră controlată.
Exemplu Razor ASP.NET:
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = @0";
db.Execute(txtSQL,txtUserId);
Rețineți că parametrii sunt reprezentați în instrucțiunea SQL de către un marker@.
Motorul SQL verifică fiecare parametru pentru a se asigura că este corect pentru coloana sa și sunt tratate literal, și nu ca parte a SQL-ului care trebuie executat.
txtNam = getRequestString("CustomerName");
txtAdd = getRequestString("Address");
txtCit = getRequestString("City");
txtSQL = "INSERT INTO Customers (CustomerName,Address,City) Values(@0,@1,@2)";
db.Execute(txtSQL,txtNam,txtAdd,txtCit);
Următoarele exemple arată cum să construiți interogări parametrizate în unele limbaje web comune.
SELECTAȚI DECLARAȚIA ÎN ASP.NET:
txtUserId = getRequestString("UserId");
sql = "SELECT * FROM Customers WHERE CustomerId = @0";
command = new SqlCommand(sql);
command.Parameters.AddWithValue("@0",txtUserID);
command.ExecuteReader();
INSERAȚI ÎN DECLARAȚIE ÎN ASP.NET:
txtNam = getRequestString("CustomerName");
txtAdd = getRequestString("Address");
txtCit = getRequestString("City");
txtSQL = "INSERT INTO Customers (CustomerName,Address,City) Values(@0,@1,@2)";
command = new SqlCommand(txtSQL);
command.Parameters.AddWithValue("@0",txtNam);
command.Parameters.AddWithValue("@1",txtAdd);
command.Parameters.AddWithValue("@2",txtCit);
command.ExecuteNonQuery();
INSERAȚI ÎN DECLARAȚIE ÎN PHP:
$stmt = $dbh->prepare("INSERT INTO Customers (CustomerName,Address,City)
VALUES (:nam, :add, :cit)");
$stmt->bindParam(':nam', $txtNam);
$stmt->bindParam(':add', $txtAdd);
$stmt->bindParam(':cit', $txtCit);
$stmt->execute();

SQL Găzduire

SQL Găzduire (SQL Hosting)
Dacă doriți ca site-ul dvs. web să poată stoca și prelua date dintr-o bază de date, serverul dvs. web ar trebui să aibă acces la o bază de date (database-system) care utilizează limbajul SQL.
Dacă serverul dvs. web este găzduit de un furnizor de servicii Internet ( Internet Service Provider) (ISP), va trebui să căutați planuri de găzduire SQL (SQL hosting).
Cele mai frecvente baze de date de găzduire SQL (SQL hosting databases) sunt MS SQL Server, Oracle, MySQL și MS Access.
MS SQL Server
Microsoft SQL Server este un software popular de bază de date pentru site-uri web bazate pe baze de date (database-driven) cu trafic ridicat.
SQL Server este un sistem de baze de date SQL (SQL database system) foarte puternic, robust și complet prezentat.
Oracle
Oracle este, de asemenea, un software popular de baze de date pentru site-uri web bazate pe baze de date cu trafic ridicat.
Oracle este un sistem de baze de date SQL foarte puternic, robust și complet prezentat.
MySQL
MySQL este, de asemenea, un software popular de baze de date pentru site-uri web.
MySQL este un sistem de baze de date SQL foarte puternic, robust și complet caracterizat.
MySQL este o alternativă ieftină la soluțiile scumpe Microsoft și Oracle.
Access
Când un site web necesită doar o bază de date simplă, Microsoft Access poate fi o soluție.
Access-ul nu este potrivit pentru traficul foarte ridicat și nu este la fel de puternic ca MySQL, SQL Server sau Oracle.

PHP Introducere

PHP Introducere
Codul PHP este executat pe server.
HTML
CSS
JavaScript
Ce este PHP?
PHP este un acronim pentru "PHP: Hypertext Preprocessor"
PHP este un limbaj de scripturi de surse deschise, utilizat pe scară largă
Scripturile PHP sunt executate pe server
PHP se poate descărca și utiliza gratuit
PHP este un limbaj uimitor și popular!
Este suficient de puternic pentru a fi în centrul celui mai mare sistem de blogging de pe web (WordPress)!
Este suficient de adânc pentru a rula cea mai mare rețea de socializare (Facebook)!
Ce poate face PHP?
PHP poate genera conținut dinamic al paginii
PHP poate crea, deschide, citi, scrie, șterge și închide fișiere pe server
PHP poate colecta date de formular
PHP poate trimite și primi cookie-uri
PHP poate adăuga, șterge, modifica date din baza de date
PHP poate fi utilizat pentru a controla accesul utilizatorului
PHP poate cripta dateCu PHP nu ești limitat la output HTML. Puteți output imagini, fișiere PDF și chiar filme Flash. De asemenea, puteți output orice text, cum ar fi XHTML și XML.
De ce PHP?
PHP rulează pe diverse platforme (Windows, Linux, Unix, Mac OS X etc.)
PHP este compatibil cu aproape toate serverele folosite astăzi (Apache, IIS etc.)
PHP acceptă o gamă largă de baze de date
PHP este gratuit. Descărcați-l din resursa oficială PHP: www.php.net
PHP este ușor de învățat și rulează eficient pe serverCe este nou în PHP 7
PHP 7 este mult mai rapid decât versiunea stabilă și populară anterioară(PHP 5.6)
PHP 7 a îmbunătățit gestionarea erorilor
PHP 7 acceptă declarații de tip (Type Declarations) mai stricte pentru argumentele funcției
PHP 7 acceptă operatori noi (cum ar fi operatorul național spațial: <=>)

PHP Filtre

Filtre PHP
Validarea datelor = Determinați dacă datele sunt într-o formă corectă.
Sanitizarea datelor = Eliminați orice caracter ilegal din date.
Extensia de filtrare PHP
Filtrele PHP sunt utilizate pentru validarea și igienizarea intrărilor externe.
Extensia de filtru PHP are multe dintre funcțiile necesare pentru verificarea intrării utilizatorului (user input) și este concepută pentru a face validarea datelor mai ușoară și mai rapidă.
Funcția filter_list() poate fi utilizată pentru a enumera ce oferă extensia de filtru PHP:
<table>
  <tr>
    <td>Nume filtru</td>
    <td>ID filtru</td>
  </tr>
  <?php
  foreach (filter_list() as $id =>$filter) {
      echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
  }
  ?>
</table>
De ce să folosești filtrele?
Multe aplicații web primesc input extern. Intrarea/datele externe pot fi:
Intrarea utilizatorului dintr-un formular (User input from a form)
Cookies
Date despre servicii web (Web services data)
Variabilele serverului (Server variables)
Rezultatele interogării bazei de date (Database query results)
Ar trebui să validați întotdeauna datele externe!
Datele trimise nevalide pot duce la probleme de securitate și vă pot break pagina web!
Folosind filtre PHP puteți fi sigur că aplicația dvs. primește introducerea corectă!
Funcția PHP filter_var()
Funcția filter_var() validează și igienizează datele.
Funcția filter_var() filtrează o singură variabilă cu un filtru specificat. Este nevoie de două bucăți de date (pieces of data):
Variabila pe care doriți să o verificați
Tipul de verificare de utilizat
Sanitizarea unui string
Următorul exemplu utilizează funcția filter_var() pentru a elimina toate etichetele HTML dintr-un șir (string):
<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>
Validarea unui număr întreg (integer)
Următorul exemplu utilizează funcția filter_var() pentru a verifica dacă variabila $int este un număr întreg (integer). Dacă $int este un număr întreg (integer), rezultatul codului de mai jos va fi: „Integer este valid”. Dacă $int nu este un număr întreg (integer), rezultatul va fi: „Integer nu este valid”:
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Integer este valid");
} else {
    echo("Integer nu este valid");
}
?>
filter_var() și Problema cu 0
În exemplul de mai sus, dacă $int a fost setat pe 0, funcția de mai sus va returna „Integer nu este valid”. Pentru a rezolva această problemă, utilizați codul de mai jos:
<?php
$int = 0;
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo("Integer este valid");
} else {
    echo("Integer nu este valid");
}
?>
Validați o adresă IP
Următorul exemplu utilizează funcția filter_var() pentru a verifica dacă variabila $ip este o adresă IP validă:
<?php
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
    echo("$ip este o adresă IP validă");
} else {
    echo("$ip nu este o adresă IP validă");
}
?>
Sanitizarea și validarea unei adrese e-mail
Următorul exemplu utilizează funcția filter_var() pentru a elimina mai întâi toate caracterele ilegale din variabila $e-mail, apoi verificați dacă este o adresă e-mail validă:
<?php
$email = "[email protected]";
// Eliminați toate caracterele ilegale din e-mail
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Validați e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    echo("$email este o adresă e-mail validă");
} else {
    echo("$email nu este o adresă e-mail validă");
}
?>
Sanitizarea și validarea unei adrese URL
Următorul exemplu utilizează funcția filter_var() pentru a elimina mai întâi toate caracterele ilegale dintr-o adresă URL, apoi verificați dacă $url este o adresă URL validă:
<?php
$url = "https://www.w3schools.com";
// Eliminați toate caracterele ilegale dintr-un URL
$url = filter_var($url, FILTER_SANITIZE_URL);
// Validați adresa URL
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
    echo("$url este o adresă URL validă");
} else {
    echo("$url nu este o adresă URL validă");
}
?>

PHP Bază de date MySQL

Bază de date PHP MySQL
Cu PHP, vă puteți conecta la și manipula bazele de date.
MySQL este cel mai popular sistem de baze de date folosit cu PHP.
Ce este MySQL?
MySQL este un sistem de baze de date utilizat pe web
MySQL este un sistem de baze de date care rulează pe un server
MySQL este ideal atât pentru aplicații mici cât și pentru aplicații mari
MySQL este foarte rapid, fiabil și ușor de utilizat
MySQL folosește SQL standard
MySQL compilează pe mai multe platforme
MySQL este gratuit pentru a fi descărcat și utilizat
MySQL este dezvoltat, distribuit și susținut de Oracle Corporation
MySQL poartă numele fiicei cofondatoare Monty Widenius: My
Datele dintr-o bază de date MySQL sunt stocate în tabele. Un tabel este o colecție de date conexe și este format din coloane și rânduri.
Bazele de date sunt utile pentru stocarea informațiilor categoric. O companie poate avea o bază de date cu următoarele tabele:
Angajați, Produse, Clienți, Comenzi (Employees, Products, Customers, Orders)
Sistem de baze de date PHP + MySQL
PHP combinat cu MySQL este cross-platform (puteți dezvolta în Windows și puteți lucra pe o platformă Unix)
Database Queries
Un query este o întrebare sau o solicitare (question or a request).
Putem interoga (query) o bază de date (database) pentru informații specifice și putem returna un set de înregistrări.
Uită-te la următoarea interogare (query) (folosind SQL standard):
SELECT LastName FROM Employees
Interogarea (query) de mai sus selectează toate datele din coloana „LastName” din tabelul „Employees”.
Descărcați baza de date MySQL
Dacă nu aveți un server PHP cu o bază de date MySQL, îl puteți descărca gratuit aici: http://www.mysql.com
Date despre baza de date MySQL
MySQL este sistemul de baze de date standard de facto pentru site-urile web cu volume IMPORTANTE atât de date cât și de utilizatori finali (end-users) (cum ar fi Facebook, Twitter și Wikipedia).
Un alt lucru despre MySQL este că poate fi redus pentru a sprijini aplicațiile bazei de date încorporate.

PHP Conectare la MySQL

PHP Conectează-te la MySQL
PHP 5 și versiunile ulterioare pot lucra cu o bază de date MySQL folosind:
Extensia MySQLi („i” este îmbunătățită)
DPO (Obiecte de date PHP/PHP Data Objects)
Versiunile anterioare de PHP au folosit extensia MySQL. Cu toate acestea, această extindere a fost depășită în 2012.
Ar trebui să folosesc MySQLi sau PDO?
Dacă aveți nevoie de un răspuns scurt, ar fi „Orice dorți”.
Atât MySQLi, cât și PDO au avantajele lor:
PDO va funcționa pe 12 sisteme de baze de date diferite, în timp ce MySQLi va funcționa doar cu baze de date MySQL.
Deci, dacă trebuie să schimbați proiectul pentru a utiliza o altă bază de date, PDO ușurează procesul. Trebuie doar să schimbați șirul de conexiune (connection string) și câteva interogari (queries). Cu MySQLi, va trebui să rescrieți întregul cod - interogările (queries) incluse.
Ambele sunt orientate pe obiecte (object-oriented), dar MySQLi oferă și o API procedurală (procedural API).
Ambele acceptă declarații pregătite (Prepared Statements). Declarațiile pregătite (Prepared Statements) protejează împotriva injecției SQL și sunt foarte importante pentru securitatea aplicațiilor web.
Exemple MySQL atât în ​​MySQLi cât și în sintaxa PDO
Aici și în capitolele următoare vom demonstra trei moduri de a lucra cu PHP și MySQL:
MySQLi (orientat pe obiect/object-oriented)
MySQLi (procedural)
DOP
Instalare MySQLi
Pentru Linux și Windows: Extensia MySQLi este instalată automat în majoritatea cazurilor, atunci când este instalat pachetul mysql php5.
Pentru detalii despre instalare, accesați:
http://php.net/manual/en/mysqli.installation.php
Instalare DPO
Pentru detalii despre instalare, accesați: http://php.net/manual/en/pdo.installation.php
Deschideți o conexiune la MySQL
Înainte de a putea accesa datele din baza de date MySQL, trebuie să ne putem conecta la server:
Exemplu (MySQLi orientat pe obiect/MySQLi Object-Oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Creați conexiunea
$conn = new mysqli($servername, $username, $password);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}
echo "Conectat cu succes";
?>
$connect_error a fost spart până la PHP 5.2.9 și 5.3.0. Dacă trebuie să vă asigurați compatibilitatea cu versiunile PHP înainte de 5.2.9 și 5.3.0, utilizați în schimb următorul cod:
// Verificați conexiunea
if (mysqli_connect_error()) {
    die("Conexiunea la baza de date a eșuat: " . mysqli_connect_error());
}
Exemplu (MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}
echo "Conexiunea s-a realizat cu succes";
?>
Exemplu (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Conectat cu succes";
    }
catch(PDOException $e)
    {
    echo "Conexiune eșuată: " . $e->getMessage();
    }
?>
În exemplul PDO de mai sus am specificat și o bază de date (myDB). PDO necesită o bază de date validă pentru a vă conecta. Dacă nu este specificată nicio bază de date, se face o excepție.
Un mare beneficiu al PDO este că are o clasă de excepție pentru a rezolva problemele care pot apărea în interogările noastre de baze de date (database queries). Dacă o excepție este făcută în block-ul try{}, scriptul nu mai este executat și curge direct către primul block catch(){}.
Închideți conexiunea
Conexiunea va fi închisă automat la finalizarea scriptului. Pentru a închide înainte conexiunea, utilizați următoarele:
MySQLi Object-Oriented:
$conn->close();
MySQLi Procedural:
mysqli_close($conn);
PDO:
$conn = null;

PHP Creare bază de date MySQL

PHP Creați o bază de date MySQL
O bază de date constă dintr-una sau mai multe tabele.
Veți avea nevoie de privilegii speciale CREATE pentru a crea sau pentru a șterge o bază de date MySQL.
Creați o bază de date MySQL folosind MySQLi și PDO
Instrucțiunea CREATE DATABASE este utilizată pentru a crea o bază de date în MySQL.
Următoarele exemple creează o bază de date denumită "myDB":
Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Creați conexiunea
$conn = new mysqli($servername, $username, $password);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}
// Creați baza de date
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
    echo "Baza de date creată cu succes";
} else {
    echo "Eroare la crearea bazei de date: " . $conn->error;
}
$conn->close();
?>
Când creați o bază de date nouă, trebuie să specificați doar primele trei argumente pentru obiectul mysqli (nume de server, nume de utilizator și parolă/servername, username and password).
Dacă trebuie să folosiți un port specific, adăugați un șir gol (empty string) pentru argumentul numelui bazei de date (database-name argument), astfel: new mysqli("localhost", "username", "password", "", port)
Exemplu (MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}
// Creați baza de date
$sql = "CREATE DATABASE myDB";
if (mysqli_query($conn, $sql)) {
    echo "Bază de date creată cu succes";
} else {
    echo "Eroare la crearea bazei de date: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
Următorul exemplu PDO creează o bază de date denumită "myDBPDO":
Exemplu (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
    $conn = new PDO("mysql:host=$servername", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "CREATE DATABASE myDBPDO";
    // utilizați exec() deoarece nu se returnează niciun rezultat
    $conn->exec($sql);
    echo "Bază de date creată cu succes<br>";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }
$conn = null;
?>
Un mare beneficiu al PDO este că are o clasă de excepție pentru a rezolva problemele care pot apărea în interogările noastre de baze de date (database queries). Dacă o excepție este făcută în block-ul try{}, scriptul nu mai este executat și este trimis direct către primul block catch(){}. În block-ul catch de mai sus afișam în echo instrucțiunea SQL și mesajul de eroare generat.

PHP MySQL Creare Tabel

PHP MySQL Create Table
Un tabel de baze de date (database table) are propriul nume unic și este format din coloane și rânduri (columns and rows).
Creați un tabel MySQL folosind MySQLi și PDO
Instrucțiunea CREATE TABLE este utilizată pentru a crea un tabel în MySQL.
Vom crea un tabel numit „MyGuests”, cu cinci coloane: "id", "firstname", "lastname", "email" și "reg_date":
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
Tipul de date (data type) specifică ce tip de date poate conține coloana.
După tipul de date (data type), puteți specifica alte atribute opționale pentru fiecare coloană:
NOT NULL - Fiecare rând (row) trebuie să conțină o valoare pentru acea coloană (column), valorile nule nu sunt permise
Valoarea DEFAULT - Setați o valoare implicită care este adăugată atunci când nu este trecută altă valoare
UNSIGNED - Folosit pentru tipuri de numere, limitează datele stocate la numere pozitive și zero
AUTO INCREMENT - MySQL crește automat valoarea câmpului de fiecare dată când se adaugă o nouă înregistrare
PRIMARY KEY - Folosit pentru identificarea unică a rândurilor dintr-un tabel. Coloana cu setarea PRIMARY KEY este adesea un număr de identificare (ID number) și este adesea folosită cu AUTO_INCREMENT
Fiecare tabel trebuie să aibă o coloană de chei primare (primary key column) (în acest caz: coloana „id”). Valoarea sa trebuie să fie unică pentru fiecare înregistrare din tabel.
Următoarele exemple arată cum se creează tabelul în PHP:
Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}
// sql pentru a crea tabelul
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if ($conn->query($sql) === TRUE) {
    echo "Tabelul MyGuests creat cu succes";
} else {
    echo "Eroare la crearea tabelului: " . $conn->error;
}
$conn->close();
?>
Exemplu (MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conexiunea a eșuat: " . mysqli_connect_error());
}
//  sql pentru a crea tabelul
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";
if (mysqli_query($conn, $sql)) {
    echo "Tabelul MyGuests creat cu succes";
} else {
    echo "Eroare la crearea tabelului: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
Exemplu (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // sql pentru a crea tabelul
    $sql = "CREATE TABLE MyGuests (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    )";

    // utilizați exec() deoarece nu se returnează niciun rezultat
    $conn->exec($sql);
    echo "Tabelul MyGuests creat cu succes";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

PHP MySQL Inserare date

PHP MySQL Inserare date
Inserați date în MySQL folosind MySQLi și PDO
După crearea unei baze de date și a unui tabel, putem începe să adăugăm date în ele.
Iată câteva reguli de sintaxă de urmat:
Interogarea SQL (SQL query) trebuie indicată în PHP
Valorile șirului (string values) din interogarea SQL (SQL query) trebuie menționate
Valorile numerice (numeric values) nu trebuie citate
Nu trebuie menționat cuvântul NULL
Instrucțiunea INSERT INTO este utilizată pentru a adăuga noi înregistrări la un tabel MySQL:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
În capitolul precedent, am creat un tabel gol, numit „MyGuests”, cu cinci coloane: "id", "firstname", "lastname", "email" și "reg_date".
Acum, să umplem tabelul cu date.
Dacă o coloană este AUTO_INCREMENT (cum ar fi coloana „id”) sau TIMESTAMP cu actualizarea implicită a current_timesamp (precum coloana „reg_date”), nu este necesar să fie specificată în interogarea SQL (SQL query); MySQL va adăuga automat valoarea.
Următoarele exemple adaugă o nouă înregistrare la tabelul „MyGuests”:
Exemplu (MySQLi Orientat pe obiect/MySQLi Object-oriented)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]')";
if ($conn->query($sql) === TRUE) {
    echo "Noua înregistrare creată cu succes";
} else {
    echo "Eroare: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
Exemplu (MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Creați conexiunea
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Verificați conexiunea
if (!$conn) {
    die("Conectarea a eșuat: " . mysqli_connect_error());
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('Ion', 'Popescu', '[email protected]')";
if (mysqli_query($conn, $sql)) {
    echo "Noua înregistrare creată cu succes";
} else {
    echo "Eroare: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
Exemplu (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    //  setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('Ion', 'Popescu', '[email protected]')";
    // utilizați exec() deoarece nu se returnează niciun rezultat
    $conn->exec($sql);
    echo "Noua înregistrare creată cu succes";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }
$conn = null;
?>

PHP MySQL Declarații pregătite

PHP MySQL Declarații pregătite
Declarațiile pregătite (prepared statements) sunt foarte utile împotriva injecțiilor SQL (SQL injections).
Declarații pregătite și parametri legați
O declarație pregătită (prepared statements) este o caracteristică utilizată pentru a executa aceleași (sau similare) instrucțiuni SQL cu o eficiență ridicată.
Declarațiile pregătite (prepared statements) funcționează astfel:
Pregătiți: Un șablon de instrucțiuni SQL (SQL statement template) este creat și trimis în baza de date. Anumite valori sunt lăsate nespecificate, numite parametri (etichetat (labeled ) "?"). Exemplu: INSERT INTO MyGuests VALUES(?, ?, ?)
Baza de date analizează, compilează și efectuează optimizarea interogării pe șablonul de instrucțiuni SQL (SQL statement template) și stochează rezultatul fără a-l executa
Executați: ulterior, aplicația leagă valorile la parametri, iar baza de date execută instrucțiunea. Aplicația poate executa instrucțiunea ori de câte ori dorește cu valori diferite
Față de executarea directă a instrucțiunilor SQL, instrucțiunile pregătite (prepared statements) au trei avantaje principale:
Instrucțiunile pregătite (prepared statements) reduc timpul de analiză (parsing time), deoarece pregătirea pe interogare se face o singură dată (deși instrucțiunea este executată de mai multe ori)
Parametrii legați (bound parameters) minimizează lățimea de bandă (bandwidth) către server, deoarece trebuie să trimiteți de fiecare dată doar parametrii și nu întreaga interogare (query)
Instrucțiunile pregătite (prepared statements) sunt foarte utile împotriva injecțiilor SQL (SQL injections), deoarece valorile parametrilor, care sunt transmise ulterior folosind un protocol diferit, nu trebuie eliberate corect (correctly escaped). Dacă șablonul de instrucțiune originală (original statement template) nu este derivat de la intrarea externă (external input), nu poate apărea injecția SQL (SQL injection).
Declarații pregătite în MySQLi (Prepared Statements in MySQLi)
Următorul exemplu utilizează instrucțiuni pregătite și parametri legați (prepared statements and bound parameters) în MySQLi:
Exemplu (MySQLi cu declarații pregătite/MySQLi with Prepared Statements)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Creați conexiunea
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificați conexiunea
if ($conn->connect_error) {
    die("Conexiunea a eșuat: " . $conn->connect_error);
}
// pregătiți și legați
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
// setați parametrii și executați
$firstname = "Ion";
$lastname = "Popescu";
$email = "[email protected]";
$stmt->execute();
$firstname = "Maria";
$lastname = "Gheorghe";
$email = "[email protected]";
$stmt->execute();
$firstname = "Iulia";
$lastname = "Filipescu";
$email = "[email protected]";
$stmt->execute();
echo "Înregistrări noi create cu succes";
$stmt->close();
$conn->close();
?>
Linii de cod pentru a explica exemplul precedent:
"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"
În SQL-ul nostru, introducem un semn de întrebare (?) unde vrem să înlocuim o valoare întreagă, string, dublă sau blob (integer, string, double or blob).
Apoi, aruncați o privire la funcția bind_param():
$stmt->bind_param("sss", $firstname, $lastname, $email);
Această funcție leagă parametrii la interogarea SQL (SQL query) și îi spune bazei de date care sunt parametrii. Argumentul „sss” listează tipurile de date (types of data) care sunt parametri. Caracterul s spune mysql-ului că parametrul este un șir (string).
Argumentul poate fi unul din următoarele patru tipuri:
i - număr întreg (integer)
d - dublu (double)
s - șir (string)
b - BLOB
Pentru fiecare parametru trebuie să avem una dintre acestea .
Spunând mysql-ului la ce tip de date (type of data) trebuie să se aștepte, reducem la minimum riscul de injecții SQL (SQL injections.).
Dacă dorim să introducem date din surse externe (cum ar fi intrarea utilizatorului (user input)), este foarte important ca datele să fie igienizate ( sanitized) și validate.
Declarații pregătite în PDO (Prepared Statements in PDO)
Următorul exemplu utilizează declarații pregătite și parametri legați (prepared statements and bound parameters) în PDO:
Exemplu (PDO cu declarații pregătite)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // setați modul de eroare PDO la excepție
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // pregătiți parametrii sql și bind
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);
    // introduceți un rând
    $firstname = "Ion";
    $lastname = "Popescu";
    $email = "[email protected]";
    $stmt->execute();
    // introduceți un alt rând
    $firstname = "Maria";
    $lastname = "Gheorghe";
    $email = "[email protected]";
    $stmt->execute();
    // introduceți un alt rând
    $firstname = "Iulia";
    $lastname = "Filipescu";
    $email = "[email protected]";
    $stmt->execute();
    echo "Înregistrări noi create cu succes";
    }
catch(PDOException $e)
    {
    echo "Eroare: " . $e->getMessage();
    }
$conn = null;
?>

PHP - AJAX Introducere

PHP - AJAX Introducere
AJAX este despre actualizarea părților unei pagini web, fără a reîncărca întreaga pagină.
Ce este AJAX?
AJAX = JavaScript asincron și XML.
AJAX este o tehnică pentru crearea de pagini web rapide și dinamice.
AJAX permite actualizarea asincronă a paginilor web, schimbând cantități mici de date cu serverul din culise. Aceasta înseamnă că este posibil să actualizați părți ale unei pagini web, fără a reîncărca întreaga pagină.
Paginile web clasice (care nu utilizează AJAX) trebuie să reîncarce întreaga pagină dacă conținutul ar trebui să se schimbe.
Exemple de aplicații care utilizează AJAX: Google Maps, Gmail, Youtube și Facebook.
AJAX se bazează pe standardele de internet
AJAX se bazează pe standardele de internet și folosește o combinație de:
Obiectul XMLHttpRequest (pentru schimbul de date asincron cu un server)
JavaScript / DOM (pentru afișarea / interacțiunea cu informațiile)
CSS (pentru stilizarea datelor)
XML (adesea folosit ca format pentru transferul de date)
Aplicațiile AJAX sunt independente de browser și de platformă!
Sugestie Google
AJAX a fost popularizat în 2005 de Google, cu Google Suggest.
Google Suggest utilizează AJAX pentru a crea o interfață web foarte dinamică: Când începeți să tastați în caseta de căutare Google, un JavaScript trimite cererea de informații pe un server și serverul returnează o listă de sugestii.
Începeți să utilizați AJAX Today
În tutorialul nostru PHP, vom demonstra modul în care AJAX poate actualiza părți ale unei pagini web, fără a reîncărca întreaga pagină. Scriptul serverului va fi scris în PHP.

PHP Bază de date AJAX

PHP - AJAX și MySQL
AJAX poate fi utilizat pentru comunicarea interactivă cu o bază de date.
Exemplu de bază de date AJAX
Modul în care o pagină web poate obține informații dintr-o bază de date cu AJAX:
Exemplu explicat
Când un utilizator selectează o persoană din lista derulantă, se execută o funcție numită „showUser()”.
Funcția este declanșată de evenimentul onchange.
<html>
<head>
<script>
function showUser(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else {
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","getuser.php?q="+str,true);
        xmlhttp.send();
    }
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
  <option value="">Select a person:</option>
  <option value="1">Petre Georgescu</option>
  <option value="2">Luiza Georgescu</option>
  <option value="3">Ion Suciu</option>
  <option value="4">Georgiana Ionescu</option>
  </select>
</form>
<br>
<div id="txtHint"><b>Informațiile despre persoană vor fi enumerate aici ... </b></div>
</body>
</html>
Verificați dacă persoana este selectată. Dacă nu este selectată nicio persoană (str == ""), ștergeți conținutul txtHint și ieșiți din funcție. Dacă este selectată o persoană, faceți următoarele:
Creați un obiect XMLHttpRequest
Creați funcția care trebuie executată atunci când răspunsul serverului este gata
Trimiteți cererea dezactivată unui fișier de pe server
Observați că la URL se adaugă un parametru (q) (avand conținutul listei derulante)
Fișierul PHP
Pagina de pe server numită de JavaScript-ul precedent este un fișier PHP numit "getuser.php".
Codul sursă din „getuser.php” rulează o interogare (query) împotriva unei baze de date MySQL și returnează rezultatul într-un tabel HTML:
<!DOCTYPE html>
<html>
<head>
<style>
table {
    width: 100%;
    border-collapse: collapse;
}
table, td, th {
    border: 1px solid black;
    padding: 5px;
}
th {text-align: left;}
</style>
</head>
<body>
<?php
$q = intval($_GET['q']);
$con = mysqli_connect('localhost','petre','abc123','my_db');
if (!$con) {
    die('Nu s-a putut conecta: ' . mysqli_error($con));
}
mysqli_select_db($con,"ajax_demo");
$sql="SELECT * FROM user WHERE id = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<table>
<tr>
<th>Prenume</th>
<th>Nume</th>
<th>Vârsta</th>
<th>Orașul natal</th>
<th>Job</th>
</tr>";
while($row = mysqli_fetch_array($result)) {
    echo "<tr>";
    echo "<td>" . $row['Prenume'] . "</td>";
    echo "<td>" . $row['Nume'] . "</td>";
    echo "<td>" . $row['Vârsta'] . "</td>";
    echo "<td>" . $row['Orașul natal'] . "</td>";
    echo "<td>" . $row['Job'] . "</td>";
    echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
</body>
</html>
Când interogarea este trimisă de la JavaScript în fișierul PHP, se întâmplă următoarele:
PHP deschide o conexiune la un server MySQL
Este găsită persoana corectă
Un tabel HTML este creat, umplut cu date și trimis înapoi la marcatorul de locație (placeholder) „txtHint”

Oxizi

Structura, formula generală și nomenclatura oxizilor; oxizi acizi, oxizi bazici, oxizi amfoteri și oxizi indiferenți; proprietăți și metode generale de obținere a oxizilor.

Acizi

Definirea acizilor conform teoriei disociației electrolitice și a teoriei protolitice; hidracizi și oxoacizi; radicali acizi; formula generală și nomenclatura acizilor; proprietățile și reacțiile chimice specifice acizilor; ionizarea acizilor; metode generale de obținere a acizilor. 

Baze

Definirea bazelor conform teoriei disociației electrolitice și teoriei protolitice; formula generală și nomenclatura bazelor; proprietățile și reacțiile chimice specifice bazelor; ionizarea bazelor; metode generale de obținere a bazelor. 

Săruri

Structura și formula generală a sărurilor; săruri neutre, săruri acide și săruri bazice; nomenclatura sărurilor; proprietățile și reacțiile chimice ale sărurilor; metode generale de obținere a sărurilor; neutralizare și hidroliză. 

Hidrogenul

Caracteristici generale ale hidrogenului; formarea ionului de hidrură, H-, și formarea ionului de hidrogen (proton), H+. Răspândirea hidrogenului în natură. Metode de preparare a hidrogenului. Proprietățile fizice și chimice ale hidrogenului. Hidruri. Ortohidrogen și parahidrogen. Hidrogenul atomic. Întrebuințările hidrogenului. Izotopii hidrogenului (protiu, deuteriu, tritiu). 

Apa

Răspândirea apei în natură. Purificarea apei - sedimentare, filtrare, sterilizare. Apele industriale. Distiliarea apei. Apa higroscopică. Proprietățile fizice ale apei. Structura moleculei de apă. Proprietățile chimice ale apei. Hidrați.  

Grupa 18 sau grupa a VIII-a principală

Grupa a VIII-a principală, numerotată VIII A sau 18, cuprinde gazele rare (nobile) heliu, He, neon, Ne, argon, Ar, kripton, Kr, xenon, Xe, radon, Rn. 

 

Grupa 17 sau grupa a VII-a principală

Grupa a VII-a principală, numerotată VII A sau 17, numită și grupa halogenilor, conține următoarele elemente: fluor, F, clor, Cl, brom, Br, iod, I, astatin, At.
 

Grupa 15 sau grupa a V-a principală

Grupa a V-a principală a sistemului periodic, numerotată V A sau 15, cuprinde următoarele elemente: azot, N, fosfor, P, arsen, As, stibiu (antimoniu), Sb, și bismut, Bi. 
 

Grupa 14 sau grupa a IV-a principală

Grupa a IV-a principală a sistemului periodic, numerotată IV A sau 14, cuprinde elementele carbon, C, siliciu, Si, germaniu, Ge, staniu, Sn, și plumb, Pb. 

Grupa 13 sau grupa a III-a principală

Grupa a III-a principală a sistemului periodic, numerotată III A sau 13, cuprinde elementele bor, B, aluminiu, Al, galiu, Ga, indiu, In, și taliu, Tl. 

Grupa 2 sau grupa a II-a principală

Grupa a II-a principală a sistemului periodic, numerotată II A sau 2, cuprinde elementele: beriliu, Be, magneziu, Mg, calciu, Ca, stronțiu, Sr, bariu, și radiu, Ra. Această grupă se mai numește grupa metalelor alcalino-pământoase. 

Grupa 4 sau grupa a IV-a secundară

Grupa a IV-a secundară a sistemului periodic, numerotată IV B sau 4, cuprinde elementele rare titan, Ti, zirconiu, Zr, și hafniu, Hf. 

Grupa 5 sau grupa a V-a secundară

Grupa a V-a secundară a sistemului periodic, numerotată V B sau 5, cuprinde elementele rare vanadiu, V, niobiu, Nb, și tantal, Ta.

Grupa 7 sau grupa a VII-a secundară

Grupa a VII-a secundară a sistemului periodic, numerotată VII B sau 7, cuprinde elementele mangan, Mn, technețiul, Tc, și reniu, Re. 

Grupa 10 sau grupa a VIII-a secundară

Grupa 10 a sistemului periodic, în trecut considerată parte a grupei a VIII-a secundare, alături de grupele 8 și 9, cuprinde elementele nichel, Ni, paladiu, Pd, și platină, Pt. 

Despre Lecții-Virtuale.ro

Lecții-Virtuale este o platformă educațională care oferă suport în vederea pregătirii pentru Evaluare Națională și Bacalaureat la Matematică, Fizică și Chimie. Lecțiile noastre sunt alcătuite din filme și exerciții și probleme cu tot cu rezolvări. Platforma noastră este o soluție ideală pentru școala online. Pentru facilitarea activității profesorilor în cadrul ecosistemului GSuite de la Google am implementat butonul Google Classroom. Scopul nostru este să ne concentrăm pe prezentarea noțiunilor și fenomenelor într-o manieră care să stimuleze înțelegerea și nu memorarea mecanică. Ne propunem să facilităm accesul la conținut educațional de calitate mai ales elevilor cu venituri mai modeste care nu își pemit meditații particulare. Sperăm să vă simțiti bine alături de noi și să invățați lucruri folositoare. Hai România!

Newsletter

Abonează-te la Newsletter pentru a fi la curent cu toate ofertele noastre.

Parteneri

EduApps partener Lectii Virtuale UiPath partener Lectii Virtuale Scoala365 partener Lectii Virtuale CCD Galați partener Lectii Virtuale

2024 © Lecții-virtuale.ro Toate drepturile rezervate
Termeni   Despre   Contact   Confidenţialitate   Cariere Parteneri