conexion_bd = $que_ptr_bd; $this->nombre_tabla = $que_tabla; } /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ /*** Funciones Externas ***/ /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ /***************************************************************************** *** boolean actualizarCampo($que_clave,$que_actualizar) *** ****************************************************************************** *** Actualiza el valor de una columna dada para una clave dada *** ****************************************************************************** *** Parametros: *** *** clave: Array asociativo con clave = nombre del campo clave *** *** y valor = valor de la clave *** *** campos a modif: Array asociativo con nombre campo *** *** y nuevo valor campo *** ******************************************************************************* *** Valores devueltos por la funci�n *** *** true si todo ha ido bien *** *** false en otro caso *** ******************************************************************************* *** Historia de modificaciones en la funcci�n *** *** 19/1/04 Inicio de la función *** *********************************************************************/ function actualizarCampo($que_clave,$que_actualizar) { //echo "actualizarCampo
\n"; if ( ! is_array($que_clave)) { return false; } // 24/2/04 Inicio // $qu = 'UPDATE "' . $this->nombre_tabla . '" SET '; //foreach($que_actualizar as $nombre_campo => $valor_campo) { // $qu .= '"' . $nombre_campo . '" = '; // $qu .= is_numeric($valor_campo) ? $valor_campo : "'" . $valor_campo . "'" ; // $qu .= ', '; //} $qu = 'UPDATE ' . $this->conexion_bd->quoteIdentifier($this->nombre_tabla) . ' SET '; foreach($que_actualizar as $nombre_campo => $valor_campo) { $qu .= $this->conexion_bd->quoteIdentifier($nombre_campo) . ' = '; $qu .= $this->conexion_bd->quoteSmart($valor_campo); $qu .= ', '; } // 24/2/04 Final $qu = substr($qu,0,-2); // borrar el valor ", " del final $qu .= $this->crearWhere($que_clave); // $qu .="; commit;"; //echo "\$qu = $qu
\n"; $resultado = $this->ejecutarQuery($qu); if ( $resultado == false ) { return false; } return true; } /****************************************************************************** *** boolean crearCursor($clave_sort = "", $clave_cursor = "") *** ****************************************************************************** *** Crea un cursor global a la tabla actual *** ****************************************************************************** *** Parametros: *** *** clavesort: Array con loscampos los que se quiere el sort *** ******************************************************************************* *** Valores devueltos por la funci�n *** *** true si va bien *** *** false en otro caso *** ******************************************************************************* *** Historia de modificaciones en la funcci�n *** *** 19/1/04 Inicio de la función *** *********************************************************************/ function crearCursor($clave_sort = "", $clave_cursor = "") { //echo "Entro por crearCursor
\$clave_sort = $clave_sort
\$clave_cursor = $clave_cursor
"; //24/02/04 $query = 'select * from ' . $this->conexion_bd->quoteIdentifier($this->nombre_tabla); $query .= $this->crearWhere($clave_cursor); if ($clave_sort == "") { if ($clave_cursor != "") { foreach ($clave_cursor as $nombre_campo => $valor_campo) { $clave_sort[] = $nombre_campo; } } } $query .= $this->crearOrderBy($clave_sort); //echo "\$query crear cursor: $query
\n"; $this->cursor_pos = -1; // la posicion 0 es válida $resultado = $this->cursor = $this->ejecutarQuery($query); $this->num_filas_cursor = $resultado->numRows(); //echo "\t Salgo de crear cursor
\n"; return true; } /****************************************************************************** *** mixto leerCursor($$que_direccion) *** ****************************************************************************** *** Lee una fila determinada del cusor actual *** ****************************************************************************** *** Parametros: *** *** $que_direccion: Si es un integer señala una posicion absoluta *** *** Si es un string señala una posicion relativa *** ******************************************************************************* *** Valores devueltos por la funci�n *** *** null -> Si se traspasa final de fichero o *** *** false -> Ha habido errores o *** *** array asociativo con los datos leidos *** ******************************************************************************* *** Historia de modificaciones en la funcci�n *** *** 19/1/04 Inicio de la función *** *********************************************************************/ function leerCursor($que_direccion = "") { if ( is_null($this->cursor) ) { //echo "Cursor NULOOOOOOOOOOOOOOOOOO
"; $this->cursor = $this->crearCursor(); } if ( is_string($que_direccion) ) { switch ($que_direccion) { case "inicio": $nueva_pos = 0; break; case "siguiente": $nueva_pos = $this->cursor_pos + 1; break; case "anterior": $nueva_pos = $this->cursor_pos - 1; break; case "final": $nueva_pos = $this->cursor->numRows() - 1; break; default: $nueva_pos = $this->cursor_pos; break; } } else { $nueva_pos = $que_direccion; } if ( $nueva_pos < 0 ) { $nueva_pos = 0; } else { if ( $nueva_pos > $this->cursor->numRows() - 1 ) { $nueva_pos = $this->cursor->numRows() - 1; return null; } } // echo "\$nueva_pos " . " $this->nombre_tabla " . "= $nueva_pos
"; $datos = $this->cursor->fetchRow(DB_FETCHMODE_ASSOC,$nueva_pos); if (!$datos) { echo " Error en fectch del cursor
$datos"; return false; } $this->cursor_pos = $nueva_pos; return $datos; } /***************************************************************************** *** array dameFila($que_clave); *** ****************************************************************************** *** Devuelve en un array la columna especificada *** ****************************************************************************** *** Parametros: *** *** ninguno *** ******************************************************************************* *** Valores devueltos por la funci�n *** *** array con los valores de la columna *** *** o false si hay errores *** *************************************************************************** *** Historia de modificaciones en la funcci�n *** *** 20/1/04 Inicio de la función *** *** 26/02/04 Añadir control de los errores *********************************************************************/ function dameFila($que_clave) { // 24/02/04 //$q = 'select * from "' . $this->nombre_tabla . '"'; $q = 'select * from ' . $this->conexion_bd->quoteIdentifier($this->nombre_tabla); $q .= $this->crearWhere($que_clave); //echo "\$q dameFila: $q
\n"; // return $this->conexion_bd->getRow($q,DB_FETCHMODE_ASSOC); $respuesta = $this->conexion_bd->getRow($q,DB_FETCHMODE_ASSOC); if (DB::isError($respuesta)) { echo "Error obteniendo fila.
"; echo " - Query:
$que_query
"; echo $respuesta->getMessage() . "
\n"; return false; } return $respuesta; } /***************************************************************************** *** array dameColumna($que_columna,$que_filtro = "") *** ****************************************************************************** *** Devuelve en un array la columna especificada *** ****************************************************************************** *** Parametros: *** *** ninguno *** ******************************************************************************* *** Valores devueltos por la funci�n *** *** array con los valores de la columna *** ******************************************************************************* *** Historia de modificaciones en la funcci�n *** *** 20/1/04 Inicio de la función *** *** 24/3/2004 Se añade control de errores *** *** Se añade control de la columna * *** **************************************************************************/ function dameColumna($que_columna,$que_filtro = "") { // 24/02/04 // $q = 'select "' . $que_columna . '" from "' . $this->nombre_tabla . '"'; $q = 'select '; if ($que_columna != "*") { $q .= $this->conexion_bd->quoteIdentifier($que_columna); } else { $q .= '*'; } $q .= ' from '; $q .= $this->conexion_bd->quoteIdentifier($this->nombre_tabla); $q .= $this->crearWhere($que_filtro); // Si se pasa un asterisco como columna no se hace order by if ($que_columna != "*") { $q .= $this->crearOrderBy($que_columna); } //echo "\$q damecolumna: $q
\n"; $respuesta = $this->conexion_bd->getCol($q); if (DB::isError($respuesta)) { echo "Error obteniendo fila.
"; echo " - Query:
$q
"; echo $respuesta->getMessage() . "
\n"; return false; } return $respuesta; } /*************************************************************************** *** integer dameFilasAfectadas() *** *************************************************************************** *** Devuelve eel numero de filas afectadas por el *** *** ultima query. Si es una select devuelve 0 segun el manul (?) *** *** Funciona bien con updates *** *************************************************************************** *** Parametros: *** *** ninguno *** *************************************************************************** *** Valores devueltos por la funci�n *** *** integer con el numero de filas afectas *** *************************************************************************** *** Historia de modificaciones en la funcci�n *** *** 26/2/04 Inicio de la función *** *********************************************************************/ function dameFilasAfectadas() { return $this->num_filas_afecta; } /****************************************************************************** *** boolean borrarFila($que_clave) *** ****************************************************************************** *** borra la fila cuya clave se pasa *** ****************************************************************************** *** Parametros: *** *** array asociativo nombrecampoclave => valorclave del *** *** la fila que se desea borrar *** ****************************************************************************** *** Valores devueltos por la función *** *** true -> Fila borrada correctamente *** *** flase -> Fila NO borrada *** ****************************************************************************** *** Historia de modificaciones en la funcci�n *** *** 20/1/04 Inicio de la función *** ******************************************************************************/ function borrarFila($que_clave) { //24/02/04 //$q = 'delete from "' . $this->nombre_tabla . '"'; $q = 'delete from ' . $this->conexion_bd->quoteIdentifier($this->nombre_tabla); $q .= $this->crearWhere($que_clave); //echo "\$q borrarFila = $q
\n"; $resultado = $this->ejecutarQuery($q); if ( $resultado == false ) { return false; } return true; } /****************************************************************************** *** boolean insertarFila($que_datos); *** ****************************************************************************** *** añade una fila a la bd tabla con los datos pasados *** ****************************************************************************** *** Parametros: *** *** array asociativo nombrecampoclave => valorclave del *** *** la fila que se desea añadir *** ****************************************************************************** *** Valores devueltos por la funci�n *** *** true si todo va bien *** ****************************************************************************** *** Historia de modificaciones en la funcci�n *** *** 20/1/04 Inicio de la función *** ******************************************************************************/ function insertarFila($que_datos) { //24/02/04 //$q = 'insert into "' . $this->nombre_tabla . '" ( '; $q = 'insert into ' . $this->conexion_bd->quoteIdentifier($this->nombre_tabla) . ' ( '; $valores = ' values ( '; // el �nico campo num�rico es el codigo_cliente que ya se ha // inicializado m�s arriba. // el resto de los campos son string y se ponen a blanco foreach ($que_datos as $nombre_campo => $contenido) { //24/02/04 //$q .= '"' . $nombre_campo . '" , '; //$valores .= is_numeric($contenido) ? $contenido . ', ' : "'" . $contenido . "', " ; $q .= $this->conexion_bd->quoteIdentifier($nombre_campo); $q.= ", "; $valores .= $this->conexion_bd->quoteSmart($contenido); $valores .= ", "; } /// Sustituir la �ltima coma por cierre de par�ntesis $q = substr_replace($q," ) ",strlen($q) - 2,2); /// Sustituir la �ltima coma por cierre de par�ntesis $valores = substr_replace($valores,") ",strlen($valores) - 2,2); $q .= $valores; //echo "\$q insertar fila = $q
\n"; $resultado = $this->ejecutarQuery($q); if ( $resultado == false ) { return false; } return true; } /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ /*** Funciones Internas ***/ /*****************************************************************************/ /*****************************************************************************/ /*****************************************************************************/ function crearWhere ($que_dato) { if ( $que_dato == "" ) { return ""; } $where = ""; if ( is_array($que_dato) ) { $primera = true; reset($que_dato); foreach($que_dato as $nombre_indice => $valor_indice) { if ( $primera ) { $where .= ' where ' ; $primera = false; } else { $where .= " and "; } //$where .= '"' . $nombre_indice . '" = '; //$where .= is_numeric($valor_indice) ? $valor_indice : "'" . $valor_indice . "'" ; $where .= $this->conexion_bd->quoteIdentifier($nombre_indice); $where .= " = "; $where .= $this->conexion_bd->quoteSmart($valor_indice); } } return $where; } /*****************************************************************************/ function crearOrderBy ($que_dato) { //echo " Creando order By con los siguiente datos:
\n\t"; //print_r($que_dato); //echo "
\n"; if ( $que_dato == "" ) { return ""; } $orderby = ' order by '; if ( is_array($que_dato) ) { foreach($que_dato as $campo) { $trozos = explode(' ', $campo); $orderby .= $this->conexion_bd->quoteIdentifier($trozos[0]); // Si hay más de una palabra es que llega un modificador (único posible desc/asc) if ( isset($trozos[1]) ) { $orderby .= ' ' . $trozos[1]; } $orderby .= ', '; } $orderby = substr($orderby,0,-2); // borrar el valor ", " del final } else { $trozos = explode(' ', $que_dato); $orderby .= $this->conexion_bd->quoteIdentifier($trozos[0]); // Si hay más de una palabra es que llega un modificador (único posible desc/asc) if ( isset($trozos[1]) ) { $orderby .= ' ' . $trozos[1]; } } return $orderby; } /****************************************************************************** *** boolean ejecutarQuery(); *** ****************************************************************************** *** Ejecuta una query dada *** ****************************************************************************** *** Parametros: *** *** string con la query a ejecutar *** ****************************************************************************** *** Valores devueltos por la funci�n ** *** false si algo va mal *** *** obj resultado si toda va bien *** ****************************************************************************** *** Historia de modificaciones en la funcci�n *** *** 20/1/04 Inicio de la función *** ******************************************************************************/ function ejecutarQuery ($que_query) { $respuesta = $this->conexion_bd->query($que_query); if (DB::isError($respuesta)) { echo "Error ejecutando query
"; echo "Query:
$que_query
"; echo $respuesta->getMessage() . "
\n"; return false; } $this->num_filas_afecta = $this->conexion_bd->affectedRows(); return $respuesta; } } ?>