I resolved that problem...
am 27.11.2007 22:28:21 von laastosI 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=F3n iniciarConexion():
Funci=F3n para iniciar la conexi=F3n con la base de datos.
Par=E1metros:
Ninguno.
Retorno:
TRUE si la conexi=F3n se logra correctamente.
FALSE si la conexion no se logra correctamente.
*/
function iniciarConexion()
{
$this->vinculo =3D 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=F3n cerrarConexi=F3n():
Funci=F3n para cerrar la conexi=F3n con la base de datos.
Par=E1metros:
Ninguno.
Retorno:
TRUE si la desconexion se logra correctamente.
FALSE si la desconexi=F3n no se logra correctmente.
*/
function cerrarConexion()
{
if (!mysql_close($this->vinculo)) {
return FALSE;
exit();
}
return TRUE;
}
/*
Funci=F3n consultaInternaSQL():
Funci=F3n para hacer una consulta a la base de datos.
Par=E1metros:
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 =3D $sql;
$this->resultado =3D mysql_query($sql, $this->vinculo);
if (!$this->resultado) {
return FALSE;
exit();
}
return TRUE;
}
/*
Funci=F3n obtenerDatos():
Funci=F3n para obtener los datos de la consulta SQL realizada.
Par=E1metros:
Tipo de asociaci=F3n de los datos de la consulta: Asociativo, Num=E9rico
o Ambos.
Retorno:
FALSE si la obtencion no resulta satisfactoria.
Array con la informaci=F3n de la consulta.
*/
function obtenerDatos($arrayType =3D SISTEMA_ASSOC)
{
if (!$this->resultado) {
return FALSE;
exit();
}
switch ($arrayType) {
case SISTEMA_ASSOC:
$mysqlArrayType =3D MYSQL_ASSOC;
break;
case SISTEMA_NUM:
$mysqlArrayType =3D MYSQL_NUM;
break;
case SISTEMA_BOTH:
$mysqlArrayType =3D MYSQL_BOTH;
break;
default:
$mysqlArrayType =3D MYSQL_ASSOC;
}
$temporal =3D array();
while ($dato =3D mysql_fetch_array($this->resultado, $mysqlArrayType))
array_push($temporal, $dato);
$datos =3D array();
while (sizeof($temporal)) array_push($datos, array_pop($temporal));
return $datos;
}
/*
Funci=F3n numeroTuplasAfectadas():
Funci=F3n para saber el n=FAmero de tuplas afectadas por una sentencia
INSERT, UPDATE =F3 DELETE.
Par=E1metros:
Ninguno.
Retorno:
N=FAmero de tuplas afectadas.
*/
function numeroTuplasAfectadas()
{
return mysql_affected_rows($this->vinculo);
}
/*
Funci=F3n numeroTuplasResultado():
Funci=F3n para saber el n=FAmero de tuplas de un resultado SQL.
Par=E1metros:
Ninguno.
Retorno:
N=FAmero 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 =3D "";
var $consulta;
function conectar() {
$this->conexion =3D new Conexion();
$this->conexion->iniciarConexion();
}
function desconectar() {
$this->conexion->cerrarConexion();
unset($this->conexion);
}
function consultaExternaSQL($sql, $arrayType =3D SISTEMA_ASSOC) {
$this->consulta =3D NULL;
$this->cadenaSQL =3D $sql;
$this->conectar();
$this->conexion->consultaInternaSQL($sql);
if ($this->conexion->numeroTuplasResultado() > 0) $this->consulta =3D
$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 =3D $this->consultaExternaSQL("SELECT max(id) AS maximo FROM
".$nombreTabla."");
$consulta =3D array_pop($consulta);
if (!empty($consulta['maximo'])) return $consulta['maximo'] + 1;
else return 1;
}
}