source: admin/WebConsole/clases/AdoPhp.php @ 396232e

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 396232e was 631f14e, checked in by ramon <ramongomez@…>, 12 years ago

Versión 1.0.5, #567: Completar código para corregir ejecución duplicada de asistentes.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@3408 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100644
File size: 27.1 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� de errores ocurridos durante el proceso (C�igo de error)
22        var $ultimoerror;                               // Ultimo error detectado
23        var $inderror;                                  // Nmero de errores ocurridos durante el proceso
24        var $msgerrores=array(
25                "No se ha producido ningn error",
26                "001 : conexiónError - La conexion no se pudo establecer",
27                "002 : conexiónError - Se estableci� la conexióncon el servidor pero la base de datos no responde",
28                "003 : conexiónError - No se ha podido cerrar la actual conexi�",
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 Conexion(){ // 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�etros 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� 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� 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 (mysql_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 est�objeto est�ocupado intentando establecer otra conexi�
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� 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 (mysql_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�
135                                        $this->error[$this->inderror++]=3;
136                                        $this->ultimoerror=3;
137                                        return(false);
138                                }
139                                break;
140                        case 2: // Actualmente est�objeto est�ocupado intentando establecer otra conexi�
141                                $this->error[$this->inderror++]=4;
142                                $this->ultimoerror=4;
143                                return(false);
144                                break;
145
146                        default :       // Actualmente la conexiónest�ya cerrada
147                                $this->error[$this->inderror++]=5;
148                                $this->ultimoerror=5;
149                                return(false);
150                }
151        }
152        /* -------------------------------------------------------------------------------------------
153                Establece una nueva conexi�. Este m�odo es privado y s�o lo puede ejecutar la propia
154                clase desde el m�odo pblico Abrir.
155        ----------------------------------------------------------------------------------------------*/
156        function _nueva_conexion(){
157                $this->estado=2;// Intenta la conexion
158                if ($this->controlador=mysql_connect($this->servidor,$this->usuario,$this->password)){// Conexion O.K.
159                        $this->estado=1; // La conexion con el servidor se estableci�                   
160                        if (mysql_select_db($this->basedatos, $this->controlador)){// 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 (mysql_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                        mysql_query("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�odo es privado y s�o lo ejecutan m�odos 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�etro
247                        tipo = tipo de parametro:
248                                                0: El valor del par�etro debe ir encerrado entre comillas simples
249                                                1: El valor del par�etro no necesita ir entre comillas simples
250========================================================================================*/
251class parametro{
252        var $nombre;
253        var $valor;
254        var $tipo;
255        /*--------------------------------------------------------------------------------------------*/
256        function parametro($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�etros que pueden ser sustituidos por el valor
275                de los objetos par�etro. Estos par�etros tendr� 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 Comando(){ // Constructor de la clase
296                $this->inderror=0;
297                $this->ultimoerror=0;
298                $this->Recordset=new Recordset;
299        }
300        /* -------------------------------------------------------------------------------------------
301                Devuelve el c�igo 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�de un par�etro a la colecci� de parametros. La matriz que implementa la colecci�
314                es una matriz asociativa cuyo indice asociativo es el nombre del par�etro
315               
316                Par�etros 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�de un par�etro a la colecci� de parametros. La matriz que implementa la colecci�
327                es una matriz asociativa cuyo indice asociativo es el del par�etro
328               
329                Par�etros de entrada:
330                        nombre: El nombre del par�etro
331                        valor : El valor del par�etro
332                        tipo = tipo de parametro:
333                                                0: El valor del par�etro debe ir encerrado entre comillas simples
334                                                1: El valor del par�etro no necesita ir entre comillas simples
335
336
337        ---------------------------------------------------------------------------------------------*/
338        function CreaParametro($nombre,$valor,$tipo){
339                for($i=0;$i<sizeof($this->parametros);$i++){
340                        if($this->parametros[$i]["nombre"]==$nombre){
341                                $this->parametros[$i]["valor"]=$valor;
342                                return;
343                        }
344                }       
345                $p = new parametro($nombre,$valor,$tipo);
346                $this->AddParametro($p);
347        }
348
349        /* -------------------------------------------------------------------------------------------
350                Sustituye el valor de un par�etro existente por otro
351                Par�etros de entrada:
352                        nombre: El nombre del par�etro
353                        valor : El nuevo valor del par�etro
354        ---------------------------------------------------------------------------------------------*/
355        function ParamSetValor($nombre,$valor){
356                for($i=0;$i<sizeof($this->parametros);$i++){
357                        if($this->parametros[$i]["nombre"]==$nombre)
358                                $this->parametros[$i]["valor"]=$valor;
359                }
360        }
361        /* -------------------------------------------------------------------------------------------
362                Establece la conexiónque se usar�para ejecutar las acciones pertinentes
363
364                Par�etros de entrada:
365                        objconexion: Un objeto conexion
366        ---------------------------------------------------------------------------------------------*/
367        function EstableceConexion($objconexion){
368                $this->Conexion= $objconexion;
369        }
370        /* -------------------------------------------------------------------------------------------
371                Establece la conexiónque se usar�para ejecutar las acciones pertinentes
372
373                Par�etros de entrada:
374                        textocomando: Un texto con la sentencia SQL (Puede contener par�etros)
375        ---------------------------------------------------------------------------------------------*/
376        function EstableceTexto($textocomando){
377                $this->texto=$textocomando;
378        }
379        /* -------------------------------------------------------------------------------------------
380                Sustituye el valor de los parametros en la expresi� que forma el texto del Comando
381        ---------------------------------------------------------------------------------------------*/
382        function Traduce(){
383                $execomando=$this->texto;
384                if (sizeof($this->parametros)>0){ // Hay par�etros que sustituir
385                        foreach($this->parametros as $parametro){
386                                if ($parametro["tipo"]==0) // Tipo alfanum�ico
387                                        $execomando=str_replace($parametro["nombre"],"'".$parametro["valor"]."'",$execomando);
388                                else
389                                        $execomando=str_replace($parametro["nombre"],$parametro["valor"],$execomando);
390                        }
391                }
392                $this->texto=$execomando;
393        }
394        /* -------------------------------------------------------------------------------------------
395                Ejecuta la sentencia SQL contenida en la propiedad texto
396        ---------------------------------------------------------------------------------------------*/
397        function Ejecutar(){
398                $this->inderror=-1; // Inicializar contador de errores
399                $this->ultimoerror=-1;
400                if ($this->texto==null){
401                        $this->error[$this->inderror++]=1; // Texto no especificado
402                        $this->ultimoerror=1;
403                        return(false);
404                }
405                else{
406                        if ($this->Conexion==null){
407                                $this->error[$this->inderror++]=2; // conexiónNO establecida
408                                $this->ultimoerror=2;
409                                return(false);
410                        }
411                        else{
412                                if ($this->Conexion->estado==0){
413                                        $this->error[$this->inderror++]=3; // conexiónNO abierta
414                                        $this->ultimoerror=3;
415                                        return(false);
416                                }
417                        }
418                }
419                $this->Traduce();
420                if (!$this->resul=mysql_query($this->texto,$this->Conexion->controlador)){
421                        $this->error[$this->inderror++]=4; // Error en la sentencia SQL del comando
422                        $this->ultimoerror=4;
423                        return(false);
424                }
425               
426                $sqlstr=trim($this->texto);
427               
428                if (strtoupper(substr($sqlstr,0,6))=="SELECT"){
429                        $this->Recordset->Inicializar();
430                        $this->Recordset->filas=$this->resul;
431                        $this->Recordset->numerodecampos=mysql_num_fields($this->Recordset->filas);
432                        $this->Recordset->numeroderegistros=mysql_num_rows($this->Recordset->filas);
433                        if ($this->Recordset->numeroderegistros>0){
434                                $this->Recordset->BOF=false;
435                                $this->Recordset->EOF=false;
436                                $this->Recordset->campos=mysql_fetch_array($this->Recordset->filas);
437                        }
438                }
439
440                $this->error[$this->inderror++]=0; // Comando ejecutado correctamante
441                $this->ultimoerror=0;
442                return(true);
443        }
444        /* -------------------------------------------------------------------------------------------
445                Esta funci� recupera el ltimo nmero asignado a una clave autonum�ica de una tabla
446        ---------------------------------------------------------------------------------------------*/
447        function Autonumerico(){
448                $ulreg=mysql_insert_id();
449                return($ulreg);
450        }
451}
452/*=========================================================================================
453        Clase para consultar tablas y vistas de una base de datos.
454
455        Especificaciones:
456                - Estado del recordset ($estado)
457                0: Cerrado
458                1: Abierto
459=========================================================================================*/
460class Recordset{
461        var $Comando;
462        var $filas= array();
463        var $BOF,$EOF,$estado;
464        var $campos;
465        var $numeroderegistros,$numerodecampos,$posicion;
466
467        var $error;                                             // Error
468        var $ultimoerror;                               // Ultimo error detectado
469        var $inderror;                                  // Contador de errores
470        var $msgerrores=array(
471                "No se ha producido ningn error",
472                "001 : Recordset Error - Comando no establecido",
473                "002 : Recordset Error - No se ha establecido la conexióndel comando",
474                "003 : Recordset Error - No se ha abierto la conexion",
475                "004 : Recordset Error - No se pudo abrir la consulta",
476                "005 : Recordset Error - La sentencia SQL del comando no contiene la clausula SELECT",
477                "006 : Recordset Error - No se puede liberar la consulta",
478        );     
479        /*--------------------------------------------------------------------------------------------*/
480        function Recordset(){ // Constructor de la clase
481                $this->Inicializar();
482        }
483        /* -------------------------------------------------------------------------------------------
484                Inicializa propiedades de las clase
485        ----------------------------------------------------------------------------------------------*/
486        function Inicializar(){
487                $this->BOF=true;
488                $this->EOF=true;
489                $this->posicion=0;
490                $this->numeroderegistros=0;
491                $this->numerodecampos=0;
492                $this->estado=0;
493        }
494        /* -------------------------------------------------------------------------------------------
495                Devuelve el c�igo del ltimo error ocurrido durante el proceso anterior.
496        ----------------------------------------------------------------------------------------------*/
497        function UltimoError(){
498                return($this->ultimoerror);
499        }
500        /* -------------------------------------------------------------------------------------------
501                Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
502        ----------------------------------------------------------------------------------------------*/
503        function DescripUltimoError(){
504                return($this->msgerrores[$this->ultimoerror]);
505        }
506        /* -------------------------------------------------------------------------------------------
507                Establece el comando que se usar�para ejecutar las consultas pertinentes
508
509                Par�etros de entrada:
510                        objcomando: Un objeto comando con la sentencia SQL (Puede contener par�etros)
511
512                Devuelve :
513                        true : Si el texto del comando contiene la clausula SELECT
514                        false: En caso contrario
515
516                En el caso de devolver false, la funci� TomaUltimoError() devuelve el error ocurrido
517        ---------------------------------------------------------------------------------------------*/
518        function EstableceComando($objcomando){
519                $this->inderror=-1; // Inicializar contador de errores
520                $this->ultimoerror=-1;
521                if (stristr($objcomando->texto,"select")){
522                        $this->Comando=$objcomando;
523                        $this->error[$this->inderror++]=0; // Comando v�ido, contiene "SELECT"
524                        $this->ultimoerror=0;
525                        return(true);
526                }
527                else{
528                        $this->error[$this->inderror++]=5; // Comando no valido, NO contiene "SELECT"
529                        $this->ultimoerror=5;
530                        return(false);
531                }
532        }
533        /* -------------------------------------------------------------------------------------------
534                Sustituye el valor de los parametros en la expresi� que forma el texto del Comando
535        ---------------------------------------------------------------------------------------------*/
536        function Traduce(){
537                $execomando=$this->Comando->texto;
538                if (sizeof($this->Comando->parametros)>0){ // Hay par�etros que sustituir
539                        foreach($this->Comando->parametros as $parametro){
540                                if ($parametro["tipo"]==0) // Tipo alfanum�ico
541                                        $execomando=str_replace($parametro["nombre"],"'".$parametro["valor"]."'",$execomando);
542                                else
543                                        $execomando=str_replace($parametro["nombre"],$parametro["valor"],$execomando);
544                        }
545                }
546                $this->Comando->texto=$execomando;
547        }
548        /* -------------------------------------------------------------------------------------------
549                Recupera registros de la base de datos
550        ---------------------------------------------------------------------------------------------*/
551        function Abrir(){
552                $this->inderror=-1; // Inicializar contador de errores
553                $this->ultimoerror=-1;
554                if ($this->Comando==null){
555                        $this->error[$this->inderror++]=1; // Comando no especificado
556                        $this->ultimoerror=1;
557                        return(false);
558                }
559                else{
560                        if ($this->Comando->Conexion==null){
561                                $this->error[$this->inderror++]=2; // conexiónNO establecida
562                                $this->ultimoerror=2;
563                                return(false);
564                        }
565                        else{
566                                if ($this->Comando->Conexion->estado==0){
567                                        $this->error[$this->inderror++]=3; // conexiónNO abierta
568                                        $this->ultimoerror=3;
569                                        return(false);
570                                }
571                        }
572                }
573                $this->Traduce();
574                $this->Inicializar();
575                if (!$this->filas=mysql_query($this->Comando->texto,$this->Comando->Conexion->controlador)){
576                        $this->error[$this->inderror++]=4; // Error en la sentencia SQL del comando o al abrir la consula
577                        $this->ultimoerror=4;
578                        return(false);
579                }
580                $this->numeroderegistros=mysql_num_rows($this->filas); // La consulta se ha realizado con �ito
581                $this->numerodecampos=mysql_num_fields($this->filas);
582                if ($this->numeroderegistros>0){
583                        $this->BOF=false;
584                        $this->EOF=false;
585                        $this->campos=mysql_fetch_array($this->filas);
586                }
587                $this->estado=1; // Recordset abierto
588                $this->error[$this->inderror++]=0; // Recuperaci� de registros correcta
589                $this->ultimoerror=0;
590                return(true);
591        }
592        /* -------------------------------------------------------------------------------------------
593                Libera los registros de una consulta de la base de datos
594        ---------------------------------------------------------------------------------------------*/
595        function Cerrar(){
596                $this->inderror=-1; // Inicializar contador de errores
597                $this->ultimoerror=-1;
598                if (!mysql_free_result($this->filas)){
599                        $this->error[$this->inderror++]=6; // Error al cerrar la consulta (Al liberar memoria)
600                        $this->ultimoerror=6;
601                        return(false);
602                }
603                $this->Inicializar();
604                $this->error[$this->inderror++]=0; // Recuperaci� de registros correcta
605                $this->ultimoerror=0;
606                return(true);
607        }
608        /* -------------------------------------------------------------------------------------------
609                Mueve el puntero de lectura al siguiente registro del recordset
610        ---------------------------------------------------------------------------------------------*/
611        function Siguiente(){
612                if (!$this->EOF){
613                        $this->posicion++;
614                        if ($this->posicion==$this->numeroderegistros)
615                                $this->EOF=true;
616                        else{
617                                if (mysql_data_seek($this->filas,$this->posicion))
618                                        $this->campos=mysql_fetch_array($this->filas);
619                        }
620                }
621        }
622        /* -------------------------------------------------------------------------------------------
623                Mueve el puntero de lectura al anterior registro del recordset
624        ---------------------------------------------------------------------------------------------*/
625        function Anterior(){
626                if (!$this->BOF){
627                        $this->posicion--;
628                        if ($this->posicion<0)
629                                $this->BOF=true;
630                        else{
631                                if (mysql_data_seek($this->filas,$this->posicion));
632                                        $this->campos=mysql_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 (mysql_data_seek($this->filas,$this->posicion))
643                                $this->campos=mysql_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 (mysql_data_seek($this->filas,$this->posicion))
653                                $this->campos=mysql_fetch_array($this->filas);
654                }
655        }
656}       
657        /* -------------------------------------------------------------------------------------------
658                Esta funci�n devuelve una matriz asociativa con el nombre de los campos del recordset
659        ---------------------------------------------------------------------------------------------*/
660        function DatosNombres(){
661                if (mysql_data_seek($this->filas,$this->posicion))
662                        return(mysql_fetch_assoc($this->filas));
663                return("");
664        }
665        /* -------------------------------------------------------------------------------------------
666                Esta funci�n devuelve informaci�n sobre los campos de la tabla
667        ---------------------------------------------------------------------------------------------*/
668        function InfoCampos(){
669                $infocampos= array ();
670                while ($row = mssql_fetch_field($this->filas)) {
671                        $campo["name"]=$row->name;
672                        $campo["column_source"]=$row->column_source;
673                        $campo["maxlon"]=$row->max_length;
674                        $campo["numeric"]=$row->numeric;
675                        array_push($infocampos,$campo);
676                }
677                return($infocampos);
678        }
679?>
Note: See TracBrowser for help on using the repository browser.