Sunteți pe pagina 1din 9

smaranda.belciug@inf.ucv.

ro Laborator 10 Tehnologii Web si Programare Client Server

MySQL

Conexiunea cu baza de date mysql_connect deschide o conexiune cu server-ul MySQL


1. <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) {

smaranda.belciug@inf.ucv.ro
die('Conexiune nereusita: ' . mysql_error()); } echo 'Conexiune reusita'; mysql_close($link); ?> 2. <?php // ne conectam la example.com si la portul 3307 $link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password'); if (!$link) { die('Conexiune nereusita: ' . mysql_error()); } echo 'Conexiune reusita'; mysql_close($link); // ne conectam la localhost la portul 3307 $link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password'); if (!$link) { die('Conexiune nereusita: ' . mysql_error()); } echo 'Conexiune reusita'; mysql_close($link); ?>

mysql_select_db selecteaz o baz de date MySQL


<?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Nu sunt conectat: ' . mysql_error()); } //selecteaz baza de date foo $db_selected = mysql_select_db('foo', $link); if (!$db_selected) { die ('Nu pot sa folosesc foo: ' . mysql_error()); } ?>

Exemplele de mai sus se salveaz ntr-un fiier mysql_inc.php, fiier care urmeaz s fie inclus n fiierul de lucru. Fiierul curent mysql_query trimite un query SQL
1. <?php include('mysql_inc.php'); $result = mysql_query('SELECT * WHERE 1=1'); if (!$result) {

smaranda.belciug@inf.ucv.ro
die(Query prost: ' . mysql_error()); } ?> 2. <?php $firstname = 'fred'; $lastname = 'fox'; // Formuleaza un Query // Aceasta este cea mai buna metoda de a executa un query SQL $query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'", mysql_real_escape_string($firstname), mysql_real_escape_string($lastname)); // executa query-ul $result = mysql_query($query); // verifica rezultatul // Acest mesaj arata exact query-ul trimis MySQL-luli si eroarea. Este excelent pentru debugging if (!$result) { $message = 'Query invalid: ' . mysql_error() . "\n"; $message .= 'Tot query-ul: ' . $query; die($message); }

while ($row = mysql_fetch_assoc($result)) { echo $row['firstname']; echo $row['lastname']; echo $row['address']; echo $row['age']; } mysql_free_result($result); ?>

Sintaxa SELECT
SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr, ... [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name'] [FROM table_references [WHERE where_definition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_definition]

smaranda.belciug@inf.ucv.ro
[ORDER BY {col_name | expr | position} [ASC | DESC] , ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [FOR UPDATE | LOCK IN SHARE MODE]]

INSERT
<?php include('mysql_inc.php'); $cerereSQL = "INSERT INTO `formular` (`nume` , `prenume`, `varsta`) VALUES ('Popa', 'Ioana', '20')"; mysql_query($cerereSQL); echo 'Am adaugat valorile in baza de date'; ?>

Sintaxa INSERT
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] Sau INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] Sau INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

UPDATE
<?php include('mysql_inc.php'); $cerereSQL = "UPDATE `formular` SET nume='nume', prenume='prenume' WHERE nume='Popa' "; mysql_query($cerereSQL); echo 'Am modificat valorile campurilor nume si prenume unde numele este orice in baza de date'; ?>

Sintaxa UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]

smaranda.belciug@inf.ucv.ro
[ORDER BY ...] [LIMIT row_count] Sau UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]

DELETE
<?php include('mysql_inc.php'); $cerereSQL = "DELETE FROM `formular` WHERE nume='nume'"; mysql_query($cerereSQL); echo 'Am sters coloana cu campul nume = nume din baza de date'; ?>

Sintaxa DELETE
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [WHERE where_definition] [ORDER BY ...] [LIMIT row_count] Sau DELETE [LOW_PRIORITY] [QUICK] [IGNORE] tbl_name[.*] [, tbl_name[.*] ...] FROM table_references [WHERE where_definition] Sau DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name[.*] [, tbl_name[.*] ...] USING table_references [WHERE where_definition]

FORMS Exemple:
1. <html> <head> <title>Breaking News</title> <script type="text/javascript"> function mail(id) { window.open("mail.php?id=" + id, "info", "width=250,height=250,scrollbars=0,resizable=0") } </script> </head>

smaranda.belciug@inf.ucv.ro

<body bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#800080" alink="#ff0000"> <a href="#" onclick="mail(<?php echo $id; ?>);"> Mail this article to a friend</a> Article content goes here... </body> </html> <?php if (isset($_POST['submit'])) { // mail header si body $headers = "FROM:editor@example.com\n"; $body = $_POST['name']." thought you'd be interested in this article:\nhttp://www.example.com/article.html?id=".$_POST['id']; // url-ul articolului mail($_POST['rec ipient'],"Example.com News Article",$body,$headers); // anuntarea user-ului echo "The article has been mailed to ".$_POST['recipient']; } ?> <p> Email this article to a friend! </p> <form action="mail.html" method="post"> <input type="hidden" name="id" value="<?php echo $_GET['id'];?>" /> <p> Recipient email:<br /> <input type="text" name="recipient" size="20" maxlength="40" value="" /> </p> <p> Your name:<br /> <input type="text" name="name" size="20" maxlength="40" value="" /> </p> <input type="submit" name="submit" value="Send Article" /> </form>

Dezvoltarea unei aplicaii Web cu baze de date Planificarea aplicaiei Selectarea i organizarea datelor Design-ul bazei de date Scrierea aplicaiei

Identificarea cerinelor Colectarea numelor i adreselor utilizatorilor pentru a avea o list cu utilizatori Oferirea de informaii despre produse utilizatorilor - un catalog. Vnzarea de produse online Dup identificarea clar a scopului general al aplicaiei, trebuie fcut o list cu ceea ce dorii exact s fac aplicaia. De exemplu: dac dorim s avem o baza de date cu numele clienilor i adresele lor atunci aplicaia noastra trebuie s aib: 6

smaranda.belciug@inf.ucv.ro Un formular pe care clienii s-l completeze O metoda de stocare a informaiilor ntr-o baz de date

Dac dorim s vindem produse online, atunci ar trebui: S oferim informaii despre produse clienilor S motivm clienii s cumpere produsele Clientul s poat comanda online produsul Clientul s poat plti online S validam plata astfel nct s fim siguri c vom primi banii S trimitem comand cui trebuie S oferim informaii despre produse clienilor S afim o list cu categoriile de produse. Fiecare categorie are un link Cnd un client face click pe link-ul unei categorii, lista de produse din acea cateogorie este afiat. Fiecare produs este un link. Cnd clientul face click pe produs se afieaz informaii despre acel produs. S motivm clienii s cumpere produsele Trebuie s avem descrieri foarte bune ale produselor, pentru a arata calitatea lor superioar Trebuie s folosim poze frumoase pentru a promova produsele S avem o brosur cu culorile n care vin produselor S oferim discount-uri. Clientul s poat comanda online produsul S avem un buton pe care clienii s poat apasa pentru a indica intenia lor de a cumpara S avem un formular care colecteaz datele necesare produsului: mrime, culoare etc. S calculm i s afiam costul total S afim preul transportului S afim TVA-ul S avem un formular n care s fie completat adresa de livrare i cea de facturare Clientul s poat plti online S avem un buton pe care dac se face click s se poat plti cu cardul de credit S avem un formular care colecteaz datele clientului Pet Shop Clienii nu pot cumpar online animale. Alte produse da. Clienii pot s selecteze orice animal pentru a vedea informaia despre el Informaia despre animal este stocat n baza de date 7

smaranda.belciug@inf.ucv.ro Members only o Registration area o Validare date o Stocare date Login section o Formular de login o Verific baza de date dup user

Baza de date n primul rnd n momentul n care construim o baz de date, trebuie s identificm informaiile potrivite ce trebuie stocate n ea. Pentru a colecta informaii de la utilizatori trebuie s folosim formulare scurte, si n care nu toate cmpurile trebuie completate. Pet Catalog o Numele animalului o Descrierea animalului o O poza a animalului o Preul animalului Members Only: o Nume o Adres o Telefon o Fax o E-mail Cum construim o baza de date? 1. Gsim un nume potrivit pentru ea 2. Identificm obiectele 3. Definim tabele pentru obiecte 4. Identificm atributele fiecrui obiect 5. Identificm cheia primar Procesul de design al catalogului de animale 1. Numim baza de date PetCatalog 2. Identificm obiectele. Lista de informaii este: o Numele animalului o Descrierea animalului o O poz a animalului o Pretul animalului o Categoria animalului Toate informaiile sunt despre animale, deci avem un singur obiect... Pet. 8

smaranda.belciug@inf.ucv.ro 3. Definim un tabel pentru fiecare obiect. Crem un tabel numit Pet. 4. Identificm atributele pentru fiecare obiect. o Numele animalului: un singur atribut (border collie). Totui, un magazin de animale o sa aib mai mult de un cine border collie, deci trebuie tabelul nostru s aib i o cheie unic o ID-ul animalului o Descrierea animalului: dou atribute: descrierea n cuvinte a animalului i culoarea animalului. o Poza animalului: o cale ctre fiierului care conine poza animalului. o Preul animalului o Categoria animalului: dou atribute: numele categoriei i descrierea categoriei Informaia despre categorie include o descriere a categoriei. Deoarece fiecare categorie conine mai multe animale, dac punem un atribut category_description n tabelul Pet, ar nsemna ca acea descriere s apar n mai multe rnduri. Este mult mai eficient s definim Pet Category ca un obiect, deci un alt tabel. La fel si pentru culoare. Am adugat tabelele PetType i PetColor. 5. Definirea coloanelor Tabelul Pet are urmtoarele coloane: o petID: numr unic asignat fiecrui animal o petName: numele animalului o petType: categoria animalului. Acesta este coloana care face legtura dintre animal i linia corect din tabelul PetType o petDescription: descrierea animalului o price: preul animalului o pix: numele fiierului care conine poza animalului Tabelul PetType: o petType: cheie primara o typeDescription: descrierea tipului de animal Tabelul PetColor are cte o linie pentru fiecare culoare. o petName: numele animalului (face legatura cu tabelului Pet) o petColor: culoarea animalului 6. Identificarea cheii primare o Cheia primar pentru tabelul Pet este petID o Cheia primar pentru tabelul PetType este petType o Cheia primar pentru tabelul PetColor este format petName i petColor mpreun