martes, 10 de abril de 2012


Permitir insertar solamente números en un input de HTML

Esta es una pequeña funcion para permitir solamente escribir números en un campo input de HTML, funciona perfectamente en IE, Safari, Chrome y por supuesto Firefox.




function justNumbers(e) {
var keynum = window.event ? window.event.keyCode : e.which;
if ( keynum == 8 ) return true;
return /\d/.test(String.fromCharCode(keynum));
}

<input type="text" onkeypress="return justNumbers(event);">



lunes, 16 de enero de 2012

Como convertir el contenido de campos varchar en oracle a texto plano, sobretodo para evitar problemas en las migraciones de datos.

update ya_tiposartes set TA_OTRASCONSIDERACIONES=regexp_replace(REPLACE(utl_raw.cast_to_varchar2((nlssort(TA_OTRASCONSIDERACIONES, 'nls_sort=binary_ai'))),' ',' '),'[^a-zA-Z]',' ');

viernes, 23 de diciembre de 2011

Instalación de la extensión oci8 para conectar a oracle desde php 5.2

Aunque lo más habitual es utilizar MySQL como base de datos conjuntamente con PHP, es posible utilizar prácticamente cualquier otro tipo de base de datos. En las próximas líneas veremos cómo configurar PHP5 para que pueda conectarse con bases de datos Oracle. Hay diferentes formas de realizar esta configuración. En esta guía utilizaremos el “Oracle Instant Client” de Oracle y el módulo OCI8.
El primer paso consite en crear la carpeta donde instalaremos el cliente de Oracle, por ejemplo /opt/oracle.
$ sudo mkdir -p /opt/oracle $ sudo cd /opt/oracle
Tras esto es necesario obtener el “Oracle Instant Client”, que se puede descargar de forma gratuita desde el Website de Oracle. Dentro de la página de Oracle debemos buscar los paquetes Zip correspondientes a nuestra plataforma y a la versión de Oracle con la que queramos conectar y descargar los paquetes Basic y el SDK. Tras su descarga podemos copiar ambos archivos en la carpeta que hemos creado y descomprimirlos a continuación (cambiando los números de versión y plataforma por la que se haya descargado).
$ sudo unzip oracle-instantclient-devel-10.2.0.4-1.i386.zip $ sudo unzip oracle-instantclient-devel-10.2.0.4-1.i386.zip $ sudo mv instantclient_10_2 instanclient
Como último paso de la instalación del cliente debemos crear un par de enlaces simbólicos a las librerías que se han descomprimido.
$ cd instantclient $ sudo ln -s libclntsh.so.10.1 libclntsh.so $ sudo ln -s libocci.so.10.1 libocci.so
Una vez hemos instalado el cliente de Oracle hay que configurar PHP5, para lo cual utilizaremos el módulo OCI8 de PECL. El primer paso que debemos llevar a cabo para ello es instalar con apt-get todos los paquetes necesarios.
$ sudo apt-get install php5-dev libaio1 php-pear build-essential
Tras esto ya podemos utilizar el comando pecl para instalar el módulo OCI8.
$ sudo pecl install oci8
Al ejecutar este comando se nos pedirá la ruta de instalación del cliente de Oracle. Debemos introducir primero un 1 y pulsar intro, se nos volverá a preguntar, a lo cual deberemos responder instantclient,/opt/oracle/instantclient, y se nos mostrará de nuevo la primera pregunta, a lo que será suficiente con pulsar intro.
PHP Api Version: 20041225 Zend Module Api No: 20060613 Zend Extension Api No: 220060519 1. Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client : autodetect
1-1, 'all', 'abort', or Enter to continue:
Ya solo nos queda activar el módulo que acabamos de compilar en PHP, para lo cual editaremos el archivo ”/etc/php5/apache/php.ini” añadiendo la siguiente línea.
extension=oci8.so
Ya se puede reiniciar apache y comprobar la salida de phpinfo(), donde si todo ha ido bien debería aparecer un bloque con los datos de configuración del módulo oci8.



INSTALACIÓN XDEBUG EN UBUNTU

1.- $ sudo pecl install xdebug

2.- buscamos en el 'phpinfo()' la línea 'extension_dir' dentro del bloque 'PHP Core' y la copiamos

3.- editamos el php.ini, añadiendo al final:

  ; CONFIGURACION XDEBUG
  zend_extension="(RUTA COPIADA ANTERIORMENTE)/xdebug.so"
  xdebug.remote_enable=1
  xdebug.remote_handler=dbgp
  xdebug.remote_mode=req
  xdebug.remote_host=127.0.0.1
  xdebug.remote_port=9000
 
4.- Reiniciamos apache
buscar las lineas con PALABRA en un fichero y volcarlas a un fichero fichero.txt

cat logs.txt | grep PALABRA »fichero.txt
Consulta like case insensitive

select * from un_expedientes where REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ex_nombre),'á','a'),'Á','a'),'é','e'),'É','e'),'í','i'),'Í','i'),'ó','o'),'Ó','o'),'ú','u'),'Ú','ú') like REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER('%cova%'),'á','a'),'Á','a'),'é','e'),'É','e'),'í','i'),'Í','i'),'ó','o'),'Ó','o'),'ú','u'),'Ú','ú')
Obtener un limit de registros que estén entre los limites que marcamos 

select * from ( select rownum rnum, a.* from (aqui la consulta que tengamos) a where rownum ⇐ numerodefilamayor ) where rnum >= numerodefilamenor;