close Warning: Failed to sync with repository "ogBrowser-Git": (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\xA6 I...' for column 'message' at row 1"); repository information may be out of date. Look in the Trac log for more information including mitigation strategies.

source: admin/WebConsole/clases/AdoPhp.php @ b0dd6e2

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 b0dd6e2 was b0dd6e2, checked in by irina <irinagomez@…>, 9 years ago

#777 CreaParametro?: Al incluir los valores se escapan caracteres especiales

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

  • Property mode set to 100644
File size: 27.3 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        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"]=mysql_real_escape_string($valor);
344                                return;
345                        }
346                }       
347                $p = new parametro($nombre,mysql_real_escape_string($valor),$tipo);
348                $this->AddParametro($p);
349        }
350
351        /* -------------------------------------------------------------------------------------------
352                Sustituye el valor de un par�etro existente por otro
353                Par�etros de entrada:
354                        nombre: El nombre del par�etro
355                        valor : El nuevo valor del par�etro
356        ---------------------------------------------------------------------------------------------*/
357        function ParamSetValor($nombre,$valor){
358                for($i=0;$i<sizeof($this->parametros);$i++){
359                        if($this->parametros[$i]["nombre"]==$nombre)
360                                $this->parametros[$i]["valor"]=$valor;
361                }
362        }
363        /* -------------------------------------------------------------------------------------------
364                Establece la conexiónque se usar�para ejecutar las acciones pertinentes
365
366                Par�etros de entrada:
367                        objconexion: Un objeto conexion
368        ---------------------------------------------------------------------------------------------*/
369        function EstableceConexion($objconexion){
370                $this->Conexion= $objconexion;
371        }
372        /* -------------------------------------------------------------------------------------------
373                Establece la conexiónque se usar�para ejecutar las acciones pertinentes
374
375                Par�etros de entrada:
376                        textocomando: Un texto con la sentencia SQL (Puede contener par�etros)
377        ---------------------------------------------------------------------------------------------*/
378        function EstableceTexto($textocomando){
379                $this->texto=$textocomando;
380        }
381        /* -------------------------------------------------------------------------------------------
382                Sustituye el valor de los parametros en la expresi� que forma el texto del Comando
383        ---------------------------------------------------------------------------------------------*/
384        function Traduce(){
385                $execomando=$this->texto;
386                if (sizeof($this->parametros)>0){ // Hay par�etros que sustituir
387                        foreach($this->parametros as $parametro){
388                                if ($parametro["tipo"]==0) // Tipo alfanum�ico
389                                        $execomando=str_replace($parametro["nombre"],"'".$parametro["valor"]."'",$execomando);
390                                else
391                                        $execomando=str_replace($parametro["nombre"],$parametro["valor"],$execomando);
392                        }
393                }
394                $this->texto=$execomando;
395        }
396        /* -------------------------------------------------------------------------------------------
397                Ejecuta la sentencia SQL contenida en la propiedad texto
398        ---------------------------------------------------------------------------------------------*/
399        function Ejecutar(){
400                $this->inderror=-1; // Inicializar contador de errores
401                $this->ultimoerror=-1;
402                if ($this->texto==null){
403                        $this->error[$this->inderror++]=1; // Texto no especificado
404                        $this->ultimoerror=1;
405                        return(false);
406                }
407                else{
408                        if ($this->Conexion==null){
409                                $this->error[$this->inderror++]=2; // conexiónNO establecida
410                                $this->ultimoerror=2;
411                                return(false);
412                        }
413                        else{
414                                if ($this->Conexion->estado==0){
415                                        $this->error[$this->inderror++]=3; // conexiónNO abierta
416                                        $this->ultimoerror=3;
417                                        return(false);
418                                }
419                        }
420                }
421                $this->Traduce();
422                if (!$this->resul=mysql_query($this->texto,$this->Conexion->controlador)){
423                        $this->error[$this->inderror++]=4; // Error en la sentencia SQL del comando
424                        $this->ultimoerror=4;
425                        return(false);
426                }
427               
428                $sqlstr=trim($this->texto);
429               
430                if (strtoupper(substr($sqlstr,0,6))=="SELECT"){
431                        $this->Recordset->Inicializar();
432                        $this->Recordset->filas=$this->resul;
433                        $this->Recordset->numerodecampos=mysql_num_fields($this->Recordset->filas);
434                        $this->Recordset->numeroderegistros=mysql_num_rows($this->Recordset->filas);
435                        if ($this->Recordset->numeroderegistros>0){
436                                $this->Recordset->BOF=false;
437                                $this->Recordset->EOF=false;
438                                $this->Recordset->campos=mysql_fetch_array($this->Recordset->filas);
439                        }
440                }
441
442                $this->error[$this->inderror++]=0; // Comando ejecutado correctamante
443                $this->ultimoerror=0;
444                return(true);
445        }
446        /* -------------------------------------------------------------------------------------------
447                Esta funci� recupera el ltimo nmero asignado a una clave autonum�ica de una tabla
448        ---------------------------------------------------------------------------------------------*/
449        function Autonumerico(){
450                $ulreg=mysql_insert_id();
451                return($ulreg);
452        }
453}
454/*=========================================================================================
455        Clase para consultar tablas y vistas de una base de datos.
456
457        Especificaciones:
458                - Estado del recordset ($estado)
459                0: Cerrado
460                1: Abierto
461=========================================================================================*/
462class Recordset{
463        var $Comando;
464        var $filas= array();
465        var $BOF,$EOF,$estado;
466        var $campos;
467        var $numeroderegistros,$numerodecampos,$posicion;
468
469        var $error;                                             // Error
470        var $ultimoerror;                               // Ultimo error detectado
471        var $inderror;                                  // Contador de errores
472        var $msgerrores=array(
473                "No se ha producido ningn error",
474                "001 : Recordset Error - Comando no establecido",
475                "002 : Recordset Error - No se ha establecido la conexióndel comando",
476                "003 : Recordset Error - No se ha abierto la conexion",
477                "004 : Recordset Error - No se pudo abrir la consulta",
478                "005 : Recordset Error - La sentencia SQL del comando no contiene la clausula SELECT",
479                "006 : Recordset Error - No se puede liberar la consulta",
480        );     
481        /*--------------------------------------------------------------------------------------------*/
482        function Recordset(){ // Constructor de la clase
483                $this->Inicializar();
484        }
485        /* -------------------------------------------------------------------------------------------
486                Inicializa propiedades de las clase
487        ----------------------------------------------------------------------------------------------*/
488        function Inicializar(){
489                $this->BOF=true;
490                $this->EOF=true;
491                $this->posicion=0;
492                $this->numeroderegistros=0;
493                $this->numerodecampos=0;
494                $this->estado=0;
495        }
496        /* -------------------------------------------------------------------------------------------
497                Devuelve el c�igo del ltimo error ocurrido durante el proceso anterior.
498        ----------------------------------------------------------------------------------------------*/
499        function UltimoError(){
500                return($this->ultimoerror);
501        }
502        /* -------------------------------------------------------------------------------------------
503                Devuelve una cadena con el mensage del ltimo error ocurrido durante el proceso anterior.
504        ----------------------------------------------------------------------------------------------*/
505        function DescripUltimoError(){
506                return($this->msgerrores[$this->ultimoerror]);
507        }
508        /* -------------------------------------------------------------------------------------------
509                Establece el comando que se usar�para ejecutar las consultas pertinentes
510
511                Par�etros de entrada:
512                        objcomando: Un objeto comando con la sentencia SQL (Puede contener par�etros)
513
514                Devuelve :
515                        true : Si el texto del comando contiene la clausula SELECT
516                        false: En caso contrario
517
518                En el caso de devolver false, la funci� TomaUltimoError() devuelve el error ocurrido
519        ---------------------------------------------------------------------------------------------*/
520        function EstableceComando($objcomando){
521                $this->inderror=-1; // Inicializar contador de errores
522                $this->ultimoerror=-1;
523                if (stristr($objcomando->texto,"select")){
524                        $this->Comando=$objcomando;
525                        $this->error[$this->inderror++]=0; // Comando v�ido, contiene "SELECT"
526                        $this->ultimoerror=0;
527                        return(true);
528                }
529                else{
530                        $this->error[$this->inderror++]=5; // Comando no valido, NO contiene "SELECT"
531                        $this->ultimoerror=5;
532                        return(false);
533                }
534        }
535        /* -------------------------------------------------------------------------------------------
536                Sustituye el valor de los parametros en la expresi� que forma el texto del Comando
537        ---------------------------------------------------------------------------------------------*/
538        function Traduce(){
539                $execomando=$this->Comando->texto;
540                if (sizeof($this->Comando->parametros)>0){ // Hay par�etros que sustituir
541                        foreach($this->Comando->parametros as $parametro){
542                                if ($parametro["tipo"]==0) // Tipo alfanum�ico
543                                        $execomando=str_replace($parametro["nombre"],"'".$parametro["valor"]."'",$execomando);
544                                else
545                                        $execomando=str_replace($parametro["nombre"],$parametro["valor"],$execomando);
546                        }
547                }
548                $this->Comando->texto=$execomando;
549        }
550        /* -------------------------------------------------------------------------------------------
551                Recupera registros de la base de datos
552        ---------------------------------------------------------------------------------------------*/
553        function Abrir(){
554                $this->inderror=-1; // Inicializar contador de errores
555                $this->ultimoerror=-1;
556                if ($this->Comando==null){
557                        $this->error[$this->inderror++]=1; // Comando no especificado
558                        $this->ultimoerror=1;
559                        return(false);
560                }
561                else{
562                        if ($this->Comando->Conexion==null){
563                                $this->error[$this->inderror++]=2; // conexiónNO establecida
564                                $this->ultimoerror=2;
565                                return(false);
566                        }
567                        else{
568                                if ($this->Comando->Conexion->estado==0){
569                                        $this->error[$this->inderror++]=3; // conexiónNO abierta
570                                        $this->ultimoerror=3;
571                                        return(false);
572                                }
573                        }
574                }
575                $this->Traduce();
576                $this->Inicializar();
577                if (!$this->filas=mysql_query($this->Comando->texto,$this->Comando->Conexion->controlador)){
578                        $this->error[$this->inderror++]=4; // Error en la sentencia SQL del comando o al abrir la consula
579                        $this->ultimoerror=4;
580                        return(false);
581                }
582                $this->numeroderegistros=mysql_num_rows($this->filas); // La consulta se ha realizado con �ito
583                $this->numerodecampos=mysql_num_fields($this->filas);
584                if ($this->numeroderegistros>0){
585                        $this->BOF=false;
586                        $this->EOF=false;
587                        $this->campos=mysql_fetch_array($this->filas);
588                }
589                $this->estado=1; // Recordset abierto
590                $this->error[$this->inderror++]=0; // Recuperaci� de registros correcta
591                $this->ultimoerror=0;
592                return(true);
593        }
594        /* -------------------------------------------------------------------------------------------
595                Libera los registros de una consulta de la base de datos
596        ---------------------------------------------------------------------------------------------*/
597        function Cerrar(){
598                $this->inderror=-1; // Inicializar contador de errores
599                $this->ultimoerror=-1;
600                if (!mysql_free_result($this->filas)){
601                        $this->error[$this->inderror++]=6; // Error al cerrar la consulta (Al liberar memoria)
602                        $this->ultimoerror=6;
603                        return(false);
604                }
605                $this->Inicializar();
606                $this->error[$this->inderror++]=0; // Recuperaci� de registros correcta
607                $this->ultimoerror=0;
608                return(true);
609        }
610        /* -------------------------------------------------------------------------------------------
611                Mueve el puntero de lectura al siguiente registro del recordset
612        ---------------------------------------------------------------------------------------------*/
613        function Siguiente(){
614                if (!$this->EOF){
615                        $this->posicion++;
616                        if ($this->posicion==$this->numeroderegistros)
617                                $this->EOF=true;
618                        else{
619                                if (mysql_data_seek($this->filas,$this->posicion))
620                                        $this->campos=mysql_fetch_array($this->filas);
621                        }
622                }
623        }
624        /* -------------------------------------------------------------------------------------------
625                Mueve el puntero de lectura al anterior registro del recordset
626        ---------------------------------------------------------------------------------------------*/
627        function Anterior(){
628                if (!$this->BOF){
629                        $this->posicion--;
630                        if ($this->posicion<0)
631                                $this->BOF=true;
632                        else{
633                                if (mysql_data_seek($this->filas,$this->posicion));
634                                        $this->campos=mysql_fetch_array($this->filas);
635                        }
636                }
637        }
638        /* -------------------------------------------------------------------------------------------
639                Mueve el puntero de lectura al primer registro del recordset
640        ---------------------------------------------------------------------------------------------*/
641        function Primero(){
642                if ($this->numeroderegistros>0){
643                        $this->posicion=0;
644                        if (mysql_data_seek($this->filas,$this->posicion))
645                                $this->campos=mysql_fetch_array($this->filas);
646                }
647        }
648        /* -------------------------------------------------------------------------------------------
649                Mueve el puntero de lectura al ltimo registro del recordset
650        ---------------------------------------------------------------------------------------------*/
651        function Ultimo(){
652                if ($this->numeroderegistros>0){
653                        $this->posicion=$this->numeroderegistros-1;
654                        if (mysql_data_seek($this->filas,$this->posicion))
655                                $this->campos=mysql_fetch_array($this->filas);
656                }
657        }
658}       
659        /* -------------------------------------------------------------------------------------------
660                Esta funci�n devuelve una matriz asociativa con el nombre de los campos del recordset
661        ---------------------------------------------------------------------------------------------*/
662        function DatosNombres(){
663                if (mysql_data_seek($this->filas,$this->posicion))
664                        return(mysql_fetch_assoc($this->filas));
665                return("");
666        }
667        /* -------------------------------------------------------------------------------------------
668                Esta funci�n devuelve informaci�n sobre los campos de la tabla
669        ---------------------------------------------------------------------------------------------*/
670        function InfoCampos(){
671                $infocampos= array ();
672                while ($row = mssql_fetch_field($this->filas)) {
673                        $campo["name"]=$row->name;
674                        $campo["column_source"]=$row->column_source;
675                        $campo["maxlon"]=$row->max_length;
676                        $campo["numeric"]=$row->numeric;
677                        array_push($infocampos,$campo);
678                }
679                return($infocampos);
680        }
681?>
Note: See TracBrowser for help on using the repository browser.