Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   








Clic aici
PC Report - ultimul numar aparut


IPRO - PC Magazine Romania, Februarie 2003
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB

Totul despre situri dinamice (II)

Konstantin Klyagin

username: ace
password: ace2
baza de date: acedb
Continuăm seria de articole despre crearea siturilor dinamice. În acest număr veți găsi atât informații despre operațiile asupra unei bazei de date, crearea tabelelor, adăugare, modificare și ștergere de înregistrări, cât și un exemplu de lucru cu o astfel de bază de date.

Consider suficiente informațiile date în articolul anterior, pentru a începe programarea unui sit serios. Iată ce vă propun. Sper că toți ați văzut filmul Ace Ventura: detectivul de animale domestice" cu Jim Carrey. Imaginați-vă acum cât de folositoare ar putea fi o bază de date pentru eroul principal de acolo. Mă rog, dacă Jim, cu mimica lui, putea lucra cu calculatoarele și web-ul, evident.

Nu cred că există mulți oameni care n-au auzit de populara combinație PHP+MySQL măcar o dată. Spunem PHP, subînțelegem MySQL". Acestea sunt două tehnologii care au multe în comun: amândouă se distribuie gratuit, cu sursele deschise sub licența GNU, având comunități de utilizatori extraordinar de mari și de active. Datorită ușurinței în instalare și utilizare, această pereche de produse a cucerit o grămadă de dezvoltatori amatori, profesioniști precum și nenumărate firme din întreaga lume.

Elemente SQL
Orice bază de date SQL este pusă în mișcare cu ajutorul limbajului special, numit SQL (Structured Query Language). Ușurința în folosire se poate compara cu cea de la Basic. Informațiile în sisteme de acest gen se păstrează separate logic în tabele și înregistrări. Tot ce ne trebuie sunt comenzile pentru crearea unei tabele, inserarea și extragerea de informații din baza de date, comenzi folosite în programele noastre. Deci, avem:

Crearea unei tabele
CREATE TABLE <nume>
(<numele câmpului 1> <tipul câmpului>, <numele> <tipul>, ...);

Creează o tabelă în baza de date cu un nume dat. Fiecare tabelă conține câmpuri pe care le numim cum vrem, pentru fiecare câmp putem alege unul dintre tipurile standard. Principalele tipuri standard sunt: INTEGER sau doar INT (numerele), CHAR (șiruri de caractere, lungimea trebuie dată obligatoriu în paranteze), TIMESTAMP (data și ora) și BLOB (pentru informații binare de dimensiuni mari). Exemplu:

create table modele (nume char(60), bust int, talie int, coapse int);
Inserare într-o tabelă
INSERT INTO <numele tabelei>
(<câmp1>, <câmp2>, ...) VALUES (<valoare 1>, <valoare 2>);

Adăugarea unei înregistrări într-o tabelă se face respectând ordinea perechilor nume, valoare din etapa de creare.
insert into modele ('Maria Popescu', 95, 60, 90);

Căutare într-o tabelă
SELECT <câmp1>, <câmp2>, ... FROM <tabelă1>, <tabelă2>, ... WHERE <condiție>;
Această comandă extrage înregistrări dintr-o tabelă sau mai multe care corespund condiției date. Dacă partea cu WHERE a fost omisă, se vor afișa toate înregistrările. Chiar dacă pare simplu, cu ajutorul acestei comenzii se pot face interogări foarte complexe, în care figurează multe tabele, condiții și relații. Câteva exemple:

select nume from modele;

Ne va întoarce toate înregistrările.

select nume from modele where
bust >= 95;

Solicităm doar informații despre modele la care mărimea bustului este mai mare sau egală cu 95 cm.

În mod normal, sintaxa completă a comenzilor de mai sus ocupă câteva pagini de text, și am menționat numai cele mai des întalnite și simple cazuri. Apropo, ca orice operație cu baze de date, ele se pot proba din linie de comandă:
$ mysql -u root -p<parola>

Operații asupra bazei de date
Dar gata - ne așteaptă animalele dispărute și proprietarii lor disperați. Începem cu schema bazei de date pentru proiect. Trebuie creat un loc separat pentru fiecare proiect. Pentru a evita ca programele și utilizatorii din alte proiecte, găzduite pe același server SQL, să strice informațiile celorlalți, creăm utilizatori pentru fiecare proiect.
mysql> create database acedb;
mysql> grant all privileges on acedb.* to ace@localhost identified by ace2';

Cu ultima comandă am creat un utilizator ace cu parola ace2, care se poate conecta numai local. Încercările de conectare de la alte computere nu vor merge (se face pentru a spori securitatea). În loc de localhost se poate pune și numele altui calculator sau chiar o mască care va lăsa numai host-urile potrivite să acceseze baza de date. Putem folosi și următorul mod de acordare a drepturilor: baza de date se află pe un calculator, iar serverul web se instalează pe un altul sau mai multe în aceeași rețea. Astfel se dobândește productivitatea bună în cazul unor sisteme foarte încărcate, cu multe solicitări.

Conectarea la BD
Ieșim din clientul MySQL (Ctrl-C, Ctrl-D sau exit") și ne conectăm din nou, de data asta cu userul ace" și mergem direct în baza noastră de date:

$ mysql -u ace -pace2 acedb

Definire tabele
Avem nevoie de două tabele pentru proiect, de animale și respectiv de proprietari. Acestea se definesc astfel:

mysql> create table pets (id int auto_increment primary key,
name char(60), marks char(255), lostdate date, reward int,
owner_id int, picture blob);
mysql> create table owners (id int auto_increment primary key,
name char(60), address char(255), phone char(40), picture blob);

Cuvintele noi aici sunt auto_increment" și primary key". Primele două garantează unicitatea înregistrărilor acolo unde este necesar. Într-adevăr, ar fi bine să putem identifica atât animalele cât și proprietarii lor în mod unic. Deci, auto_increment" face valoarea unui câmp să crească de fiecare dată când se adaugă o înregistrare, iar primary key" spune că nu pot fi două sau mai multe înregistrări cu același număr id.
Întreg proiectul, gata pentru instalare și utilizare îl găsiți pe CD și pe sit la adresa http://konst.org.ua/ace/. Arhiva include următoarele fișiere:

ace.sql

Script-ul pentru crearea bazei de date cu toate tabelele, cu ajutorul căruia baza de date poate fi reconstruită imediat. Scriptul se execută astfel:
$ mysql -u root < ace.sql

pets.php
owners.php
Acestea sunt script-urile care arată listele de proprietari și animale.

petadd.php
owneradd.php
Aici avem două script-uri care adaugă sau modifică (în funcție de parametrii dați) înregistrarea pentru un animal sau un proprietar în baza de date. Mai jos veți putea afla cum se face încărcarea imaginilor prin formulare web.

petdetails.php
ownerdetails.php
Afișează detaliile despre un animal sau proprietar, inclusiv fotografia, dacă aceasta există. Ultima acțiune se face cu ajutorul script-ului
fetchimage.php.

connect.php
Acesta nu se execută niciodată separat, dar se include în fiecare script cu ajutorul comenzii require". Dacă ne uităm la alte script-uri, la începutul fiecăruia dintre ele găsim require connect.php". El face conectarea cu baza de date, și definește câteva funcții utile, pe care le vom folosi apoi în sit.

fetchimage.php
Extrage imaginea unui animal sau a unui proprietar din baza de date, și o trimite spre afișare. Imaginea este afișată în interiorul tag-ului <IMG>.

remove.php
Șterge înregistrările despre proprietari sau animale din baza de date, în funcție de opțiunea vizitatorului preluată printr-un formular online. După ștergere scriptul afișează din nou lista.

Toate .php-urile acestea împreună cu directorul images/ se copiază într-un director vizibil pentru server-ul vostru de web. Aș recomanda să le puneți în public_html/ace. Aici e bine să faceți un link simbolic către index.php de la pets.php sau owners.php în funcție de lista pe care vreți să o vedeți atunci când intrați pe sit. Numele fișierului afișat implicit se specifică în fișierul de configurare al serverului de web, în exemplul nostru, Apache.

Deci, facem un link:

ln -sf pets.php index.php

După aceea URL-ul va fi http://localhost/~contulvostru/ace/ și dacă totul este setat corect, va merge imediat. Dacă nu, puteți vedea proiectul la adresa http://konst.org.ua/ace/

Rețineți că acest exemplu funcționează doar atunci când parametrii file_uploads", short_open_tags" și register_globals" sunt setați on". Aceasta se poate face atât din fișierul de configurare /etc/php.ini cât și din configurarea Apache-ului. Pentru mai multe informații vedeți manualele respective.

În următorul articol vă voi explica cum merg script-urile din exemplu, cum se conectează la baza de date din PHP, precum și crearea și completarea formularelor online. Pe curând!


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2002 Agora Media.

[email protected]

LG - LifeŽs Good

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro