Sunteți pe pagina 1din 13

MySQL - Notiuni de baza

Bazele de date sunt folosite pentru stocarea informatiilor in vederea


furnizarii ulterioare in functie de solicitarea primita.
MySQL este un sistem de baze de date functional independent.
In PHP exista functii pentru toate operatiile executate asupra bazelor de date
MySQL.
Administrarea MySQL se poate face din linie de comanda sau folosind
browserul si accesand aplicatia numita PHPMyAdmin scrisa in PHP.
Cele mai uzuale operatii cu bazele de date sunt:
Comanda Semnificatie
CREATE creaza o baza de date sau un tabel
DROP sterge o baza de date sau un tabel
INSERT adauga inregistrari intr-un tabel
DELETE sterge inregistrari dintr-un tabel
UPDATE updateaza inregistrarile dintr-un tabel
SELECT selecteaza un tabel
ALTER alterarea unui tabel
In MySQL spatiul alocat pe discul serverului este functie de tipul de date.
Cateva din tipurile de date folosite in bazele de date MySQL sunt:
Tip Semnificatie
int() numar intreg 32 biti
bigint() numar intreg 64 biti
tinyint() numar intreg (-128 la 127 sau 0 la 255) 8 biti
mediumint() numar intreg 24 biti
smallint() numar intreg 16 biti
char() sectiune cu lungime fixa de la 0 la 255 caractere
varchar() sectiune cu lungime variabila de la 0 la 255 caractere
float() numar mic cu virgula flotanta
double numar mare cu virgula flotanta
text sir cu maximum 65535 caractere
date() data in format YYYY-MM-DD
date data in format YYYY-MM-DD HH:MM:SS
time ora in format HH:MM:SS
Pentru ca baza de date sa fuctioneze mai bine coloanelor li s-au adaugat
modificatori de coloana.
Tipul de date intregi incep de la valori negative la pozitive. Daca se adauga
optiunea UNSIGNED, care este un modificator de coloana, nu vor mai fi
valori negative ci vor incepe de la 0.
Alti modificatori sunt:
AUTO_INCREMENT functioneaza cu orice tip intreg. La fiecare rand nou
adaugat in baza de date numarul asociat va fi incrementat.
NULL inseamna fara valoare (diferit de spatiu sau zero).
NOT NULL inseamna ca orice inregistrare va fi considerata ceva.
PRIMARY KEY este rolul primei coloane din tabel, totodata reprezentand
elementul de referinta pentru fiecare linie.

Conectarea la baza de date

De cate ori vom lucra cu MySQL va trebui sa ne conectam la baza de date


folosind o anume sintaxa. Vom salva aceasta secventa de cod cu numele
conexiune.php putand fi folosita ulterior in mai multe scripturi utilizand
functia include().
/* urmeaza fiesierul conexiune.php */
<?php
$hostname="localhost";
$username="root";
$password="pass";
$database="test";
$conexiune=mysql_connect($hostname,$username,$password)
or die ("Nu ma pot conecta la baza de date");
$bazadate=mysql_select_db($database,$conexiune)
or die ("Nu gasesc baza de date");
?>
mysql_connect() este functia prin care ne conectam la baza de date cu
urmatorii paramatrii: numele serverului, nume utilizator si parola pentru
conectarea la baza de date.
Variabila $conexiune va avea o valoarea TRUE sau FALSE functie de
rezultatul conectarii la serverul MySQL folosind functia mysql_connect(),
iar in cazul esuarii va afisa mesajul continut de constructia die().
mysql_select_db este functia care stabileste baza de date la care ne vom
conecta, avand ca parametrii numele bazei de date si identificatorul de acces
la conexiunea catre serverul MySQL.
In mod similar variabila $bazadate folosind functia mysql_select_db va afisa
in cazul negasirii bazei de date mesajul continut de die.
Puteti modifica variabilele din fisierul conexiune.php in functie de
configurarile propriei baze de date:
$hostname=adresa serverului, de cele mai multe ori este localhost dar pentru
siguranta intrebati administratorul serverului
$username=username-ul de conectare la baza de date
$password= parola de conectare la baza de date
$database=numele bazei de date
Dupa ce operatiile dorite au fost executate cu baza de date va trebui sa
inchidem conexiunea folosind functia mysql_close() avand ca argument
datele de acces la serverul MySQL.
mysql_close($conexiune);
Anterior am salvat intr-un fisier php numele utilizator si parola care poate
parea un lucru riscant. Codul php este interpretat de server si doar rezultatul
este afisat, deci datele continute nu vor fi afisate in browser vizitatorului.

CREATE TABLE - Crearea tabelelor

Bazele de date contin tabele. Aceste tabele sunt similare cu cele din HTML
continand rinduri si coloane. Fiecare diviziune se numeste celula sau camp
si are anumite propritati.
Fiecare tabel din baza de date are un nume sau titlu.
Fiecare coloana din tabel are un nume sau titlu.
Sintaxa pentru crearea tabelului este:
CREATE TABLE nume_tabel (coloana_1, coloana_2,..., coloana_n);
Coloanele vor fi separate prin virgula iar fiecare coloana va avea un nume si
tip.
Pentru a crea un tabel mai intai includem in script fisierul anterior
conexiune.php de conectare la baza de date si apoi folosim functia CREATE
TABLE.
NOTA: In urmatoarele exemple nu voi mai mentiona ca includ acest fisier
dar se va subintelege acest lucru de cate ori voi face o operatie cu baza de
date.
mysql_query este o functie folosita pentru interogarea unei baze de date.
Foloseste parametrii: cererea emisa serverului MySQL si identificatorul de
acces la baza de date.
Exemplu: cream tabelul proba cu 3 coloane. Prima coloana este id de tip
PRIMARY KEY de 3 caractere, a doua nume de 20 caractere tip varchar iar a
treia prenume de 40 caractere tot varchar. Inainte de a crea tabelul il
stergem daca el exista deja.
/* urmeaza fisierul create.php */
<?php
include "conexiune.php";
$delete="DROP TABLE IF EXISTS proba";
mysql_query($delete, $conexiune);
$table="CREATE TABLE proba (
id int(3) NOT NULL AUTO_INCREMENT,
nume varchar(20) NOT NULL ,
prenume varchar(40) NOT NULL ,
PRIMARY KEY (id)) TYPE=MyISAM";
if(mysql_query($table)){
echo "Tabelul a fost creat";
}
else{
echo "Tabelul nu a fost creat";
}
mysql_close($conexiune);
?>
Functie de valoarea mysql_query este afisat succesul sau insuccesul crearii
tabelului.

INSERT - Introducere date

INSERT este comanda pentru introducerea datelor in baza de date.


Cel mai frecvent mod de introducere a datelor este preluarea lor
dintr-un formular adecvat structurii bazei de date.

Sintaxa pentru introducerea datelor in tabelul bazei de date este:

INSERT INTO nume_tabel (coloana_1, coloana_2,..., coloana_n)


values ('valoare_1','valoare_2',...,'valoare_n');

Exemplu: introducem date intr-un formular cu 2 campuri nume si


prenume si apoi cu scriptul insert.php datele se introduc in baza de
date.

/* urmeaza fisierul adaugare.html */


<html>
<head><title>Formular</title>
</head>
<body>
<b>Adaugare inregistrari</b>
<form method="POST" action="insert.php">
Nume: <input type="text" name="nume"><br>
Prenume: <input type="text" name="prenume"><br>
<input type="submit" value="Trimite">
</form>
</body>
</html>

/* urmeaza fisierul insert.php */


<?php
include "conexiune.php";

$nume=$_POST['nume'];
$prenume=$_POST['prenume'];

$query="INSERT INTO proba (nume, prenume) VALUES


('$nume','$prenume')";
if (!mysql_query($query)) {
die(mysql_error());
} else {
echo "datele au fost introduse";
}
mysql_close($conexiune);
?>

In functie de valoarea mysql_query este afisat un mesaj privind


introducerea datelor in tabel.

In tutorialul de PHP am discutat ca asociem un nume (name) fiecarui


camp din formular. La apasarea butonului de trimitere datele sunt
preluate de un script care poate identifica datele functie de campul in
care au fost introduse.

In exemplul de mai sus datele introduse in campul nume din formular


sunt preluate folosind variabila $_POST (pentru ca metoda folosita in
formular a fost POST).

SELECT - Preluarea datelor


Proprietatea SELECT poate fi utilizata intr-o comanda mysql_query
pentru a alege anumite informatii din tabelul bazei de date.
Sintaxa pentru introducerea datelor in tabelul bazei de date este:
$sql=mysql_query("SELECT * FROM nume_tabel");
Pentru a afisa fiecare rand din tabel se foloseste o bucla while si
comanda mysql_fetch_row.
Exemplu: afisarea intregului continut al bazei de date
/* urmeaza fisierul select.php */
<?php
include "conexiune.php";
$sql=mysql_query("SELECT * FROM proba");
echo "<table border=1>";
echo "<tr><td>ID</td><td>Nume</td><td>Prenume</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo
"<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>
Datele au fost afisate fiecare intr-o celula a unui tabel.
Folosind functia mysql_num_rows($sql) putem afla numarul de linii
continute de baza de date.
Exemplu: acelasi exemplu plus numarul de linii al bazei de date
/* urmeaza fisierul select1.php */
<?php
include "conexiune.php";
$sql=mysql_query("SELECT * FROM proba");
$rows=$mysql_num_rows($sql);
echo "<b>$rows</b> inregistrari in baza de date<p>";
echo "<table border=1>";
echo "<tr><td>ID</td><td>Nume</td><td>Prenume</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo
"<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>
Exemplu: cautarea in baza de date dupa o anumita inregistrare
folosind conditia WHERE.
/* urmeaza fisierul cautare.html */
<html>
<head><title>Cautare</title>
</head>
<body>
<b>Cautare inregistrari</b>
<form method="POST" action="where.php">
Numele cautat: <input type="text" name="nume1"><br>
<input type="submit" value="Trimite">
</form>
</body>
</html>
/* urmeaza fisierul where.php */
<?php
include "conexiune.php";
$nume1=$_POST['nume1'];
$sql=mysql_query("SELECT * FROM proba WHERE
nume='$nume1'");
echo "<table border=1>";
echo "<tr><td>ID</td><td>Nume</td><td>Prenume</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo
"<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>

Conditionale

Conditionalele sunt operatori care ne permit sa particularizam


interogarea bazei de date.
Operator Semnificatie
= egalitate
< mai mic
> mai mare
<= mai mic sau egal
>= mai mare sau egal
!= diferit de
IS NOT NULL are o valoare
IS NULL nu are valoare
BETWEEN in interiorul unui domeniu dat
NOT BETWEENin afara unui domeniu dat
OR una din cele doua ecuatii este adevarata
|| una din cele doua ecuatii este adevarata
AND amandoua ecuatiile sunt adevarate
&& amandoua ecuatiile sunt adevarate
NOT amandoua ecuatiile sunt false
! amandoua ecuatiile sunt false
Exemplu: cautam in baza de date folosind doua campuri obligatorii
(AND, &&)
/* urmeaza fisierul cautare1.html */
<html>
<head><title>Cautare 1</title>
</head>
<body>
<b>Cautare inregistrari</b>
<form method="POST" action="where1.php">
Numele cautat: <input type="text" name="nume1"><br>
Prenumele cautat: <input type="text" name="prenume1"><br>
<input type="submit" value="Trimite">
</form>
</body>
</html>
/* urmeaza fisierul where1.php */
<?php
include "conexiune.php";
$nume1=$_POST['nume1'];
$prenume1=$_POST['prenume1'];
$sql=mysql_query("SELECT * FROM proba WHERE
nume='$nume1' && prenume='$prenume1'");
echo "<table border=1>";
echo "<tr><td>ID</td><td>Nume</td><td>Prenume</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo
"<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>

LIKE si NOT LIKE


Daca dorim sa facem o cautare mai generala in baza de date, introducand doar
cateva caractere, putem folosi simbolurile LIKE sau NOT LIKE. Caracterul _ anunta
ca rezultatul va contine inca un caracter in plus iar % inlocuieste zero sau mai multe
caractere. Acestea pot fi adaugate la inceput, la sfarsit sau in ambele parti.

Exemplu: cautare generala folosind LIKE si caracterul % si la inceput si la sfarsit

/*urmeazafisierulcautare2.html*/
<html>
<head><title>Cautare2</title>
</head>
<body>
<b>Cautareinregistrari</b>
<formmethod="POST"action="where2.php">
Numelecautat:<inputtype="text"name="nume1"><br>
<inputtype="submit"value="Trimite">
</form>
</body>
</html>

/*urmeazafisierulwhere2.php*/
<?php
include"conexiune.php";

$nume1=$_POST['nume1'];

$sql=mysql_query("SELECT*FROMprobaWHEREnumeLIKE'%$nume1%'");

echo"<tableborder=1>";
echo"<tr><td>ID</td><td>Nume</td><td>Prenume</td></tr>";
while($row=mysql_fetch_row($sql)){
echo"<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo"</table>";

mysql_close($conexiune);
?>

UPDATE

Putem modifica valoarea unei inregistrari din baza de date pentru un


anume id cu urmatoarea sintaxa:
UPDATE nume_tabel SET coloana_1='$nou_coloana_1',
coloana_2='$nou_coloana_2',..., coloana_n='$nou_coloana_n'
WHERE id='$nou_id';
Cunoscand valoarea identificatorului id al unei inregistrari putem
actualiza o inregistrare in baza de date, dar mai inainte trebuie sa
afisam inregistrarile pentru a selecta care se potrivesc solicitarilor
noastre.
Primul fisier va afisa sub forma unui formular fiecare inregistrare din
baza de date. Campurile formularelor sunt completate cu valorile
corespunzatoare fiecarei inregistrari, ele putand fi modificate.
/* urmeaza fisierul update.php */
<?php
include "conexiune.php";
$query="SELECT * FROM proba WHERE id='$id'";
$result = mysql_query("SELECT * FROM proba");
$num=mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$id=mysql_result($result,$i,"id");
$nume=mysql_result($result,$i,"nume");
$prenume=mysql_result($result,$i,"prenume");
?>
<form action="updated.php" method="post">
<input type="hidden" name="ud_id" value="<? echo "$id";?>">
Nume: <input type="text" name="ud_nume" value="<? echo
"$nume";?>">
Prenume: <input type="text" name="ud_prenume" value="<?
echo "$prenume";?>">
<input type="Submit" value="Modifica">
</form>
<?php
++$i;
}
?>
Al doilea fisier preia datele modificate si le suprascrie in baza de
date.
/* urmeaza fisierul updated.php */
<?php
include "conexiune.php";
$query="UPDATE proba SET nume='$ud_nume',
prenume='$ud_prenume' WHERE id='$ud_id'";
$checkresult = mysql_query($query);
if ($checkresult) {
echo "Modificare efectuata";
} else {
echo "Modificare neefectuata";
}
mysql_close();
?>

DELETE

Stergerea poate fi facuta folosind id-ul inregistrarii dorite cu sintaxa:


DELETE FROM nume_tabel WHERE id='$id';
Primul fisier va contine un formular prin care introducem datele care
vor fi cautate in baza de date.
/* urmeaza fisierul stergere.html */ <html>
<head><title>Stergere inregistrari</title>
</head>
<body>
<b>Cautare inregistrari in vederea stergerii</b>
<p>
<form method="POST" action="delete.php">
Numele cautat: <input type="text" name="nume"><br>
<input type="submit" value="Trimite">
</form>
</body>
</html>
Al doilea fisier va afisa rezultatul cautarii si un formular in care vom
completa id-ul inregistrarii care dorim s-o stergem.
/* urmeaza fisierul delete.php */
<?php
include "conexiune.php";
$nume=$_POST['nume'];
$sql=mysql_query("SELECT * FROM proba WHERE nume LIKE
'%$nume%'");
echo "<table border=\"1\">";
echo "<tr><td>ID</td><td>Nume</td><td>Prenume</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo
"<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>
<p>
<form method="POST" action="delete1.php">
ID-ul inregistrarii ce va fi stearsa: <input type="text" name="id"
size="3"><br>
<input type="submit" value="Trimite">
</form>
Al treilea fisier preia id-ul dorit si sterge respective inregistrare.
/* urmeaza fisierul delete1.php */
<?php
include "conexiune.php";
$id=$_POST['id'];
$sql=mysql_query("DELETE FROM proba WHERE id='$id'");
if (!$sql) {
die(mysql_error());
} else {
echo "datele au fost sterse";
}
mysql_close($conexiune);
?>
Web safe colors

FFFFFF FFFFCC FFFF99 FFFF66 FFFF33 FFFF00


FFCCFF FFCCCC FFCC99 FFCC66 FFCC33 FFCC00
FF99FF FF99CC FF9999 FF9966 FF9933 FF9900
FF66FF FF66CC FF6699 FF6666 FF6633 FF6600
FF33FF FF33CC FF3399 FF3366 FF3333 FF3300
FF00FF FF00CC FF0099 FF0066 FF0033 FF0000
CCFFFF CCFFCC CCFF99 CCFF66 CCFF33 CCFF00
CCCCFF CCCCCC CCCC99 CCCC66 CCCC33 CCCC00
CC99FF CC99CC CC9999 CC9966 CC9933 CC9900
CC66FF CC66CC CC6699 CC6666 CC6633 CC6600
CC33FF CC33CC CC3399 CC3366 CC3333 CC3300
CC00FF CC00CC CC0099 CC0066 CC0033 CC0000
99FFFF 99FFCC 99FF99 99FF66 99FF33 99FF00
99CCFF 99CCCC 99CC99 99CC66 99CC33 99CC00
9999FF 9999CC 999999 999966 999933 999900
9966FF 9966CC 996699 996666 996633 996600
9933FF 9933CC 993399 993366 993333 993300
9900FF 9900CC 990099 990066 990033 990000
66FFFF 66FFCC 66FF99 66FF66 66FF33 66FF00
66CCFF 66CCCC 66CC99 66CC66 66CC33 66CC00
6699FF 6699CC 669999 669966 669933 669900
6666FF 6666CC 666699 666666 666633 666600
6633FF 6633CC 663399 663366 663333 663300
6600FF 6600CC 660099 660066 660033 660000
33FFFF 33FFCC 33FF99 33FF66 33FF33 33FF00
33CCFF 33CCCC 33CC99 33CC66 33CC33 33CC00
3399FF 3399CC 339999 339966 339933 339900
3366FF 3366CC 336699 336666 336633 336600
3333FF 3333CC 333399 333366 333333 333300
3300FF 3300CC 330099 330066 330033 330000
00FFFF 00FFCC 00FF99 00FF66 00FF33 00FF00
00CCFF 00CCCC 00CC99 00CC66 00CC33 00CC00
0099FF 0099CC 009999 009966 009933 009900
0066FF 0066CC 006699 006666 006633 006600
0033FF 0033CC 003399 003366 003333 003300
0000FF 0000CC 000099 000066 000033 000000

S-ar putea să vă placă și