diff --git a/include/basis.class.php b/include/basis.class.php index 0721f940b..398efa84b 100644 --- a/include/basis.class.php +++ b/include/basis.class.php @@ -58,96 +58,5 @@ class basis { return ($var!=''?"'".addslashes($var)."'":'null'); } - - /** - * Erzeugt aus den Funktionsparameter eine SLQ Abfrage - * --- Wird in der Art Sonderzeichen gefunden wird dieses als FunktionsParmeter verarbeitet - * @param art die SQL Abfrage die erzeugt werden soll Default ist 'select' - * @param distinct - nur wenn art ist 'select' ist - * @param fields welche Datenbankfelder sind betroffen - * @param table Datenbanktabelle die betroffen ist/sind - * @param where Bedingung zum lesen in der Datenbank - * @param order Sortierung der Anfrage - nur wenn art ist 'select' ist - * @param limit Anzahl der Datenmenge die geliefert werden soll - nur wenn art ist 'select' ist - * @param sql der Kpl. SQL String zur Datenbearbeitung der DB - - * @return false und errormsg wenn ein Fehler aufgetreten ist, Datenbankobjekt wenn alles OK - */ - public function SQL($pArt='select',$pDistinct=false,$pFields='',$pTable='',$pWhere='',$pOrder='',$pLimit='',$pSql='') - { - $this->errormsg=''; - $result=false; - - $sql=(!is_null($pSql)?trim($pSql):''); - $art=(!is_null($pArt)?trim($pArt):''); - $distinct=($pDistinct?true:false); - $fields=(!is_null($pFields)?trim($pFields):''); - $table=(!is_null($pTable)?trim($pTable):''); - $where=(!is_null($pWhere)?trim($pWhere):''); - $order=(!is_null($pOrder)?trim($pOrder):''); - $limit=(is_numeric($pLimit)?$pLimit:''); - - if (empty($sql) && empty($art)) - { - $this->errormsg='die SQL Art fehlt!'; - return $result; - } - else if (empty($sql) && empty($table)) - { - $this->errormsg='die SQL Tabelle fehlt!'; - return $result; - } - - // DB Abfrage zusammenbauen - if (!empty($pSql)) - { - $sql=$pSql; - } - else - { - $sql.=$art. ' '; - if ($art=='select') - $sql.=($distinct?' distinct ':''); - $sql.=($fields?$fields:' * '); - $sql.=($table?' from '.trim($table).' ':''); - if (strstr('where',strtolower($where))) - $sql.=($where?' '.trim($where).' ':''); - else - $sql.=($where?' where '.trim($where).' ':''); - if ($art=='select') - { - if (strstr('order',strtolower($where))) - $sql.=($order?trim($order).' ':''); - else - $sql.=($order?' order by '.trim($order).' ':''); - } - if ($art=='select') - { - if (strstr('limit',strtolower($where))) - $sql.=($limit?trim($limit).' ':''); - else - $sql.=($limit?' limit '.trim($limit).' ':''); - } - } - if (!$results=$this->db_query($sql)) - { - $this->errormsg=$this->db_last_error(); - return false; - } - - if ($art!='select' && empty($pSql)) - return true; - - if (!$num=$this->db_num_rows($results)) - { - $this->errormsg='keine Daten gefunden'; - return false; - } - // Lesen aller DB Daten - $rows=array(); - while($row = $this->db_fetch_object($results)) - $rows[]=$row; - return $rows; - } } ?> \ No newline at end of file diff --git a/include/basis_db.class.php b/include/basis_db.class.php index 9693089b0..2e52877f0 100644 --- a/include/basis_db.class.php +++ b/include/basis_db.class.php @@ -27,6 +27,98 @@ abstract class db extends basis abstract function db_free_result($result=null); abstract function db_version(); + + /** + * Erzeugt aus den Funktionsparameter eine SLQ Abfrage + * --- Wird in der Art Sonderzeichen gefunden wird dieses als FunktionsParmeter verarbeitet + * @param art die SQL Abfrage die erzeugt werden soll Default ist 'select' + * @param distinct - nur wenn art ist 'select' ist + * @param fields welche Datenbankfelder sind betroffen + * @param table Datenbanktabelle die betroffen ist/sind + * @param where Bedingung zum lesen in der Datenbank + * @param order Sortierung der Anfrage - nur wenn art ist 'select' ist + * @param limit Anzahl der Datenmenge die geliefert werden soll - nur wenn art ist 'select' ist + * @param sql der Kpl. SQL String zur Datenbearbeitung der DB + + * @return false und errormsg wenn ein Fehler aufgetreten ist, Datenbankobjekt wenn alles OK + */ + public function SQL($pArt='select',$pDistinct=false,$pFields='',$pTable='',$pWhere='',$pOrder='',$pLimit='',$pSql='') + { + $this->errormsg=''; + $result=false; + + $sql=(!is_null($pSql)?trim($pSql):''); + $art=(!is_null($pArt)?trim($pArt):''); + $distinct=($pDistinct?true:false); + $fields=(!is_null($pFields)?trim($pFields):''); + $table=(!is_null($pTable)?trim($pTable):''); + $where=(!is_null($pWhere)?trim($pWhere):''); + $order=(!is_null($pOrder)?trim($pOrder):''); + $limit=(is_numeric($pLimit)?$pLimit:''); + + if (empty($sql) && empty($art)) + { + $this->errormsg='die SQL Art fehlt!'; + return $result; + } + else if (empty($sql) && empty($table)) + { + $this->errormsg='die SQL Tabelle fehlt!'; + return $result; + } + + // DB Abfrage zusammenbauen + if (!empty($pSql)) + { + $sql=$pSql; + } + else + { + $sql.=$art. ' '; + if ($art=='select') + $sql.=($distinct?' distinct ':''); + $sql.=($fields?$fields:' * '); + $sql.=($table?' from '.trim($table).' ':''); + if (strstr('where',strtolower($where))) + $sql.=($where?' '.trim($where).' ':''); + else + $sql.=($where?' where '.trim($where).' ':''); + if ($art=='select') + { + if (strstr('order',strtolower($where))) + $sql.=($order?trim($order).' ':''); + else + $sql.=($order?' order by '.trim($order).' ':''); + } + if ($art=='select') + { + if (strstr('limit',strtolower($where))) + $sql.=($limit?trim($limit).' ':''); + else + $sql.=($limit?' limit '.trim($limit).' ':''); + } + } + if (!$results=$this->db_query($sql)) + { + $this->errormsg=$this->db_last_error(); + return false; + } + + if ($art!='select' && empty($pSql)) + return true; + + if (!$num=$this->db_num_rows($results)) + { + $this->errormsg='keine Daten gefunden'; + return false; + } + // Lesen aller DB Daten + $rows=array(); + while($row = $this->db_fetch_object($results)) + $rows[]=$row; + return $rows; + } + } require_once(dirname(__FILE__).'/'.DB_SYSTEM.'.class.php');