source: admin/WebConsole/clases/AdoPhp.php

qndtest
Last change on this file was 8c7b374, checked in by Ramón M. Gómez <ramongomez@…>, 5 years ago

#834: More PHP/HTML/CSS code cleanup.

  • Property mode set to 100644
File size: 27.5 KB
Line 
1<?php
2/*================================================================================
3Clase para conectar con una base de datos.
4
5Especificaciones:
6        - Estado de la conexión($estado)
7                0: No conectado
8                1: Conectado
9                2: Se está intentando conectar
10
11================================================================================*/
12
13class Conexion{
14        var $basedatos;                                 // Base de datos
15        var $servidor;                                  // Servidor de Base de datos
16        var $usuario;                                   // Nombre de usuario
17        var $password;                                  // Clave de usuario
18        var $controlador;                               // Controlador
19        var $estado;                                    // Estado de la conexion
20        var $proveedor;                                 // Proveedor de BD
21        var $error;                                     // Colección de errores ocurridos durante el proceso (Código de error)
22        var $ultimoerror;                               // Último error detectado
23        var $inderror;                                  // Número de errores ocurridos durante el proceso
24        var $msgerrores=array(
25                "No se ha producido ningn error",
26                "001 : conexiónError - La conexión no se pudo establecer",
27                "002 : conexiónError - Se estableció la conexión con el servidor pero la base de datos no responde",
28                "003 : conexiónError - No se ha podido cerrar la actual conexión",
29                "004 : conexiónError - El objeto está ocupado intentando establecer una conexiónanterior",
30                "005 : conexiónError - La conexiónya está cerrada",
31                "006 : conexiónError - No se ha especificado ningn servidor de base de datos",
32                "007 : conexiónError - No se ha especificado ningn usuario de la base de datos",
33                "008 : conexiónError - No se ha especificado password de usuario",
34                "009 : conexiónError - No se ha especificado ninguna base de datos",
35                "010 : conexiónError - No se ha especificado ningn proveedor de bases de datos",
36        );
37        /*--------------------------------------------------------------------------------------------*/
38        function __construct(){ // Constructor de la clase
39                $this->inderror=0;
40                $this->ultimoerror=0;
41                $this->estado=0;
42        } 
43        /* -------------------------------------------------------------------------------------------
44                Adquiere o actualiza los datos necesarias para establecer conexiones
45               
46                Parámetros de entrada:
47                        servidor: Servidor donde se ubica la base de datos
48                        usuario : Un usuario con acceso al servidor
49                        passwor : Clave de usuario
50                        basedato: Base de datos a la se quiere acceder
51                        proveedor: Proveedor de Base de datos
52
53                Devuelve :
54                        true : Si los datos aportadospara establecer conexiones son correctos
55                        false: En caso contrario
56
57                En el caso de devolver false, la función TomaUltimoError() devuelve el error ocurrido
58        ----------------------------------------------------------------------------------------------*/
59        function CadenaConexion($servidor,$usuario,$password,$basedatos,$proveedor){
60                $this->servidor=$servidor; 
61                $this->usuario=$usuario;
62                $this->password=$password;
63                $this->basedatos=$basedatos;
64                $this->proveedor=$proveedor;
65                if (!$this->_cadena_conexion()) return(false); else return(true);
66        }
67        /* -------------------------------------------------------------------------------------------
68                Abre una conexión
69
70                Devuelve :
71                        true : Si la apertura de la conexiónha sido satisfactoria
72                        false: En caso contrario
73
74                En el caso de devolver false, la función TomaUltimoError() devuelve el error ocurrido
75        ----------------------------------------------------------------------------------------------*/
76        function Abrir(){
77                $this->inderror=-1; // Inicializar contador de errores
78                $this->ultimoerror=-1;
79                $MAXIMOS_INTENTOS_DE_CONECCION=10;
80                if (!$this->_cadena_conexion()) return(false); // Comprueba si los datos necesarios para conexiones se han aportado
81                switch ($this->estado) {
82                        case 1: // Existe actualmente una conexiónabierta que se sustituir�por la nueva
83                                if (mysqli_close($this->controlador)){ // Se cierra la conexion actual
84                                        $this->estado=0;
85                                        $intentos_de_conexion=0;
86                                        while(true){
87                                                $intentos_de_conexion++;
88                                                $resul=($this->_nueva_conexion());
89                                                if ($resul || $intentos_de_conexion>$MAXIMOS_INTENTOS_DE_CONECCION) return($resul);
90                                                sleep(1); // Espera 1 segundo para intentar la conexiónde nuevo
91                                        }
92                                }       
93                                else{ // Error al cerrar la conexi�
94                                        $this->error[$this->inderror++]=3;
95                                        $this->ultimoerror=3;
96                                        return(false);
97                                }
98                                break;
99                        case 2: // Actualmente este objeto está ocupado intentando establecer otra conexión
100                                $this->error[$this->inderror++]=4;
101                                $this->ultimoerror=4;
102                                return(false);
103                                break;
104                        default : // No existe actualmente ninguna conexiónabierta, se abrirá una nueva
105                                $intentos_de_conexion=0;
106                                while(true){
107                                        $intentos_de_conexion++;
108                                        $resul=($this->_nueva_conexion());
109                                        if ($resul || $intentos_de_conexion>$MAXIMOS_INTENTOS_DE_CONECCION) return($resul);
110                                        sleep(1); // Espera 1 segundo para intentar la conexiónde nuevo
111                                }
112                }
113        }
114        /* -------------------------------------------------------------------------------------------
115                Cierra una conexión
116               
117                Devuelve :
118                        true : Si la conexiónse ha cerrado satisfactoriamente
119                        false: En caso contrario
120
121                En el caso de devolver false, la función TomaUltimoError() devuelve el error ocurrido
122        ----------------------------------------------------------------------------------------------*/
123        function Cerrar(){
124                $this->inderror=-1; // Inicializar contador de errores
125                $this->ultimoerror=-1;
126                switch ($this->estado) {
127                        case 1: // Actualmente la conexion está abierta
128                                if (mysqli_close($this->controlador)){ // Se cierra la conexion actual
129                                        $this->estado=0;
130                                        $this->error[$this->inderror++]=0;
131                                        $this->ultimoerror=0;
132                                        return(true);
133                                }
134                                else{ // Error al cerrar la conexión
135                                        $this->error[$this->inderror++]=3;
136                                        $this->ultimoerror=3;
137                                        return(false);
138                                }
139                                break;
140                        case 2: // Actualmente este objeto está ocupado intentando establecer otra conexión
141                                $this->error[$this->inderror++]=4;
142                                $this->ultimoerror=4;
143                                return(false);
144                                break;
145
146                        default :       // Actualmente la conexión está ya cerrada
147                                $this->error[$this->inderror++]=5;
148                                $this->ultimoerror=5;
149                                return(false);
150                }
151        }
152        /* -------------------------------------------------------------------------------------------
153                Establece una nueva conexión. Este método es privado y sólo lo puede ejecutar la propia
154                clase desde el método pblico Abrir.
155        ----------------------------------------------------------------------------------------------*/
156        function _nueva_conexion(){
157                $this->estado=2;// Intenta la conexion
158                if ($this->controlador=mysqli_connect($this->servidor,$this->usuario,$this->password)){// Conexion O.K.
159                        $this->estado=1; // La conexion con el servidor se estableció
160                        if (mysqli_select_db($this->controlador, $this->basedatos)){// Base datos O.K.
161                                $this->error[$this->inderror++]=0;
162                                $this->ultimoerror=0;
163                                return(true);
164                        }
165                        else{ // Problemas con la base de datos
166                                $this->error[$this->inderror++]=2;
167                                $this->ultimoerror=2;
168                                if (mysqli_close($this->controlador)) $this->estado=0; // Se cierra la conexion
169                                return(false); 
170                        }
171                }
172                else{ // Problemas con la conexion
173                        $this->estado=0;
174                        $this->error[$this->inderror++]=1;
175                        $this->ultimoerror=1;
176                        return(false); 
177                }
178        }
179        /* -------------------------------------------------------------------------------------------
180                Establece una sistema UTF8 para las consultas
181        ----------------------------------------------------------------------------------------------*/
182        function SetUtf8(){
183                        mysqli_query($this->controlador, "SET NAMES 'utf8'");
184        }
185        /* -------------------------------------------------------------------------------------------
186                Revisa y detecta las condiciones que deben cumplir los datos necesarios para establecer
187                conexiones
188
189                Devuelve :
190                        true : Si los datos aportados son correctos
191                        false: Si algn dato NO ha sido aportado o es incorrecto
192               
193                Este método es privado y sólo lo ejecutan métodos pblicos de la propia clase
194        ----------------------------------------------------------------------------------------------*/
195        function _cadena_conexion(){
196
197                if ($this->servidor==null){
198                        $this->error[$this->inderror++]=6; // Servidor no establecido
199                        $this->ultimoerror=6;
200                        return(false);
201                }
202                if ($this->usuario==null){
203                        $this->error[$this->inderror++]=7;// usuario no establecido
204                        $this->ultimoerror=7;
205                        return(false);
206                }
207                if ($this->password==null){
208                        $this->error[$this->inderror++]=8; // password no establecido
209                        $this->ultimoerror=8;
210                        return(false);
211                }
212                if ($this->basedatos==null){
213                        $this->error[$this->inderror++]=9; // base de datos no establecido
214                        $this->ultimoerror=9;
215                        return(false);
216                }
217                if ($this->proveedor==null){
218                        $this->error[$this->inderror++]=10; // proveedor no establecido
219                        $this->ultimoerror=10;
220                        return(false);
221                }
222                $this->error[$this->inderror++]=0; // Datos de conexióncorrectos
223                $this->ultimoerror=0;
224                return(true);
225        }
226        /* -------------------------------------------------------------------------------------------
227                Devuelve el c�igo del ltimo error ocurrido durante el proceso anterior.
228        ----------------------------------------------------------------------------------------------*/
229        function UltimoError(){
230                return($this->ultimoerror);
231        }
232        /* -------------------------------------------------------------------------------------------
233                Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
234        ----------------------------------------------------------------------------------------------*/
235        function DescripUltimoError(){
236                return($this->msgerrores[$this->ultimoerror]);
237        }
238}
239/*=========================================================================================
240        Clase para usarla con la clase comando.
241
242        Especificaciones:
243       
244                Esta clase tiene dos propiedades que definen su contenido
245                        nombre=nombre del parametro
246                        valor = valor de dicho parámetro
247                        tipo = tipo de parametro:
248                                                0: El valor del parámetro debe ir encerrado entre comillas simples
249                                                1: El valor del parámetro no necesita ir entre comillas simples
250========================================================================================*/
251class parametro{
252        var $nombre;
253        var $valor;
254        var $tipo;
255        /*--------------------------------------------------------------------------------------------*/
256        function __construct($nombre="SinNombre", $valor="", $tipo="0"){ // Constructor de la clase
257                $this->SetParametro($nombre,$valor,$tipo);
258        }
259        /* -------------------------------------------------------------------------------------------
260                Modifica los valores de las propiedades de la clase
261        ----------------------------------------------------------------------------------------------*/
262        function SetParametro($nombre,$valor,$tipo){
263                $this->nombre=$nombre;
264                $this->valor=$valor;
265                $this->tipo=$tipo;
266                if($tipo==1 && empty($valor)) $this->valor=0;
267        }
268}
269/*==========================================================================================
270        Clase para manipular bases de datos a traves de una conexiónprevia.
271
272        Especificaciones:
273       
274                Las sentencias SQL pueden contener parámetros que pueden ser sustituidos por el valor
275                de los objetos parámetro. Estos parámetros tendrán la forma: @nombre_del_parametro
276==================================================================================================*/
277class Comando{
278        var $texto;
279        var $Conexion;
280        var $parametros=array();
281        var $Recordset;
282        var $resul;
283        var $error;                                             // Error
284        var $ultimoerror;                               // Ultimo error detectado
285        var $inderror;                                  // Contador de errores
286        var $msgerrores=array(
287                "No se ha producido ningn error",
288                "001 : Comando Error - No se ha establecido el texto del comando",
289                "002 : Comando Error - No se ha establecido la conexióndel comando",
290                "003 : Comando Error - No se ha abierto la conexion",
291                "004 : Comando Error - La sentencia SQL del comando no es correcta",
292                "005 : Comando Error - No se ha podido recuperar el valor @@identity de la ltima clave insertada",
293        );     
294        /*--------------------------------------------------------------------------------------------*/
295        function __construct(){ // Constructor de la clase
296                $this->inderror=0;
297                $this->ultimoerror=0;
298                $this->Recordset=new Recordset;
299        } 
300        /* -------------------------------------------------------------------------------------------
301                Devuelve el código del ltimo error ocurrido durante el proceso anterior.
302        ----------------------------------------------------------------------------------------------*/
303        function UltimoError(){
304                return($this->ultimoerror);
305        }
306        /* -------------------------------------------------------------------------------------------
307                Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
308        ----------------------------------------------------------------------------------------------*/
309        function DescripUltimoError(){
310                return($this->msgerrores[$this->ultimoerror]);
311        }
312        /* -------------------------------------------------------------------------------------------
313                Añade un parámetro a la colección de parametros. La matriz que implementa la colección
314                es una matriz asociativa cuyo indice asociativo es el nombre del parámetro
315               
316                Parámetros de entrada:
317                        objparam: Un objeto parametro
318        ---------------------------------------------------------------------------------------------*/
319        function AddParametro($objparam){
320                $tbparametro["nombre"]=$objparam->nombre;
321                $tbparametro["valor"]=$objparam->valor;
322                $tbparametro["tipo"]=$objparam->tipo;
323                $this->parametros[]=$tbparametro;
324        } 
325        /* -------------------------------------------------------------------------------------------
326                Añade un parámetro a la colección de parametros. La matriz que implementa la colección
327                es una matriz asociativa cuyo indice asociativo es el del parámetro
328               
329                Parámetros de entrada:
330                        nombre: El nombre del parámetro
331                        valor : El valor del parámetro
332                        tipo = tipo de parametro:
333                                                0: El valor del parámetro debe ir encerrado entre comillas simples
334                                                1: El valor del parámetro no necesita ir entre comillas simples
335        Versión 1.1: Al incluir los valores se escapan caracteres especiales (ticket #777)
336        Autor: Irina Gómez - ETSII, Universidad de Sevilla
337        Fecha: 2017-03-30
338
339        ---------------------------------------------------------------------------------------------*/
340        function CreaParametro($nombre,$valor,$tipo){
341                for($i=0;$i<sizeof($this->parametros);$i++){
342                        if($this->parametros[$i]["nombre"]==$nombre){
343                                $this->parametros[$i]["valor"]=mysqli_real_escape_string($this->Conexion->controlador, $valor);
344                                return;
345                        }
346                }       
347                $p = new parametro($nombre,mysqli_real_escape_string($this->Conexion->controlador, $valor),$tipo);
348                $this->AddParametro($p);
349        }
350
351        /* -------------------------------------------------------------------------------------------
352                Sustituye el valor de un parámetro existente por otro
353                Parámetros de entrada:
354                        nombre: El nombre del parámetro
355                        valor : El nuevo valor del parámetro
356        Versión 1.1: Al incluir los valores se escapan caracteres especiales (ticket #777)
357        Autor: Irina Gómez - ETSII, Universidad de Sevilla
358        Fecha: 2017-03-30
359        ---------------------------------------------------------------------------------------------*/
360        function ParamSetValor($nombre,$valor){
361                for($i=0;$i<sizeof($this->parametros);$i++){
362                        if($this->parametros[$i]["nombre"]==$nombre)
363                                $this->parametros[$i]["valor"]=mysqli_real_escape_string($this->Conexion->controlador, $valor);
364                }
365        }
366        /* -------------------------------------------------------------------------------------------
367                Establece la conexiónque se usará para ejecutar las acciones pertinentes
368
369                Parámetros de entrada:
370                        objconexion: Un objeto conexion
371        ---------------------------------------------------------------------------------------------*/
372        function EstableceConexion($objconexion){
373                $this->Conexion= $objconexion;
374        }
375        /* -------------------------------------------------------------------------------------------
376                Establece la conexiónque se usará para ejecutar las acciones pertinentes
377
378                Parámetros de entrada:
379                        textocomando: Un texto con la sentencia SQL (Puede contener parámetros)
380        ---------------------------------------------------------------------------------------------*/
381        function EstableceTexto($textocomando){
382                $this->texto=$textocomando;
383        }
384        /* -------------------------------------------------------------------------------------------
385                Sustituye el valor de los parametros en la expresión que forma el texto del Comando
386        ---------------------------------------------------------------------------------------------*/
387        function Traduce(){
388                $execomando=$this->texto;
389                if (sizeof($this->parametros)>0){ // Hay parámetros que sustituir
390                        foreach($this->parametros as $parametro){
391                                if ($parametro["tipo"]==0) // Tipo alfanumérico
392                                        $execomando=str_replace($parametro["nombre"],"'".$parametro["valor"]."'",$execomando);
393                                else
394                                        $execomando=str_replace($parametro["nombre"],$parametro["valor"],$execomando);
395                        }
396                }
397                $this->texto=$execomando;
398        }
399        /* -------------------------------------------------------------------------------------------
400                Ejecuta la sentencia SQL contenida en la propiedad texto
401        ---------------------------------------------------------------------------------------------*/
402        function Ejecutar(){
403                $this->inderror=-1; // Inicializar contador de errores
404                $this->ultimoerror=-1;
405                if ($this->texto==null){
406                        $this->error[$this->inderror++]=1; // Texto no especificado
407                        $this->ultimoerror=1;
408                        return(false);
409                }
410                else{
411                        if ($this->Conexion==null){
412                                $this->error[$this->inderror++]=2; // conexión NO establecida
413                                $this->ultimoerror=2;
414                                return(false);
415                        }
416                        else{
417                                if ($this->Conexion->estado==0){
418                                        $this->error[$this->inderror++]=3; // conexiónNO abierta
419                                        $this->ultimoerror=3;
420                                        return(false);
421                                }
422                        }
423                }
424                $this->Traduce();
425                if (!$this->resul=mysqli_query($this->Conexion->controlador, $this->texto)){
426                        $this->error[$this->inderror++]=4; // Error en la sentencia SQL del comando
427                        $this->ultimoerror=4;
428                        return(false);
429                }
430               
431                $sqlstr=trim($this->texto);
432               
433                if (strtoupper(substr($sqlstr,0,6))=="SELECT"){
434                        $this->Recordset->Inicializar();
435                        $this->Recordset->filas=$this->resul;
436                        $this->Recordset->numerodecampos=mysqli_num_fields($this->Recordset->filas);
437                        $this->Recordset->numeroderegistros=mysqli_num_rows($this->Recordset->filas);
438                        if ($this->Recordset->numeroderegistros>0){
439                                $this->Recordset->BOF=false;
440                                $this->Recordset->EOF=false;
441                                $this->Recordset->campos=mysqli_fetch_array($this->Recordset->filas);
442                        }
443                }
444
445                $this->error[$this->inderror++]=0; // Comando ejecutado correctamante
446                $this->ultimoerror=0;
447                return(true);
448        }
449        /* -------------------------------------------------------------------------------------------
450                Esta función recupera el ltimo nmero asignado a una clave autonum�ica de una tabla
451        ---------------------------------------------------------------------------------------------*/
452        function Autonumerico(){
453                $ulreg=mysqli_insert_id($this->Conexion->controlador);
454                return($ulreg);
455        }
456}
457/*=========================================================================================
458        Clase para consultar tablas y vistas de una base de datos.
459
460        Especificaciones:
461                - Estado del recordset ($estado)
462                0: Cerrado
463                1: Abierto
464=========================================================================================*/
465class Recordset{
466        var $Comando;
467        var $filas;
468        var $BOF,$EOF,$estado;
469        var $campos;
470        var $numeroderegistros,$numerodecampos,$posicion;
471
472        var $error;                                             // Error
473        var $ultimoerror;                               // Ultimo error detectado
474        var $inderror;                                  // Contador de errores
475        var $msgerrores=array(
476                "No se ha producido ningn error",
477                "001 : Recordset Error - Comando no establecido",
478                "002 : Recordset Error - No se ha establecido la conexióndel comando",
479                "003 : Recordset Error - No se ha abierto la conexion",
480                "004 : Recordset Error - No se pudo abrir la consulta",
481                "005 : Recordset Error - La sentencia SQL del comando no contiene la clausula SELECT",
482                "006 : Recordset Error - No se puede liberar la consulta",
483        );     
484        /*--------------------------------------------------------------------------------------------*/
485        function __construct(){ // Constructor de la clase
486                $this->Inicializar();
487        }
488        /* -------------------------------------------------------------------------------------------
489                Inicializa propiedades de las clase
490        ----------------------------------------------------------------------------------------------*/
491        function Inicializar(){
492                $this->BOF=true;
493                $this->EOF=true;
494                $this->posicion=0;
495                $this->numeroderegistros=0;
496                $this->numerodecampos=0;
497                $this->estado=0;
498        } 
499        /* -------------------------------------------------------------------------------------------
500                Devuelve el código del ltimo error ocurrido durante el proceso anterior.
501        ----------------------------------------------------------------------------------------------*/
502        function UltimoError(){
503                return($this->ultimoerror);
504        }
505        /* -------------------------------------------------------------------------------------------
506                Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
507        ----------------------------------------------------------------------------------------------*/
508        function DescripUltimoError(){
509                return($this->msgerrores[$this->ultimoerror]);
510        }
511        /* -------------------------------------------------------------------------------------------
512                Establece el comando que se usará para ejecutar las consultas pertinentes
513
514                Parámetros de entrada:
515                        objcomando: Un objeto comando con la sentencia SQL (Puede contener parámetros)
516
517                Devuelve :
518                        true : Si el texto del comando contiene la clausula SELECT
519                        false: En caso contrario
520
521                En el caso de devolver false, la función TomaUltimoError() devuelve el error ocurrido
522        ---------------------------------------------------------------------------------------------*/
523        function EstableceComando($objcomando){
524                $this->inderror=-1; // Inicializar contador de errores
525                $this->ultimoerror=-1;
526                if (stristr($objcomando->texto,"select")){
527                        $this->Comando=$objcomando;
528                        $this->error[$this->inderror++]=0; // Comando válido, contiene "SELECT"
529                        $this->ultimoerror=0;
530                        return(true);
531                }
532                else{
533                        $this->error[$this->inderror++]=5; // Comando no valido, NO contiene "SELECT"
534                        $this->ultimoerror=5;
535                        return(false);
536                }
537        }
538        /* -------------------------------------------------------------------------------------------
539                Sustituye el valor de los parametros en la expresión que forma el texto del Comando
540        ---------------------------------------------------------------------------------------------*/
541        function Traduce(){
542                $execomando=$this->Comando->texto;
543                if (sizeof($this->Comando->parametros)>0){ // Hay parámetros que sustituir
544                        foreach($this->Comando->parametros as $parametro){
545                                if ($parametro["tipo"]==0) // Tipo alfanumérico
546                                        $execomando=str_replace($parametro["nombre"],"'".$parametro["valor"]."'",$execomando);
547                                else
548                                        $execomando=str_replace($parametro["nombre"],$parametro["valor"],$execomando);
549                        }
550                }
551                $this->Comando->texto=$execomando;
552        }
553        /* -------------------------------------------------------------------------------------------
554                Recupera registros de la base de datos
555        ---------------------------------------------------------------------------------------------*/
556        function Abrir(){
557                $this->inderror=-1; // Inicializar contador de errores
558                $this->ultimoerror=-1;
559                if ($this->Comando==null){
560                        $this->error[$this->inderror++]=1; // Comando no especificado
561                        $this->ultimoerror=1;
562                        return(false);
563                }
564                else{
565                        if ($this->Comando->Conexion==null){
566                                $this->error[$this->inderror++]=2; // conexiónNO establecida
567                                $this->ultimoerror=2;
568                                return(false);
569                        }
570                        else{
571                                if ($this->Comando->Conexion->estado==0){
572                                        $this->error[$this->inderror++]=3; // conexiónNO abierta
573                                        $this->ultimoerror=3;
574                                        return(false);
575                                }
576                        }
577                }
578                $this->Traduce();
579                $this->Inicializar();
580                if (!$this->filas=mysqli_query($this->Comando->Conexion->controlador, $this->Comando->texto)){
581                        $this->error[$this->inderror++]=4; // Error en la sentencia SQL del comando o al abrir la consula
582                        $this->ultimoerror=4;
583                        return(false);
584                }
585                $this->numeroderegistros=mysqli_num_rows($this->filas); // La consulta se ha realizado con éxito
586                $this->numerodecampos=mysqli_num_fields($this->filas);
587                if ($this->numeroderegistros>0){
588                        $this->BOF=false;
589                        $this->EOF=false;
590                        $this->campos=mysqli_fetch_array($this->filas);
591                }
592                $this->estado=1; // Recordset abierto
593                $this->error[$this->inderror++]=0; // Recuperación de registros correcta
594                $this->ultimoerror=0;
595                return(true);
596        }
597        /* -------------------------------------------------------------------------------------------
598                Libera los registros de una consulta de la base de datos
599        ---------------------------------------------------------------------------------------------*/
600        function Cerrar(){
601                $this->inderror=-1; // Inicializar contador de errores
602                $this->ultimoerror=-1;
603                mysqli_free_result($this->filas);
604                $this->Inicializar();
605                $this->error[$this->inderror++]=0; // Recuperaci� de registros correcta
606                $this->ultimoerror=0;
607                return(true);
608        }
609        /* -------------------------------------------------------------------------------------------
610                Mueve el puntero de lectura al siguiente registro del recordset
611        ---------------------------------------------------------------------------------------------*/
612        function Siguiente(){
613                if (!$this->EOF){
614                        $this->posicion++;
615                        if ($this->posicion==$this->numeroderegistros)
616                                $this->EOF=true;
617                        else{
618                                if (mysqli_data_seek($this->filas,$this->posicion))
619                                        $this->campos=mysqli_fetch_array($this->filas);
620                        }
621                }
622        }
623        /* -------------------------------------------------------------------------------------------
624                Mueve el puntero de lectura al anterior registro del recordset
625        ---------------------------------------------------------------------------------------------*/
626        function Anterior(){
627                if (!$this->BOF){
628                        $this->posicion--;
629                        if ($this->posicion<0)
630                                $this->BOF=true;
631                        elseif (mysqli_data_seek($this->filas,$this->posicion)) {
632                                        $this->campos=mysqli_fetch_array($this->filas);
633                        }
634                }
635        }
636        /* -------------------------------------------------------------------------------------------
637                Mueve el puntero de lectura al primer registro del recordset
638        ---------------------------------------------------------------------------------------------*/
639        function Primero(){
640                if ($this->numeroderegistros>0){
641                        $this->posicion=0;
642                        if (mysqli_data_seek($this->filas,$this->posicion))
643                                $this->campos=mysqli_fetch_array($this->filas);
644                }
645        }
646        /* -------------------------------------------------------------------------------------------
647                Mueve el puntero de lectura al ltimo registro del recordset
648        ---------------------------------------------------------------------------------------------*/
649        function Ultimo(){
650                if ($this->numeroderegistros>0){
651                        $this->posicion=$this->numeroderegistros-1;
652                        if (mysqli_data_seek($this->filas,$this->posicion))
653                                $this->campos=mysqli_fetch_array($this->filas);
654                }
655        }
656        /* -------------------------------------------------------------------------------------------
657                Esta función devuelve una matriz asociativa con el nombre de los campos del recordset
658        ---------------------------------------------------------------------------------------------*/
659        function DatosNombres(){
660                if (mysqli_data_seek($this->filas,$this->posicion))
661                        return(mysqli_fetch_assoc($this->filas));
662                return("");
663        }
664        /* -------------------------------------------------------------------------------------------
665                Esta función devuelve información sobre los campos de la tabla
666        ---------------------------------------------------------------------------------------------*/
667        function InfoCampos(){
668                $infocampos= array ();
669                while ($row = mysqli_fetch_field($this->filas)) {
670                        $campo["name"]=$row->name;
671                        $campo["column_source"]=$row->column_source;
672                        $campo["maxlon"]=$row->max_length;
673                        $campo["numeric"]=$row->numeric;
674                        array_push($infocampos,$campo);
675                }
676                return($infocampos);
677        }
678}
679
Note: See TracBrowser for help on using the repository browser.