ChuckY's-ZoNe Community™
Doriți să reacționați la acest mesaj? Creați un cont în câteva clickuri sau conectați-vă pentru a continua.


Bine ati venit pe forumul serverului ChuckYs-ZoNe !
 
AcasaAcasa  Donatii  Parteneriat  Ultimele imaginiUltimele imagini  CăutareCăutare  ÎnregistrareÎnregistrare  ConectareConectare  

 

 PHP si baze de date (in special MySQL)

In jos 
AutorMesaj
ChuckY
Fost Administrator
Fost Administrator
ChuckY


Numarul mesajelor : 152
Varsta : 31
Localizare : Cluj-Napoca
Warn :
PHP si baze de date (in special MySQL) Left_bar_bleue0 / 1000 / 100PHP si baze de date (in special MySQL) Right_bar_bleue


PHP si baze de date (in special MySQL) Empty
MesajSubiect: PHP si baze de date (in special MySQL)   PHP si baze de date (in special MySQL) Icon_minitimeMar Dec 16, 2008 8:29 am

PHP & Baze de date(in special MySQL)

In componenta unui website ceva mai complex sau a unei aplicatii web intra si o BAZA DE DATE.
Aceasta baza de date poate fi de multe tipuri, eu voi prezenta doar tipul de baza de date numit "MySQL" si/sau folosirea fisierelor plain text pentru a stoca informatiile vitale.

Conectarea:

Pentru a stii sistemul de unde sa citeasca datele, trebuie sa ne conectam la baza de date, pentru aceasta trebuie sa folosim urmatorul cod:

Cod:
mysql_connect(HOST,USER,PAROLA)

Aceasta exte sintaxa generala. Evident, pentru ce avem noi nevoie nu este deajuns, deoarece prin aceasta comanda ne-am conectat la serverul MySQL,
DAR pe acel server pot exista un numar foarte mare de baze de date, limitat doar de capacitatea serverului.

Cod:
mysql_select_db(BAZA_DATE, IDENTIFICATOR_CONEXIUNE)

ATENTIE: Codurile de mai sus sunt coduri generale, pentru a intelege de ce date are nevoie PHP-ul sa le trimita serverului MySQL.
Codul complet arata cam asa:

Cod:
$conexiune = mysql_connect('host_baza_date','user_baza_date','parola_baza_date');
   mysql_select_db('nume_baza_date', $conexiune);

Ok, acum ne-am conectat la baza de date, sa trecem la ceva mai interesant.

Crearea unei baze de date noi
Pentru a crea o noua baza de date, vom folosi urmatorul cod PHP:

Cod:
$sql = 'CREATE DATABASE bd_noua';
if(mysql_query($sql)){
   echo 'Baza de date numita <strong>bd_noua</strong> a fost creata cu succes';
}
else {
   echo 'Am intampinat o eroare in timp ce incercam sa creez baza de date numita <strong>bd_noua</strong>';
}

Ok, am creat o baza de date noua (asta daca avem permisiuni... pe hosting-urile profesionale,
atat bazele de date cat si utilizatorii trebuiesc create in panoul de control).

Crearea unui tabel intr-o baza de date
Uneori avem nevoie sa introducem un nou tabel intr-o baza de date (De exemplu la instalarea scriptului).
Sintaxa folosita pentru aceasta instructiune exte urmatoarea:

Cod:
REATE TABLE `tabela`
(
`camp1` tip_date1,
`camp2` tip_date2,
.....
.....
`campN` tip_dateN,
) ENGINE = motor_stocare;

unde "tabela" este numele tabelului ce se doreste a fi creat, camp1,2,3,.....,N sunt numele campurilor
iar tip_date1,2,3,......,N sunt tipurile de date specifice fiecarui rand.
Tipurile de date pot fi:

Cod:
  int(lungime)
  smallint(lungime)
  tinyint(lungime)
  mediumint(lungime)
  bigint(lungime)
  char(lungime)
  varchar(lungime)
  tinytext    - mentine un text de pana la 255 caractere lungime.
  text      - mentine un text de pana la 65535 caractere lungime.
  blob      - mentine un text de pana la 65535 caractere lungime.
  mediumtext  - mentine un text de pana la 16777215 caractere lungime.
  mediumblob  - mentine un text de pana la 16777215 caractere lungime.
  longtext  - mentine un text de pana la 4294967295 caractere lungime.
  longblob  - mentine un text de pana la 4294967295 caractere lungime.

motor_stocare indica serverului MySQL in ce format sa salveze tabela in baza de date,
recomand folosirea INNODB pentru aceasta, datorita vitezei semnificativ mai mare fata se celelalte motoare de stocare.
Pentru campurile de tip integer mai putem seta AUTO_INCREMENT (dupa cum ii spune si numele, la fiecare interogare, numarul de ordine creste cu 1)
De asemenea mai putem seta si un "Primary KEY", care trebuie sa fie OBLIGATORIU integer.
Spre exemplu:

Cod:
CREATE TABLE `elevi_rops`
   (
      `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
      `nume` VARCHAR(100) NOT NULL
   } ENGINE = INNODB;

Pentru a crea efectiv acel tabel trebuie sa il executam cu ajutorul PHP:

Cod:
$sql='CREATE TABLE `elevi_rops`
   (
      `id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
      `nume` VARCHAR(100) NOT NULL
   } ENGINE = INNODB;';
if(mysql_query($sql)){
   echo "Tabelul a fost adaugat cu succes in baza de date.";
}
else{
   echo "Nu am putut adauga tabelul.";
}

Stergerea unui tabel
Pentru a sterge un tabel dintr-o baza de date se foloseste urmatoarea comanda SQL:

Cod:
DROP TABLE `nume_tabel`

ATENTIE!!! Toate comenzile SQL sunt IREVERSIBILE, daca ati sters ceva din greseala datele nu mai pot fi recuperate.
codul php in cazul asta este rumatorul:

Cod:
$sql = "DROP TABLE `nume_tabel`";
   if(mysql_query($sql)){
      echo "Tabel sters cu succes";
   }
   else{
      echo "Nu am putut sterge tabelul din baza de date";
   }

Golirea unui tabel (stergerea tuturor valorilor din el FARA a modifica in vreun fel structura acestuia)

De multe ori avem nevoie de un script care sa goleasca TOATE datele dintr-un tabel, dar sa nu modifice cu nimic structura acestuia (De exemplu cand vrem sa reinstalam un script dar nu vrem sa mai rulam tot scriptul de instalare).
Pentru asa ceva s-a creat functia TRUNCATE.
Comanda SQL:

Cod:
TRUNCATE `tabel`

Codul PHP arata cam asa:

Cod:
$sql = "DROP TABLE `nume_tabel`";
   if(mysql_query($sql)){
      echo "Tabelul a fost golit cu succes";
   }
   else{
      echo "Nu am putut goli datele din tabel";
   }

Conditii pentru interogari.
In 90% din cazuri nu putem face interogarile pe baza codului general, acestea au nevoie de criterii bine definite.
ORICE criteriu de interogare va incepe cu "WHERE", numele campului se trece intre " ` "
iar valoarea intre 2 apostroafe " ' ", exceptie fac valorile de tip integer, unde apostroful este optional.
Operatori acceptati:
<selecteaza> - selecteaza toate valorile mai mari decat valoarea specificata (Valabil pentru numere).
<selecteaza>= - selecteaza toate valorile mai mari sau egale cu valoarea specificata (Valabil pentru numere).
= - selecteaza toate valorile egale cu valoarea specificata (Valabil pentru numere).
LIKE - Acesta este un operator special care face posibila interogarea cunoscand doar o parte din rezultat.
LIKE `%valoare` - Selecteaza TOATE campurile a caror valoare se termina cu 'valoare'.
LIKE `valoare%` - Selecteaza TOATE campurile a caror valoare incepe cu 'valoare'.
LIKE `%valoare%` - Selecteaza TOATE campurile a caror valoare cuprinde si 'valoare' in interior.

Sintaxa SQL arata cam asa:

Cod:
WHERE `camp` OPERATOR `valoare`

Nota: Se pot folosi mai multe conditii, cu operatorul AND si/sau OR intre ele(nu conteaza numarul lor, pot fi 2, 20, 200, 2000, depinde de necesitati).
Ex:

Cod:
SELECT * FROM `rops` WHERE `an_nastere` <1988> 2 LIMIT 10

Acesta se foloseste pentru a completa urmatoarele comenzi:
- SELECT
- UPDATE
- DELETE

Selectarea anumitor date sintr-un tabel
Este probabil cea mai importanta comanda SQL si cea mai utilizata.
Se foloseste pentru a selecta datele din baza de date pentru afisare sau prelucrare.
Sintaxa SQL generala:

Cod:
SELECT ce FROM `tabel`

"ce" poate fi un anumit rand din tabel sau "*", caz in care se va selecta TOT continutul tabelului (toate randurile)
Aceasta este singura comanda SQL care nu returneaza o valoare de tip boolean (true/false), ci un array cu date,
deci vom avea nevoie sa folosim o noua variabila pentru a stoca datele ce trebuiesc prelucrate.
Codul PHP general este urmatorul:

Cod:
$sql = "SELECT * FROM `tabel`";
   $rezultat = mysql_query($sql);

Alaturi de sintaxa generala mai putem avea conditii si limite.
Conditiile le-am explicat putin mai sus.
Limitele
Sintaxa generala:

Cod:
LIMIT inc,sf

unde:
inc = numarul de ordine al rezultatului de unde incepe selectarea
sf = numarul de ordine al rezultatului unde se termina selectarea
In cazul in care inc=0(0 = primul element din array-ul rezultatului),
atunci putem renunta la inc, deci sintaxa va fi urmatoarea:

Cod:
LIMIT sf

Aici sf = numarul de rezultate intoarse de interogare.
Nota:
Daca tabelul contine 10 valori care respecta criteriile si noi interogam cu LIMIT 3,50 , comanda ne va returna 6 valori (pentru ca se incepe de la 0, deci 3 va fi a 4-a valoare).

Exemplu concret PHP:
Selectati ultimii 10 utilizatori inscrisi in baza de date "rops", care sunt nascuti inainte de 1989:

Cod:
$sql = "SELECT * FROM `rops` WHERE `an_nastere` < 1989 LIMIT 10";
   $rezultat = mysql_query($sql);

Acelasi rezultat il vom avea si daca folosim comenzile urmatoare:

Cod:
SELECT * FROM `rops` WHERE `an_nastere` <= 1988 LIMIT 10

sau:

Cod:
SELECT * FROM `rops` WHERE `an_nastere` < 1989 LIMIT 0,10

sau:

Cod:
SELECT * FROM `rops` WHERE `an_nastere` <= 1988 LIMIT 0,10

Modificarea datelor din tabel
Pentru a modifica datele dintr-un tabel in baza de date, se foloseste comanda UPDATE.
Sintaxa generala:

Cod:
UPDATE `tabel` SET `camp1`='valoare1', `camp2`='valoare2', ....., `campN`='valoareN' WHERE conditii

Pentru aceasta comanda, conditiile sunt OBLIGATORII.
Pentru siguranta, atunci cand se doreste updatarea unui singur camp, se foloseste limita (LIMIT 1 sau LIMIT 0,1).
Ex:
Sa se seteze in tabelul "rops" campul activ pe valoarea "1" tuturor intrarilor care au anul de nastere mai mic de 1989 si campul activ este setat pe valoarea 0

Cod:
$sql = "UPDATE `rops` SET `activ`=1 WHERE `an_nastere` <1989>= 1989 LIMIT 10";
      if(mysql_query($sql)){
         echo "Datele au fost sterse cu succes";
      }
      else{
         echo "A intervenit o eroare in timp ce stergeam datele din tabel";
      }

Ordonarea
De multe ori avem nevoie ca rezultatele sa fie ordonate, pentru aceasta, in comanda SQL, intre conditii si limita se introduce si ordonarea.
Sintaxa generala este urmatoarea:

Cod:
ORDER BY `camp` mod

"mod" poate fi ASC(crescator) sau DESC (descrescator)

Acestea fiind spuse, voi face un scurt rezumat:
- ORICE comanda SQL este de forma:

Cod:
operatie conditii ordonare limita

operatie:
- CREATE
- DROP
- DELETE TABLE
- TRUNCATE
- SELECT
- UPDATE
- DELETE
- conditii:
- Incep mereu cu WHERE
- Se folosesc DOAR operatori de comparatie (<,>,<=,>=,=,LIKE)
- ordonarea:
- ORDER BY `camp` mod
- modul este de 2 feluri:
- ASC
- DESC
- Limita
- Se foloseste pentru a limita numarul de rezultate intoarse.
- este de 2 feluri:
- Limita normala (de forma LIMIT inc, sf)
- Limita de rezultate (de forma LIMIT nr)
- Toate comenzile SQL, mai putin "SELECT", intorc valori de tip BOOLEAN (true/false)
Sus In jos
https://chuckys-zone.forumgratuit.ro
 
PHP si baze de date (in special MySQL)
Sus 
Pagina 1 din 1

Permisiunile acestui forum:Nu puteti raspunde la subiectele acestui forum
ChuckY's-ZoNe Community™ :: cYz - Internet :: PHP :: Tutoriale-
Mergi direct la: