Scusate, preso dalla voga ho contato male le righe..qualcosa c'è ma in ogni caso non ha senso l'errore perché in altri due siti funziona perfettamente!! Ed è lo stesso codice...
Codice PHP:
<?php
define("DEBUG", FALSE);
class My_Sql {
private $db = NULL;
private $query = NULL;
private $risultati_query = array();
public $database_name = NULL;
public function richiama_db($richiamo){
if($richiamo == TRUE){ return $this->db; }
}
public function connetti(){
if(DEBUG){ echo "<p>CONNESSIONE</p>"; }
$db = mysql_connect("SITO","USER","PASSWORD")
or die("Connessione non riuscita");
mysql_select_db("my_TABELLA",$db)
or die("Database non giusto");
$this->database_name = "my_TABELLA";
$this->db = $db;
}
private function libera(){
if(DEBUG){ echo "<p>LIBERA RISULTATI</p>"; }
if($this->query != NULL){ mysql_free_result($this->query); $this->query = NULL; $this->risultati_query = NULL; }
}
public function esegui_query($istruzione,$tipo_query,$tipo_risultati_query,$tabella){
if(DEBUG){ echo "<p>EX QUERY: istruzione: $istruzione | tipo query: $tipo_query | tipo risultati: $tipo_risultati_query | tabella: $tabella</p>"; }
if($istruzione != NULL){
switch($tipo_query){
case "risultati":
if(DEBUG){ echo "<p>risultati</p>"; }
$this->connetti();
$this->query = mysql_query(($istruzione))
or die("Impossibile fare la query in risultati");
$risultati = $this->GetRisultati($tipo_risultati_query);
$this->libera();
return $risultati; break;
case "while":
if(DEBUG){ echo "<p>while</p>"; }
$this->connetti();
$this->query = mysql_query(($istruzione))
or die("Impossibile fare la query in while");
$risultati = $this->ciclo();
$this->libera();
return $risultati; break;
case "aggiungi":
if(DEBUG){ echo "<p>aggiungi</p>"; }
$this->connetti();
if($tipo_risultati_query){$this->tipo_risultati_query = $tipo_risultati_query;}
return($this->AddRisultati($istruzione,$tabella));
break;
case "aggiorna":
if(DEBUG){ echo "<p>aggiorna</p>"; }
$this->connetti();
return($this->SetRisultati($istruzione,$tabella));
break;
case "elimina":
if(DEBUG){ echo "<p>elimina</p>"; }
$this->connetti();
return($this->DelRisultato($istruzione,$tabella));
break;
default: if(DEBUG){ echo "<p>errore</p>"; } die("Tipo di query non corretta"); break;
}
}
}
private function ciclo(){
$this->risultati_query = array();
while($row = mysql_fetch_array($this->query)){
$this->risultati_query[] = $row;
}
return $this->risultati_query;
}
public function GetCampi($tabella,$query){
global $mysql;
if(DEBUG){ echo "<p>PRENDI CAMPI</p>"; }
if(!isset($query)){
$this->query = array($tabella,$this->database_name);
$campi_query = $this->GetRisultati("array_campi");
}else{ $campi_query = mysql_query($query,$mysql->db); }
$colonne = mysql_num_fields($campi_query) or die ("Impossibile recuperare le informazioni");
$campi = array();
for ($i = 0; $i < $colonne; $i++) {
$campi[] = mysql_field_name($campi_query, $i);
if(DEBUG){ echo $campi[$i]."<br />"; }
}
return $campi;
}
public function GetTipoCampi($tabella,$query){
global $mysql;
if(DEBUG){ echo "<p>PRENDI CAMPI</p>"; }
if(!isset($query)){
$this->query = array($tabella,$this->database_name);
$campi_query = $this->GetRisultati("array_campi");
}else{ $campi_query = mysql_query($query,$mysql->db); }
$colonne = mysql_num_fields($campi_query) or die ("Impossibile recuperare le informazioni");
$campi = array();
for ($i = 0; $i < $colonne; $i++) {
$campi[] = mysql_field_type($campi_query, $i);
if(DEBUG){ echo $campi[$i]."<br />"; }
}
return $campi;
}
public function getPrimaryKey($tabella,$cerca){
$query = mysql_query("SHOW KEYS FROM ".$tabella.";",$this->db);
while($row = mysql_fetch_assoc($query)){
if($row["Key_name"] == "PRIMARY"){
if(!isset($cerca)){ $key = $row["Column_name"]; }
elseif($cerca == $row["Column_name"]){ $key = TRUE; } else { $key = FALSE; }
}
}
return $key;
}
private function GetRisultati($tipo_risultati_query){
if(DEBUG){ echo "<p>GET RISULTATI: ".$this->query." | Tipo Ris: ".$tipo_risultati_query."</p>"; }
if($this->query != NULL){
switch($tipo_risultati_query){
case "array_car": return($this->risultati_query = mysql_fetch_array($this->query)); break;
case "array_num": return($this->risultati_query = mysql_fetch_row($this->query)); break;
case "array_ogg": return($this->risultati_query = mysql_fetch_object($this->query)); break;
case "array_campi": return($this->risultati_query = mysql_list_fields($this->query[1],$this->query[0],$this->db)); break;
case "array_ass": return($this->risultati_query = mysql_fetch_assoc($this->query)); break;
case "conto_righe": return($this->risultati_query = mysql_num_rows($this->query)); break;
case "conto_campi": return($this->risultati_query = mysql_num_fields($this->query)); break;
default: $this->risultati_query = NULL; die("Tipologia di richiesta non riconosciuta"); break;
}
}else{ die("Manca la query"); }
}
private function AddRisultati($risultati,$tabella){
if(DEBUG){ echo "<p>AGGIUNGI RISULTATO</p>"; }
if(isset($this->tipo_risultati_query)){$tipo_query = $this->tipo_risultati_query;}
else{$tipo_query = NULL;}
$campi = $this->GetCampi($tabella,$tipo_query);
$ultimo_campo = count($campi) - 1;
$query_ad = "INSERT INTO ".$tabella." (";
if(DEBUG){ print_r($risultati); echo "<br />"; print_r($campi); }
foreach($campi as $chiave => $valore){
if(array_key_exists($valore,$risultati)){
if($campi[$ultimo_campo] == $valore){ $query_ad .= $valore; }
else{ $query_ad .= $valore.","; }
}
}
$query_ad .= ") VALUES (";
foreach($campi as $chiave => $valore){
if(array_key_exists($valore,$risultati)){
if($campi[$ultimo_campo] == $valore){ $query_ad .= "'".mysql_real_escape_string($risultati[$valore])."'"; }
else { $query_ad .= "'".mysql_real_escape_string($risultati[$valore])."',"; }
}
}
$query_ad .= ");";
if(DEBUG){ echo "<p>QUERY ADD: ".$query_ad."</p>"; }
mysql_query($query_ad) or die("Impossibile aggiungere il dato"); return TRUE;
}
private function SetRisultati($risultati,$tabella){
if(DEBUG){ echo "<p>AGGIORNA RISULTATO:</p>"; print_r($risultati); }
$campi = $this->GetCampi($tabella,null);
foreach($campi as $chiave => $valore){
if(DEBUG){ echo "<p>CHIAVE: ".$chiave." | VALORE: ".$valore."</p>"; }
if(isset($risultati[$valore])){ if(DEBUG){ echo "<ul>$valore -> ".$risultati[$valore]."</ul>"; } mysql_query("UPDATE ".$tabella." SET ".$valore."='".mysql_real_escape_string($risultati[$valore])."' WHERE ".$this->getPrimaryKey($tabella,NULL)."='".$risultati[$this->getPrimaryKey($tabella,NULL)]."';")or die("Modifica non riuscita"); }
}
return TRUE;
}
private function DelRisultato($risultati,$tabella){
if(DEBUG){ echo "<p>ELIMINA RISULTATO</p>"; }
$campi = $this->GetCampi($tabella,NULL);
mysql_query("DELETE FROM ".$tabella." WHERE ".$this->getPrimaryKey($tabella,NULL)."=".mysql_real_escape_string($risultati[$this->getPrimaryKey($tabella,NULL)]).";") or die("Impossibile eliminare risultato"); return TRUE;
}
public function disconnetti(){
if(DEBUG){ echo "<p>DISCONNETTI</p>"; }
if($this->db != NULL){ $this->query = NULL; $this->risultati_query = array(); mysql_close($this->db); $this->db = NULL; }
}
}
?>