Foros del Web » Programando para Internet » PHP »

Clase para acceder a BBDD

Estas en el tema de Clase para acceder a BBDD en el foro de PHP en Foros del Web. Dejaré una clase algo grande en varias respuestas para aquellos que se quieran interesar y probarla, esta clase maneja de manera muy sencilla todas las ...
  #1 (permalink)  
Antiguo 17/05/2002, 03:40
 
Fecha de Ingreso: abril-2002
Mensajes: 23
Antigüedad: 22 años
Puntos: 0
Clase para acceder a BBDD

Dejaré una clase algo grande en varias respuestas para aquellos que se quieran interesar y probarla, esta clase maneja de manera muy sencilla todas las operaciones más comunes sobre una base de datos, perdonar por ponerla así.

<?
$usuarios="usuarios"; //(obligatorio)
$root="bdcivab"; //directorio web (opcional)
$servidor="localhost"; //(obligatorio)
$rutfich="c:/inetpub/wwwroot"; //ruta web (opcional)
$nomfich="images"; //directorio imagenes (opcional)
$database="civab"; //(obligatorio)
$usuariodatabase="santiago"; //(obligatorio)
$clavedatabase="santiago"; //(obligatorio)




function CBBDD(){
global $servidor, $database, $usuariodatabase, $clavedatabase;
global $root, $rutfich;

//este es el constructor de la clase de base de datos
$this-> Sever = $servidor;//localhost
$this-> Database = $database;//"psoeab";
$this-> User = $usuariodatabase;//"santiago";
$this-> Password = $clavedatabase;//"santiago";
$this-> root = $rutfich."/".$root."/";
$this-> Conn ="";
$this-> Trial = array();
$this-> Hits = array();
$this-> autoapprove = true;




}
function devuelvebase(){
return $this->Database;
}

function error($text)
{
$no = mysql_errno();
$msg = mysql_error();
echo "[$text] ($no: $msg) <BR>\n";
}

function init()
{
$user = $this->User;
$password = $this->Password;
$server = $this->Server;
$database = $this->Database;
$conn = mysql_connect($server, $user,$password);
if (!$conn)
{
$this-error("No connection !");
}

if (!mysql_select_db($database, $conn))
{
$this->error("No database found");
}

$this->Conn = $conn;
return true;
}

/*
Esta función devuelve un vector donde cada entrada del vector, consta de otro vector de objetos
de tipo DatoAtributo($b,$a,$c), en el que ese objeto representa el nombre, valor y tipo de ese atributo
*/
  #2 (permalink)  
Antiguo 17/05/2002, 03:41
 
Fecha de Ingreso: abril-2002
Mensajes: 23
Antigüedad: 22 años
Puntos: 0
Re: Clase para acceder a BBDD

function select ($sql= "")
{
if (empty($sql)) { return false;}

if (!eregi("^select",$sql))
{
echo "<h2>Error in command</h2><br>\n";
}

if (empty($this->Conn)) { return false;}

$conn = $this->Conn;
$results = mysql_query($sql,$conn);
echo Mysql_error();
if ((!$results) or (empty($results)) )
{
mysql_free_result($results);
return false;
}

$count = 0;
$data = array();
// First element in array contains the num of selected rows
$data[0] = mysql_num_rows($results);
while ($row = mysql_fetch_array($results))
{
$data[$count+1] = $row;
$count++;
}
mysql_free_result($results);
return $data;

} //End function select



function insert ($sql= "")
{
if (empty($sql)) { return false;}

if (!eregi("^insert",$sql))
{
echo "<h2>Error in command</h2><br> \n";
}

if (empty($this->Conn)) { return false;}

$conn = $this->Conn;
$results = mysql_query($sql,$conn);
echo $mysql_error;
if (!$results) { return false;}

$results = mysql_insert_id();
return $results;

} //End function insert

function update ($sql= "")
{
if (empty($sql)) { return false;}

if (!eregi("^update",$sql))
{
echo "<h2>Error in command</h2><br> \n";
}

if (empty($this->Conn)) { return false;}

$conn = $this->Conn;
$results = mysql_query($sql,$conn);

if (!$results) { return false;}

$results = mysql_insert_id();
return $results;

} //End function update


function delete ($sql= "")
{
if (empty($sql)) { return false;}

if (!eregi("^delete",$sql))
{
echo "<h2>Error in command</h2><br> \n";
}

if (empty($this->Conn)) { return false;}
$conn = $this->Conn;
$results = mysql_query($sql,$conn);

if (!$results) { return false;}

return $results;

} //End function delete
  #3 (permalink)  
Antiguo 17/05/2002, 03:46
 
Fecha de Ingreso: abril-2002
Mensajes: 23
Antigüedad: 22 años
Puntos: 0
Re: Clase para acceder a BBDD

function ListTables()
{
$database = $this->Database;
$results = mysql_listtables($database);
if (!$results) { return false;}

$i = 0;
$data[0] = mysql_num_rows($results);
while ($i < mysql_num_rows($results)) {
$data[$i+1] = mysql_tablename($results, $i);
$i++;

}




return $data;

}


function create($sql="")
{

if (empty($sql)) { return false;}

if (!eregi("^create",$sql))
{
echo "<h2>Error in command</h2><br> \n";
}

if (empty($this->Conn)) { return false;}

$conn = $this->Conn;
$results = mysql_query($sql,$conn);
echo mysql_error();
if (!$results) { return false;}

return true;
}


function chequeatabla($table)
{
if (mysql_db_query($this->Database,"SHOW FIELDS FROM $table") )
{
return TRUE;
}
else
{
return FALSE;
}

}
function creardatabase($database){

if (!$conn = mysql_connect($server, $user,$password)) { return false;}


$sql = "create database ".$database;
$results = mysql_query($sql,$conn);
echo mysql_error();
if (!$results) { return false;}

return true;
}



function chequeabase($database){
$conn = mysql_connect($server, $user,$password);
if (!$conn)
{
$this-error("No connection !");
return false;
}

if (mysql_db_query($database,"SHOW tables FROM $database") )

{
return TRUE;
}
else
{
return FALSE;
}

}
function devuelveerror(){

return mysql_error();
}
} // End of EU-SQL-Class
?>



Un ejemplo es el siguiente:

<?
include "clase.php";

$bd = new CBBDD();
if (!$bd->init())
{
echo "No se puede conectar con la base de datos";
$bd->close;
exit;
}

$sql = "select * from clientes where id>5";
$rs = $bd->select($sql);
if($rs[0]>0){
$conta=1;
while ($conta <= $rs[0]){
print $rs[$conta]["columna"];
++$conta;
}
}

//Solo muestro la forma de seleccionar datos


?>
  #4 (permalink)  
Antiguo 17/05/2002, 04:01
 
Fecha de Ingreso: abril-2002
Mensajes: 23
Antigüedad: 22 años
Puntos: 0
Re: Clase para acceder a BBDD

Bueno, también dejo este pequeño código para poder paginar utilizando la clase anterior:


$bd = new CBBDD();
if (!$bd->init())
{
echo "No se puede conectar con la base de datos";
$bd->close;
exit;
}


maxregporpag = 20; // número máximo de mostrar
$sql2 = "SELECT * FROM $temas WHERE ID = $tema"; //seleccionamos todos los que hallan en ese tema
$rstema = $bd->select($sql2);

if ($rs[0]> 0){ //para el caso de que se hallan encontrado registros
$numreg = $rs[0]; //es el número de registros que saco.
$pagmaximas = (int)($numreg / $maxregporpag); //para saber el número de páginas a dividir
$restoreg = ($numreg % $maxregporpag); //para saber el resto.
if ($restoreg!=0)
$pagmaximas = $pagmaximas +1; //si tiene resto, es otra página

if ($numpagllevo==""){
$numpagllevo=1; //es la página mostrada
$inicio =1;
}
else
$inicio = (($numpagllevo -1)*$maxregporpag)+1;


if ($numpagllevo==$pagmaximas)
if($restoreg==0)
$fin = $numpagllevo* $maxregporpag;

else
if ($inicio==1)
$fin = $restoreg;

else
$fin = $inicio -1 +$restoreg;



else
$fin =$numpagllevo* $maxregporpag;


//Dentro de un formulario:


if ($numpagllevo > 1){?>
<form METHOD="POST" name="formulario" ACTION="boletin.php">
<input TYPE="hidden" NAME="numpagllevo" VALUE="<?=$numpagllevo-1?>">
<input type="image" align="left" src="anterior.gif" border="0" <?=$numpagllevo-1?>" name="Página <?=$numpagllevo-1?>">
</form>
<?}?>


<? if ($numpagllevo < $pagmaximas) {?>

<form METHOD="POST" name="formulario" ACTION="boletin.php">

<input TYPE="hidden" NAME="numpagllevo" VALUE="<?=$numpagllevo+1?>">
<input type="image" align="left" src="siguiente.gif" border="0" <?=$numpagllevo+1?>" name="Página <?=$numpagllevo+1?>">
</form>


/*Aunque sea un coñazo así, por si a alguien le interesa. Saludos*/
  #5 (permalink)  
Antiguo 17/05/2002, 11:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: Clase para acceder a BBDD

Seria mas que recomendable que subieras esta clase .. o cualquier codigo que hagas y quieras compartir con nosotros a una Web .. y dejando aqui el link para que podamos descargarla y ver el codigo alli mismo.

En php .. puedes grabar tu *.php con extension *.phps .. y asi vemos el codigo donde lo publiques (la mayoria de servidores, por no decir todos .. reconocen esa extension como codigo) .. si tubieras problemas . con un *.txt sobra tambien. Esto, junto con alguno formato .zip o el que mas te guste para poder hacer la descarga tal cual desde tu sitio, ayudaria bastante.


Te comento esto .. por la sencilla razon de que al cortar y pergar el codigo .. no va a mantener el formato y puede q alguno nos dejemos alguna linea un un simple ; por ahi y vengamos aqui diciendote . "no me funciona" ..

De todas formas .. se agradece que compartas codigo con la gente

Un saludo,
  #6 (permalink)  
Antiguo 17/05/2002, 16:07
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Clase para acceder a BBDD

Yo en su día desarrollé una que además hace abstracción entre PostgreSQL y MySQL y también soporta transacciones de PostgreSQL ( estoy ponendole las de MySQL )

www.ferydx.org/ferdydb.php

Salu2.Ferdy


<hr />Usuario registrado de Linux #241564
<a href="http://www.ferdyx.org">FerdyX.org</a> - Web Open Source
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:59.