GatorV: muchisimas gracias!!!! no sabes como me zafastes..... voy a tener que estudiar bien el tema ese de la 'visibilidad'
Ahora anda bien.... y ademas de
getTotal(), hice
getTotalSelected() y
getTotalAffected() asi si hay anidamientos entre un INSERT y un SELECT (como vos me decias) ya puedo obtener por separado los resultados
getTotal() lo he dejado porque aunque es muy particular... es el caso mas comun xD
Código PHP:
<?php
abstract class database{
protected $_con;
protected $_user;
protected $_pass;
protected $_server;
protected $_db;
protected $_consulta;
protected $_resultado;
protected $_pos;
function setServer($server)
{
$this->_server = $server;
}
function setUser($user)
{
$this->_user = $user;
}
function setPass($pass)
{
$this->_pass=$pass;
}
abstract function connect($db);
abstract function execute($consulta);
abstract function getTotal();
}
class sql extends database
{
private static $_instancia;
public $_server = 'localhost';
/* Si es privado, no se usa nunca */
private function __construct(){}
public static function getInstance()
{
if (!isset(self::$_instancia)) {
$obj = __CLASS__;
self::$_instancia = new $obj;
}
return self::$_instancia;
}
public function connect($db)
{
if (!isset($this->_con)){
$this->_db = $db;
$this->_con = mysql_connect(
$this->_server,
$this->_user,
$this->_pass) or die(mysql_error()
);
mysql_select_db($db) or die(mysql_error());
}
}
public function execute($sql)
{
$this->_consulta = $sql;
$this->_resultado = mysql_query($this->_consulta);
}
public function next()
{
$this->_pos++;
}
public function prev()
{
$this->pos--;
}
public function getTotal() // para consultas simples (sin anidamientos)
{
if (strtolower($this->_consulta[0]) == 's'){
return mysql_num_rows($this->_resultado);
}else{
return mysql_affected_rows($this->_con);
}
}
public function getTotalSelected()
{
return mysql_num_rows($this->_resultado);
}
public function getTotalAffected()
{
return mysql_affected_rows($this->_con);
}
public function getOne($campo)
{
return mysql_result($this->_resultado,$this->_pos,$campo);
}
public function getMulti() // get into an array
{
return mysql_fetch_array($this->_resultado);
}
public function insert ($my_table, $my_array) { // mysql_insert_array: as opposite of mysql_fetch_array:
$keys = array_keys($my_array);
$values = array_values($my_array);
$sql = 'INSERT INTO ' . $my_table .' VALUES ("' . implode('","', $values) . '")';
$this->execute ($sql);
}
public function goRow ($fila_num){
return mysql_data_seek ($this->_resultado, $fila_num);
}
public function getRow (){ // se trae una fila Y deja los campos en un array
return mysql_fetch_assoc($this->_resultado);
}
private function __clone()
{
throw new Exception('No se permite clonar');
}
}
?>
Quiero expresar mi agradecimiento por su infinita paciencia y constante colaboracion a
Enrique y
GatorV