| 
	
 | 
 Posted by laastos on 11/27/07 21:28 
I created two classes Conexion.php and Consulta.php, I show you the 
code: 
 
/* 
Clase Conexion: 
Clase encargada de conectarse directamente con la base de datos de 
MySQL. 
*/ 
class Conexion { 
	var $vinculo; 
	var $resultado; 
	var $sentenciaSQL; 
 
	/* 
	Función iniciarConexion(): 
	Función para iniciar la conexión con la base de datos. 
	Parámetros: 
		Ninguno. 
	Retorno: 
		TRUE si la conexión se logra correctamente. 
		FALSE si la conexion no se logra correctamente. 
	*/ 
	function iniciarConexion() 
	{ 
		$this->vinculo = mysql_connect(SISTEMA_HOST.":".SISTEMA_PORT, 
SISTEMA_USERNAME, SISTEMA_PASSWORD); 
		if ($this->vinculo == false) { 
			return FALSE; 
			exit(); 
		} 
		if (!mysql_select_db(SISTEMA_DATABASE, $this->vinculo)) { 
			return FALSE; 
			exit(); 
		} 
		return TRUE; 
	} 
 
	/* 
	Función cerrarConexión(): 
	Función para cerrar la conexión con la base de datos. 
	Parámetros: 
		Ninguno. 
	Retorno: 
		TRUE si la desconexion se logra correctamente. 
		FALSE si la desconexión no se logra correctmente. 
	*/ 
	function cerrarConexion() 
	{ 
		if (!mysql_close($this->vinculo)) { 
			return FALSE; 
			exit(); 
		} 
		return TRUE; 
	} 
 
	/* 
	Función consultaInternaSQL(): 
	Función para hacer una consulta a la base de datos. 
	Parámetros: 
		Cadena de caracteres con la consulta en SQL. 
	Retorno: 
		TRUE si la consulta se logra correctamente. 
		FALSE si la consulta se logra correctamente. 
	*/ 
	function consultaInternaSQL($sql) 
	{ 
		$this->sentenciaSQL = $sql; 
		$this->resultado = mysql_query($sql, $this->vinculo); 
		if (!$this->resultado) { 
			return FALSE; 
			exit(); 
		} 
		return TRUE; 
	} 
 
	/* 
	Función obtenerDatos(): 
	Función para obtener los datos de la consulta SQL realizada. 
	Parámetros: 
		Tipo de asociación de los datos de la consulta: Asociativo, Numérico 
o Ambos. 
	Retorno: 
		FALSE si la obtencion no resulta satisfactoria. 
		Array con la información de la consulta. 
	*/ 
	function obtenerDatos($arrayType = SISTEMA_ASSOC) 
	{ 
		if (!$this->resultado) { 
			return FALSE; 
			exit(); 
		} 
 
		switch ($arrayType) { 
			case SISTEMA_ASSOC: 
				$mysqlArrayType = MYSQL_ASSOC; 
			break; 
			case SISTEMA_NUM: 
				$mysqlArrayType = MYSQL_NUM; 
			break; 
			case SISTEMA_BOTH: 
				$mysqlArrayType = MYSQL_BOTH; 
			break; 
			default: 
				$mysqlArrayType = MYSQL_ASSOC; 
		} 
 
		$temporal = array(); 
		while ($dato = mysql_fetch_array($this->resultado, $mysqlArrayType)) 
array_push($temporal, $dato); 
 
		$datos = array(); 
		while (sizeof($temporal)) array_push($datos, array_pop($temporal)); 
 
		return $datos; 
 
	} 
 
	/* 
	Función numeroTuplasAfectadas(): 
	Función para saber el número de tuplas afectadas por una sentencia 
INSERT, UPDATE ó DELETE. 
	Parámetros: 
		Ninguno. 
	Retorno: 
		Número de tuplas afectadas. 
	*/ 
	function numeroTuplasAfectadas() 
	{ 
		return mysql_affected_rows($this->vinculo); 
	} 
 
	/* 
	Función numeroTuplasResultado(): 
	Función para saber el número de tuplas  de un resultado SQL. 
	Parámetros: 
		Ninguno. 
	Retorno: 
		Número de tuplas del resultado. 
	*/ 
	function numeroTuplasResultado() 
	{ 
		if (stristr($this->sentenciaSQL, "select") OR stristr($this- 
>sentenciaSQL, "SELECT")) 
			return mysql_num_rows($this->resultado); 
		else return 0; 
	} 
} 
 
And the second class... 
 
require_once("Conexion.php"); 
 
class Consulta { 
	var $conexion; 
	var $cadenaSQL = ""; 
	var $consulta; 
 
	function conectar() { 
		$this->conexion = new Conexion(); 
		$this->conexion->iniciarConexion(); 
	} 
 
	function desconectar() { 
		$this->conexion->cerrarConexion(); 
		unset($this->conexion); 
	} 
 
	function consultaExternaSQL($sql, $arrayType = SISTEMA_ASSOC) { 
		$this->consulta = NULL; 
		$this->cadenaSQL = $sql; 
		$this->conectar(); 
		$this->conexion->consultaInternaSQL($sql); 
		if ($this->conexion->numeroTuplasResultado() > 0) $this->consulta = 
$this->obtenerDatos($arrayType); 
		$this->desconectar(); 
		return $this->obtenerResultado(); 
	} 
 
	function obtenerDatos($arrayType) { 
		return $this->conexion->obtenerDatos($arrayType); 
	} 
 
	function obtenerResultado() { 
		return $this->consulta; 
	} 
 
	function obtenerSQL() { 
		return $this->cadenaSQL; 
	} 
 
	function obtenerSiguienteIdentificadorTabla($nombreTabla) { 
		$consulta = $this->consultaExternaSQL("SELECT max(id) AS maximo FROM 
".$nombreTabla.""); 
		$consulta = array_pop($consulta); 
		if (!empty($consulta['maximo'])) return $consulta['maximo'] + 1; 
		else return 1; 
	} 
 
}
 
  
Navigation:
[Reply to this message] 
 |