viernes, 9 de agosto de 2013

Agregar Driver Mongodb a PHP

Buenas Tardes, Amigos.

cuando no puedas agregar un driver a php para poder conectar con la base de datos MongoDb

y te aparece el error salvajemente como este: 

fatal error: class 'mongoclient' not found

es porque no instalaste bien el driver en php. te explico como hacerlo:
Fijate en tu entorno de trabajo:

        1. la version de php ej: 5.4.2
2. si acepta vc9 o si esta en vc6
3. si es nts o ts
donde ves todo esto, bueno te vas a localhost/phpInfo() ahi veras en que version fue compilado php(vc9) el numero de version 5.4.2.

mas simple busca la info en phpinfo() de php extension build: API20100525,TS,VC9 algo asi te aparecera.
//bajan de mongo driver el mas acutal de drivers.
pasos para agregar el driver:
1. buscan el driver mas adecuado y lo copian
2. pegan en la carpeta ext de la carpeta php (este archivo es mas o menos php_mongo-1.3.2RC1-5.4-vc9.dll    se fijaron que no solo esta el vc9 por default es de tipo TS los demas dicen NTS)
3. le cambian el nombre a php_mongo.dll
4. en php.ini ponen extension=php_mongo.dll sin el (;) porque entonces no estaria activa
5. reiniciar servicios.
6. ver en phpInfo() si esta mongo instaladas
7. listo ya lo puedes usar para conectarte a mongo.

DUDAS O CONSULTAS DEJEN SUS COMENTARIOS!!!

ESTAMOS A LA ORDEN!

martes, 6 de agosto de 2013

Upload a File con Genexus X Ev2

Bueno mis amigos el día de hoy les comparto una experiencia que me ha llevado 7 días poder resolver,
como verán no hay mucha documentación acerca del uso de genexus, y en este caso lo la evo2 me ha tocado aprender.

Datos del Aprendizaje:
genexus X evo2
generando para Java
conexion a MySql

lo primero aqui les tengo el codigo:
este evento es de un userControl llamado: JSEVENTHANDLER lo descargar de
http://wiki.gxtechnical.com/commwiki/servlet/hwiki?JSEventHandler+-+User+Control,
ahi encontraran su uso y el download de userControl

las Variables:

htmlResul es un TextBlock
&tipoDoc char(6)
txtExt textblock
&Doc en un blob
&htmlUpload es html

Event JSEventHandler1.EventHandled
    Do Case
        Case JSEventHandler1.EventType = "change"
htmlResul.Caption='<script type="text/JavaScript">ext();</script>'+newline()
&tipoDoc=txtExt.Caption
EndCase
EndEvent
   
Event Start
&eventlist.Add("change")
JSEventHandler1.AttachedControl=&Doc.InternalName
&htmlUpload+='<script type="text/javascript">'+newline()
&htmlUpload+='function ext(){'+newline()
&htmlUpload+='var filename = document.getElementById("vDOC").value;'+newline()
&htmlUpload+='var ext=(filename.substring(filename.lastIndexOf("."))).toLowerCase();'+newline()
&htmlUpload+='var tipoDoc=ext.replace(".","");'+newline()
&htmlUpload+='var tipo=document.getElementById("TXTEXT");'+newline()
&htmlUpload+='var cbb=document.getElementById("vEXT");'+newline()
&htmlUpload+='if(tipoDoc=="xltx" || tipoDoc=="xlsx" || tipoDoc=="xls" || tipoDoc=="doc" || tipoDoc=="docx" || tipoDoc=="pdf"){tipo.firstChild.nodeValue=tipoDoc; cbb.value=tipoDoc;}else{alert("Documento no Valido"); cbb.value="NA"; tipo.firstChild.nodeValue="NA";};'+newline()
&htmlUpload+='}'+newline()
&htmlUpload+='</script>'+newline()
html.Caption=&htmlUpload
Endevent

la mecanica es la siguiente, pongo el blob en el webpanel
en las propiedades del &Doc pongo display en Link, y el LinkTarget en _Blank, esto me permite subir el archivo, ahora en la base da datos recuerden cambiar el max_allowed_packet es mas de 1MB para poder guardar documentos de mayor tamaño. recomendacion 20MB como maximo.

 en el evento adjuntar del boton pueden poner un proc, que mande a guardar o usar BC en true de la transaccion y hacerlo con ello.

EJEMPLO DEL PROCEDIMIENTO:

new
DocNo=&numero  //puede ser Autonumber tambien de no ser muchos documentos.
DocDes=&descripcion
DocTip=&tipodocumento
Doc=&Doc //tambien tiene que ser de tipo Blob.
endnew


si hay dudas o preguntas respondere a la brevedad!!, Muchas Gracias por ver mi blog.

Este ejemplo esta testeado en safari, Chrome, Mozilla, IE. a sus ultimas actualizaciones en fecha.