Salve a tutti!
Di seguito ho questa classe che mi permette la connessione al db e di effettuare query...chiudere connessione...ecc.
Leggendo di seguito al codice postato vi pongo il problema.
Codice PHP:
class DBData
{
protected $name = "name";
protected $hostname = "localhost";
protected $username = "xxx";
protected $password = "xxx";
protected $linkid = NULL;
protected $encoding = NULL;
public function __construct()
{
// operazioni di inizializzazione
}
public function __destruct()
{
// operazioni eseguite prima della distruzione
}
function openConnection()
{
$id = @mysql_connect($this->hostname,$this->username,$this->password);
if ($id)
{
$this->linkid = $id;
$status = mysql_select_db($this->name);
} else {
return ERROR_CONNECTION_FAILED;
}
if (!$status)
{
return ERROR_DB_SELECTION_FAILED;
} else {
return FALSE;
}
}
//query sulla tabella
function Query($sql){
$sql = @mysql_query($sql) or die (mysql_error());
return $sql;
}
//estrazione di un record
function FetchRow($sql){
$rows = @mysql_fetch_row($sql);
return $rows;
}
//conteggio dei records
function FetchNum($sql){
$num = @mysql_num_rows($sql);
return $num;
}
//estrazione dei records
function FetchArray($sql){
$array = @mysql_fetch_array($sql);
return $array;
}
//chiusura della connessione
function Close(){
@mysql_close();
}
function closeConnection()
{
if ($this->linkid) $status = @mysql_close($this->linkid);
if (!$status)
{
return ERROR_DB_CLOSED_FAILED;
} else {
return FALSE;
}
}
}
La classe funziona perfettamente.
Il problema sta nel riutilizzo della classe nelle altre classi....
Es.:
Codice PHP:
class listCity extends city
{
var $city;
var $randCity;
public function listCity($rand,$idp)
{
$dataBase=new DBData();
//apro la connessione al db
$dataBase->openConnection();
if ($rand!="yes" and isset($idp)) {
$sql="select id,nome,descrizione,desinglese from località WHERE id=".$idp."";
}
if ($rand=="yes" and $idp=="") {
$sql="select id,nome,descrizione,desinglese from località";
}
if ($rand=="no" and $idp=="") {
$sql="select id,nome,descrizione,desinglese from località";
}
$res=$dataBase->Query($sql);
while ($data=@mysql_fetch_array($res)) {
$city = new city();
$city->setId($data["id"]);
$city->setName($data["nome"]);
$city->setDescriptionIt($data["descrizione"]);
$city->setDescriptionEn($data["desinglese"]);
$cities[] = $city;
}
//chiudo la connessione
$dataBase->closeConnection();
if ($rand=="yes") {
$totalCity = count($cities);
$theCity=rand(0,$totalCity-1);
$randCity[]=$cities[$theCity];
return $randCity;
}else { return $cities;}
}
}
Oltre a quello che fa la classe.....
Potete notare che istanzio la connessione:
Codice PHP:
$dataBase=new DBData();
//apro la connessione al db
$dataBase->openConnection();
e poi la chiudo alla fine:
Codice PHP:
//chiudo la connessione
$dataBase->closeConnection();
Il problema è ..... che per usufruire della connessione al db devo sempre connettermi in ogni classe...
Mentre io vorrei aprire una connessione in testa alla pagina web php e chiuderla alla fine, per non rallentare il sito con N connessioni al database...
Spero di essere stato chiaro...
Grazie