E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Introducere in PHP (24)

X. SQLite My Fire! (partea I)

16.07.2008
X. SQLite My Fire! (partea I)

Spre deosebire de MySQL, care opereaza pe modelul server client, SQLite este un motor de baze de date bazat pe fisiere si foloseste functii fisier I/O (input/output- intrare/iesire) pentru a stoca si pentru a citi bazele de date din fisiere de pe disk.

Total vizualizari: 8006 8006 afisari   |   Comentarii  2   |   Rating   |   (2 voturi)   |   Timp necesar: 30 min 30 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

Sursa:  Devzone.zend.com  
Autor:  Vikram Vaswani
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
« 12 3 4 »
comenteaza printeaza

Daca iti amintesti ce ai invatat in Partea a opta, secventa de instructiuni PHP de mai sus ar trebui sa fie usor de descifrat. Daca totusi nu iti amintesti, iata un scurt rezumat:

1. Totul incepe cu functia sqlite_open() care accepta fisierului bazei de date ca argument si incearca sa il deschida. Daca acest fisier al bazei de date nu poate fi gasit, va fi creata o baza de date goala, si ea va purta numele introdus (presupunand ca secventa de instructiuni are acces scris catre director).

<?php 
 
$db = $_SERVER['DOCUMENT_ROOT']."/../library.db"; 
$handle = sqlite_open($db) or die("Could not open database"); 
 
?>

Fisierul de baze de date library.db trebuie sa fie pastrat undeva unde sa nu poata fi accesat prin browser de catre vizitatorii site-ului tau. Acest lucru inseamna ca trebuie sa il creezi in afara public_html-ului tau, a directorului www sau htdocs, intr-un director care sa permita secventelor tale de instructiuni sa citeasca/sa scrie permisiuni. Companiile de gazduire Web hosting vor oferi in general un spatiu deasupra directorului tau vizibil pe web, unde poti face acest lucru. $_SERVER['DOCUMENT_ROOT']."/.." este directorul care vine imediat deasupra directorului tau vizibil pe web.
Daca are succes, functia sqlite_open() returneaza un maner de selectie, care este stocat in variabila $handle si este folosit pentru orice comunicare ulterioara cu baza de date.

2. Urmatorul pas este sa cream si sa executam interogarea, cu functia sqlite_query().

<?php 
 
$query = "SELECT * FROM books"; 
$result = sqlite_query($handle, $query) or die("Error in query: 
".sqlite_error_string(sqlite_last_error($handle))); 
 
?>

Aceasta functie are de asemenea nevoie de doi parametri: manerul de selectie al bazei de date si sirul de interogare. In functie de succesul sau insuccesul interogarii, functia va returna true sau false; in cazul unui esec, functiile sqlite_error_string() si sqlite_last_error() pot fi folosite pentru a afisa eroarea care a avut loc.

3. Daca sqlite_query() are succes, setul de rezultate returnat de catre interogare va fi stocat in variabila $result. Poti recupera inregistrarile din setul de rezultate cu functia sqlite_fetch_array(), care returneaza un singur rand de date, numit $row. Campurile din acea inregistrare sunt reprezentate ca elemente ale unei matrici, si pot fi accesate folosind o notatie standard de indexare.

De fiecare data cand apelezi sqlite_fetch_array(), urmatoarea inregistrare din setul de rezultate va fi returnata. De aceea, sqlite_fetch_array() este deosebit de adaptata pentru a fi folosita intr-o bucla while(), cam in acelasi fel in care a fost folosita mysql_fetch_row() mai devreme.

<?php 
 
if (sqlite_num_rows($result) > 0) { 
    echo "<table cellpadding=10 border=1>"; 
    while($row = sqlite_fetch_array($result)) { 
        echo "<tr>"; 
        echo "<td>".$row[0]."</td>"; 
        echo "<td>".$row[1]."</td>"; 
        echo "<td>".$row[2]."</td>"; 
        echo "</tr>"; 
    } 
    echo "</table>"; 
} 
 
?>

Numarul de inregistrari returnate de catre interogare poate fi recuperat cu functia sqlite_num_rows(). Sau, daca de fapt esti interesat de numarul de campuri din setul de rezultate, foloseste, in loc, functia sqlite_num_fields(). Desigur, acestea pot fi aplicate doar in cazul interogarilor care returneaza de fapt inregistrari; nu prea are sens sa le folosesti la interogari INSERT, UPDATE sau DELETE.

4. Odata ce ai terminat, este o idee buna sa inchizi manerul de selectie al bazei de date si sa returnezi memoria folosita inapoi sistemului, cu o apelare a sqlite_close():

<?php 
 
sqlite_close($handle); 
 
?>

In PHP 5 poti de asemenea folosi SQLite API intr-o maniera de orientare pe obiecte, unde fiecare dintre functiile de mai sus devine o metoda a obiectului SQLiteDatabase() object. Arunca o privire la urmatoarea listare, care este echivalenta celei de mai sus:

<html> 
<head></head> 
<body> 
<?php 
// set path of database file 
$file = $_SERVER['DOCUMENT_ROOT']."/../library.db"; 
 
// create database object 
$db = new SQLiteDatabase($file) 
or die("Could not open database"); 
 
// generate query string 
$query = "SELECT *  FROM books"; 
 
// execute query 
// return result object 
$result = $db->query($query) 
or die("Error in query"); 
 
// if rows exist 
if ($result->numRows() > 0) { 
    // get each row as an array 
    // print values 
    echo "<table cellpadding=10 border=1>"; 
    while($row = $result->fetch()) { 
        echo "<tr>"; 
        echo "<td>".$row[0]."</td>"; 
        echo "<td>".$row[1]."</td>"; 
        echo "<td>".$row[2]."</td>"; 
        echo "</tr>"; 
    } 
    echo "</table>"; 
} 
 
// all done 
// destroy database object 
unset($db); 
?> 
</body> 
</html>

Iata, cuvantul - cheie new este folosit pentru a instantia un obiect din clasa SQLiteDatabase() transferand constructorului de obiecte numele fisierul bazei de date. Daca fisierul de baze de date nu exista inca, va fi creat un nou fisier de baze de date. Obiectul care rezulta, stocat in $db, expune apoi metode si proprietati pentru a efectua interogari. Fiecare interogare returneaza o instantiere a clasei SQLiteResult(), care, in schimb, expune metode pentru extragerea si procesarea inregistrarilor.

Daca te uiti cu atentie la cele doua secvente de date de mai sus, vei remarca numeroase similitudini intre numele functiilor procedurale si numele metodelor de obiecte. Desi corespondenta intre cele doua nu este perfecta, de obicei ea este destul de fidela pentru a face posibila presupunerea uneia atunci cand o cunosti pe cealalta.

Pagina:
« 12 3 4 »
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(2 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (2) spune-ti parerea
Mark , Joi, 17 Iulie 2008
#2

Am auzit ca SQLite este cam slabut pentru query-uri complexe, pe mai multe tabele, e adevarat? S-ar potrivi cu numele ...

Raporteaza acest comentariu ca injurios!
Darude , Miercuri, 16 Iulie 2008
#1

Oh, de cand asteptam un nou material PHP :) cu atat mai bine este cu SQLite.

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
5180
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
5135
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4985
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4970
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
4735
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Vista PHP Outlook JSON HTML Powerpoint SEO Lightroom SWF StyleSheet Python COREL DRAW RoR Photoshop Excel Action Script Gimp Javascript Dreamweaver CSS Swift 3D Flash Word MySQL PSD Java Fireworks Fotografie Bridge Ruby on Rails Sony Vegas XHTML Verilog Illustrator XML AJAX
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software