PROZONE powered by Tophost
  Home   Forum   Regolamento Help Login Registrati   *
Statistiche
Utenti
Utenti Totali: 1707
Ultimo utente: xal
Statistiche
Posts Totali: 29470
Topics Totali: 3404
Online Oggi: 51
Presenze Massime Online: 559
(23 Luglio 2008, 14:24:28)
Utenti Online
Utenti: 0
Visitatori: 54
Totale: 54
Siti amici
Design & Multimedia

Dire e Fare il blog che ti aiuta

Wordpress
Pagine: [1]
 
Autore Topic: Classe Per Gestire I Database  (Letto 2283 volte)
doGmaI
Utente Attivo
****
Posts: 280


Classe Per Gestire I Database
« il: 10 Giugno 2006, 10:07:03 »

Nell'ultimo periodo mi son realizzato una classe per gestire i db senza tutte le volte diventar matto con il php

Non è niente di eccezionale ma può essere comoda, specie per chi è alle prime armi

Un esempio di utilizzo
Codice:
include_once "database.php";

$db = new database();

if ($db->openDatabase(hostName, dbName, username, password)__FALSE) {
  print "impossibile aprire una connessione col db";
  exit;
}

$db->setSQL("SELECT * FROM tabella WHERE ID>5");
if ($db->executeSQL()==FALSE) {
  print "si è verificato un errore durante l'esecuzione della query: ".$db->getSQL();
  exit;
}

if ($db->getNumberOfSelectedRows()>0) {
  while (($dati=$db->fetchAssoc())!=FALSE) {
    print $dati['nick'].'<br />';
  }
}

$db->closeDatabase();

Spero possa essere utile a qualcuno.

Potete scaricare la classe all'indirizzo http://www.dogmai.net/database.zip
« Ultima modifica: 10 Giugno 2006, 10:09:22 da dogmai » Loggato

doGmaI
Utente Attivo
****
Posts: 280


Classe Per Gestire I Database
« Risposta #1 il: 30 Giugno 2006, 23:52:23 »

Oggi ho avuto mezz'ora di tempo libero e ho ricontrollato un po' di cose che avevo sul pc. Tra le tante anche la classe database che avevo preparato ormai un mese fa circa.

Con questa versione potete connettervi ad un db, ed effettuare più query riciclando una sola connessione.

Come funziona il tutto?
Per prima cosa dovete includere il file con la classe con un
Codice:
include_once "database.php";

quindi create un nuovo oggetto
Codice:
$db = new database();

A questo punto non dovete far altro che inizializzare la connessione al database con la chiamata alla funzione openDatabase
Codice:
if ($db->openDatabase(hostName, dbName, username, password)__FALSE) {
 print "impossibile aprire una connessione col db";
 exit;
}

Giunti a questo punto siete pronti per lavorare con il db, eseguendo tutte le query che volete, in quanto verrà utilizzata una sola connessione.

La funzione principe per il resto della classe è la setSQL($querySQL,$tag) che vi permette di impostare la query da eseguire sul db.
La setSQL accetta due parametri. Il primo parametro è la query vera e propria da eseguire (potete metterci query di SELECT INSERT UPDATE complesse quanto vi pare). Il secondo parametro $tag serve per poter eseguire più query con la stessa classe.
Supponiamo, per chiarire le cose, che dobbiate fare due query al db, una del tipo
Codice:
SELECT * FROM elencoUtenti
e una del tipo
Codice:
SELECT * FROM automobili
Invece di creare due classi database potete sfruttare i tag
Codice:
define("TAG_UTENTI","u");
define("TAG_AUTO","a");

if ($db->openDatabase(hostName, dbName, username, password)__FALSE) {
 print "impossibile aprire una connessione col db";
 exit;
}

$db->setSQL(SELECT * FROM elencoUtenti",TAG_UTENTI);
$db->setSQL(SELECT * FROM automobili",TAG_AUTO);

if ($db->executeSQL(TAG_UTENTI)==FALSE) {
  print "si è verificato un errore durante l'esecuzione della query: ".$db->getSQL(TAG_UTENTI);
  exit;
} else {
  while (($dati=$db->fetchAssoc(TAG_UTENTI))!=FALSE) {
    print $dati['nick'].'<br />';
  }
}

if ($db->executeSQL(TAG_AUTO)==FALSE) {
  print "si è verificato un errore durante l'esecuzione della query: ".$db->getSQL(TAG_AUTO);
  exit;
} else {
  while (($dati=$db->fetchAssoc(TAG_AUTO))!=FALSE) {
    print $dati['targa'].'<br />';
  }
}

$db->closeDatabase();

Così facendo stampere l'elenco degli utenti e l'elenco delle automobili.
In pratica avete fatto due query sfruttando una sola connessione (e dovrebbe venir comodo quando avete dei limiti al numero di connessioni contemporanee)
Grazie al sistema dei "tag" non c'è un limite vero e proprio al numero di query che potete fare usando una sola classe, basta fare tanti define uno per ogni query

La cosa "comoda" è che potete lavorare sui risultati delle query anche "intrecciando" tra loro le operazioni
Ad esempio (in pseudocodice)
Codice:
definite il tag1
definite il tag2
inizializzate il db
settate la query con tag1
eseguite la query con tag1
se il risultato è quello aspettato
  eseguite la query con tag2
  stampate il primo record della query con tag1
  stampate il primo record della query con tag2
chiudete il db
Questo può essere ripetuto con N tag diversi

Per la descrizione delle altre funzioni che si trovano nella classe leggere il readme allegato

Spero possa servire a qualcuno.

PS: sarebbero graditi feedback, non perchè voglio sentirmi dire bravo bravo (anche se ovviamente fa sempre piacere), quanto perchè magari qualcuno potrebbe avere idee su qualcosa che si può aggiungere che a me magari non son venute.
E' la classe che uso nei miei siti, e non l'ho realizzata pensando ad un utilizzo universale, percui aggiungo funzioni man mano che mi servono.
Potrei anche aggiungerle su richiesta

PS2: ovviamente la classe è liberamente utilizzabile purchè non a scopo di lucro e con tutte le limitazioni ovvie del caso (della serie che se vi fate un sito che gestisce i conti correnti di milioni di persone e vi perdete i dati non sono responsabile Linguaccia) E' un pezzo di codice "amatoriale" e come tale deve essere condiderato il suo target di utilizzo
 
Loggato

Pagine: [1]
 
 
Salta a:  

Oggetto Iniziato da Risposte Visto Ultimo Post
Guida A Mod_rewrite (parte 1) « 1 2 3 4 5 » doGmaI 68 48836 Ultimo Post 14 Ottobre 2009, 16:42:18
da sOoN
PHP come modulo o come CGI? lacellula 2 4435 Ultimo Post 14 Giugno 2007, 18:30:19
da gja
phpBB3 su TopHost MaryLou 10 6492 Ultimo Post 4 Luglio 2008, 10:58:02
da loris1966
Come Funzionano I Dns? effe8 9 43751 Ultimo Post 18 Agosto 2009, 10:57:43
da mvarie
Comparire Sui Motori Di Ricerca - Idea « 1 2 ... 16 17 » bigwednesday42 250 29319 Ultimo Post 3 Giugno 2005, 07:03:17
da bigwednesday42
Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC
Traduzione Italiana a cura di SMItalia

TinyPortal v0.9.8 © Bloc
XHTML 1.0 Valido! CSS Valido!


Ultima visita di Google a questa pagina Ieri alle 05:23:20