Bueno Describo la calse que tengo hasta ahora y bueno puede reusarse y aclaro que todavia aun le falta mucho por hacer. tengo la
clase Conexion dentro del script clsConexionMssql.php aqui aun le falta la parte para recibir los datos y armar el query para ejecutar procediminetos almacenados.
Código PHP:
class Conexion
{ public $servidor;
public $usuario;
public $pass;
public $DB;
public $dbCN;
public $conn;
public $rta;
public $select_db;
public $pagRed;
public $query;
public $result;
public $param=array();
function __construct()
{
$this->servidor="localhost";
$this->DB="pubs";
$this->usuario="tuusuario";
$this->pass="tupassword";
}
function Conecta()
{
$this->usuario=$usuario;
$this->pass=$password;
$this->dbCN = mssql_connect($this->servidor,$this->usuario,$this->pass);
if($this->dbCN)
{
$this->select_db=self::selectBD($this->DB,$this->dbCN);
if($this->select_db)
{
return $this->dbCN;
}
}
else
{
return false;
}
}
function selectBD($db,$conn)
{ $this->conn=$conn;
$this->select_db = mssql_select_db($this->DB,$this->conn);
if($this->select_db)
{
return $this->select_db;
}
else
{
return false;
}
}
function cerrarBD($conn)
{
/*implementada en al clase hija*/
}
}
Luego la clase
AdminDatos dentro del script clsAdminDatos.php que hereda de la clase Conexion:
Código PHP:
include_once("clsConexionMssql.php");
class AdminDatos extends Conexion
{ public $rs;
public $num_Rows;
public $regent_condb;
public $rsQuery;
function __construct()
{
parent::__construct();
}
function conectar()
{ $this->regent_condb =parent::Conecta();
return $this->regent_condb;
}
function Execute($query)
{
$this->rsQuery=mssql_query($query,$this->regent_condb);
if( $this->rsQuery)
{
return $this->rsQuery;
//$this->cerrarBD($this->regent_condb);/*ver si estaria bien aqui o cerrariamos desde afuera*/
}
else
{
return false;
//$this->cerrarBD($this->regent_condb);
}
}
public function ExecuteAndGetResult($query){
$this->rsQuery=$query;
$queryResult = $this->Execute($query);
if($queryResult)
{ $i=0;
while ($row = mssql_fetch_array($queryResult)){
foreach($row as $key => $valor) {
$resultArray[$i][$key]=$valor;
}
$i++;
}
return $resultArray;
}
elseif($queryResult==false)
{
echo "Hubo un error al intentar ejecutar el Query: ".$query."<br>Error: ".mssql_get_last_message();
}
}
public function numRows($query){
$this->rsQuery=$query;
$this->num_Rows= mssql_num_rows($this->Execute( $this->rsQuery));
return $this->num_Rows;
}
function cerrarBD($conn) {
if (mssql_close($conn)) {
return true;
}
else {
return false;
}
}
}
Luego la clase
Autor que hereda de Admin que guradara sus propios metodos y atributos.
Código PHP:
include_once("clsAdminDatos.php");
class Autor extends AdminDatos
{
var $nombre;
}
y ahora probar la clase Autor testAutor.php:
Código PHP:
include_once("clsAdminDatos.php");
include_once("clsAutor.php");
$autor=new Autor();
$cnn=$autor->conectar();
$query="execute pubs..autor_traer";
$result1=$autor->ExecuteAndGetResult($query);
foreach ($result1 as $key=>$valor)
{
echo $valor[1]."<br>";
}
echo $numeroRows=$autor->numRows($query);
y este es script del store procedure
Código:
CREATE PROCEDURE autor_traer AS
SELECT *
FROM authors
GO
Como les dije aun falta mucho por hace pero en eso ya estamos trabajando Bienvenidas las sugerencias.