Mi lista de blogs

lunes, 8 de octubre de 2012

Uso de MySQL desde PHP, Versión 5.0 vs. 5.5


He tenido algunos problemas para utilizar MySQL desde PHP en diferentes servidores, ya que en algunos casos se sigue utilizando la versión 5.0 o 5.1 de MySQL, que no permite el manejo de la clase mysqli.

El manual de PHP nos recomienda usar la clase mysqli, pero de no ser posible, a continuación describo las cuatro diferencias que se deben considerar en una aplicación sencilla.

1.- Para abrir la base de datos:
(versión anterior)

$link=mysql_connect('localhost','usuario','password');
if (!$link) 

 die ('No se puede conectar: '.mysql_error()); 
}

$db_selected = mysql_select_db('base_datos', $link);
if (!$db_selected)
{
 die ('No se puede conectar: '.mysql_error()); 
}

(versión nueva)
@$DB = new mysqli('localhost','usuario','password','base_datos');

if (mysqli_connect_errno())
{
 echo 'No se puede conectar a la base de datos: ' . mysqli_connect_error();
}

2.- Para hacer una consulta:
(versión anterior)

 $Query = 'SELECT * FROM pedidos WHERE folio = '.$folio;
 $Resultado = mysql_query($Query);



(versión nueva)

 $Query = 'SELECT * FROM pedidos WHERE folio = '.$folio;
 $Resultado = $DB->query($Query);
 $NumResults = $Resultado->num_rows;

3.- Para barrer la tabla, estableciendo un ciclo:
(versión anterior)
 while ($Row = mysql_fetch_assoc($Resultado))


(versión nueva)

 while ($Row = $Resultado->fetch_assoc())

4.- Para cerrar la base de datos:
(versión anterior)

 mysql_free_result($Resultado);
 mysql_close($link);


(versión nueva)
 $Resultado->free();
 $DB->close();


viernes, 7 de septiembre de 2012

Oferta de Netbooks

Oferta de Netbooks:

Me han preguntado acerca de minilaptops o netbooks.

Por lo pronto, tenemos tres marcas diferentes al mismo precio; cada una cuenta con:

  • Monitor de 10 pulgadas
  • Microprocesador Intel Atom N2600 de 1.6 Ghz
  • Memoria RAM de 2 Gb
  • Disco duro de 320 Gb
  • Windows 7 Starter Edition
  • Office 2010 Starter Edition
  • Antena para conexión WiFi
  • Cámara para videoconferencias
Marca ACER:

Marca Lenovo:

Marca Samsung:
Todas tienen el mismo precio:
$3,700 mas IVA.
Para mayor información:

miércoles, 21 de marzo de 2012

Incluir imagenes en PHP y MySQL


Para poder incluir una imagen en una tabla de HTML, me encontré con los siguientes problemas:

1.- La base de datos de detalle no tiene la referencia a la ruta donde se encuentra la imagen. Por lo tanto, para poder acceder a los campos de la cotización mas la ruta, utilicé la siguiente instrucción:

$Query = 'SELECT * FROM detalle LEFT JOIN articulos ON detalle.codigo = articulos.codigo WHERE folio='.$folio.' and cantidad<>0 ORDER BY registro';
La cláusula LEFT JOIN nos permite hacer un empate entre ámbas tablas, usando una llave de búsqueda definida en la cláusula ON.

2.- Como existen campos que pueden existir en ámbas tablas con el mismo nombre, se me ocurre ultizar la siguiente modificación:

$Query = 'SELECT detalle.*, articulos.ruta FROM detalle LEFT JOIN articulos ON detalle.codigo = articulos.codigo WHERE folio='.$folio.' and cantidad<>0 ORDER BY registro';

3.- Para desplegar la imagen dentro de la tabla:

  echo '<td align="center" width="110">' . '<IMG SRC="'.$Row['ruta'].'" width="100">' . '</td>';

Esta instrucción va dentro del bucle, donde se despliegan los datos de cada línea de detalle de la cotización.

martes, 20 de marzo de 2012

Multiplica tu PC


Acabamos de instalar este sistema para una escuela. Utilizamos un kit Airos X550, que consiste en una tarjeta PCI que se instala en un servidor, y se pueden conectar hasta cinco terminales que trabajan como sesiones independientes en dicho servidor. La terminales se conectan a la tarjeta PCI por medio de un cable UTP con conectores RJ-45, y no deben de estar a mas de diez metros de distancia del servidor. Cada módulo cuenta con un puerto VGA para conectar el monitor, dos puertos PS/2 para teclado y monitor, y un conector para bocinas o audífonos.

El servidor que utilizamos tiene un microprocesador Core i3, una tarjeta madre Intel, 4 Gb de memoria, disco de 500 Gb, quemador de DVDs, y Windows 7 profesional. Las terminales funcionan bastante bien, pueden utilizar internet, office y programas educativos con muy buen desempeño.

El costo del Kit es de $7,200; y el servidor también es de $7,280 mas IVA. En caso haber comprado seis computadoras de capacidad mediana, el costo se hubiera elevado a unos $21,000 aproximadamente, mas el costo de las licencias de Windows.

Además del ahorro inicial, la ventaja es que el costo del servicio es mucho menor. Resulta mas sencillo preocuparse por un solo servidor, que dar mantenimiento a seis equipos. Y sobre todo, el software se puede compartir, sin incurrir en problemas de licencias.

Es una muy buena solución para escuelas y cibercafés, aunque también se puede aplicar a otro tipo de instalaciones.

viernes, 17 de febrero de 2012

WinDev dejó de funcionar


Serio problema.

Estoy en pleno desarrollo. Estoy trabajando en la adaptación del sistema de punto de venta para que pueda facturar de acuerdo al regimen de código de barras bidimensional.

Para desarrollar trabajo en dos máquinas diferentes. En la oficina tengo un equipo con Windows 7. En la casa continua trabajando bajo Windows XP. También puedo desarrollar en una laptop, que uso únicamente cuando las adpatciones se tienen que hacer en las instalaciones de nuestros clientes.

El trabajo fluye normalmente. Hay presión para entregar a tiempo, así que trabajo durante el día en la oficina y en la noche en la casa. Las pruebas han funcionado razonablemente. Hoy estoy haciendo la conversión del catálogo de clientes directamente del AdminPaq. Para hacerlo tengo que usar el VisualFoxPro, que me permite acceder a las tablas de Xbase, y hacer una exportación.

Me preparo para hacer la compilación del ejecutable para mandarlo al cliente. La máquina se atora y me marca el error: "WinDev dejó de funcionar". Empiezo a revisar posibles causas y no encuentro nada anormal. Recompilo otras aplicaciones y funcionan normalmente. En ambiente de desarrollo la aplicación trabaja normalmente, y las modificaciones a pantallas y reportes trabajan correctamente.

Trabajo ahora en la laptop, y la compilación funciona normalmente. Por lo pronto salgo del problema. El programa ejecutable se va para ser instalado en la máquina del cliente. Instalo el WinDev en otra máquina con Windows 7, y funciona todo correctamente.

No tengo la menor idea de lo que está pasando. Me queda solamente reinstalar el WinDev.

Nota: Para importar el archivo de clientes, uso la instrucción:
HImportText(clientes,"c:\directorio\archivo.csv","lista de campos",hImpCreation+hImpNoDelimiter,"barra de progreso")
  

martes, 7 de febrero de 2012

WebDev y PHP


Tengo ya un tiempo trabajando con WebDev, y me ha ido bastante bien, a pesar de que he tenido que aprenderlo de una manera autodidacta.

Sin embargo, debido a que las páginas que he desarrollado son mas fáciles de cargar en un servidor con mysql y php que en un servidor de windows, decidí desarrollar bajo ese ambiente. Al empezar a trabajar bajo estas bases, comencé a encontarme con algunos problemas.

El mas importante de ellos es que los reportes desarrollados bajo WebDev no trabajan bajo PHP. Así que tuve que aprender a programar en dicho lenguaje. La verdad es que para alguien cuyo lenguaje materno es el basic, cambiar a un lenguaje donde cada instrucción tiene que terminar con punto y coma es algo chocante. Mi formación en realidad fué aprender simultáneamente Fortran y Cobol, luego Assembler, y posteriormente Basic: GW-Basic, QuickBasic, para luego entrar a dBase, Clipper y Visual FoxPro, hasta llegar al WinDev y al WebDev. Tuve algunos acercamientos con otros lenguajes como por ejemplo el RPG, el ACL, el Dibol, y el ASP; y mi relación con el TurboPascal y con el C fue mas bien lejana.

Pero aqui estamos; me siento como si quisiera aprender a hablar alemán a mis 56 años.

Hoy voy a mencionar un par de puntos con respecto al lenguaje:

En primer lugar el manejo de condiciones:
if (a==1) { algo; } else { otracosa; }
Nótese que la condición deberá ir entre paréntesis, que el comparador para igual se debe poner dos veces, y que las llaves se usan para agrupar las instrucciones en caso de verdadero o falso.

En segundo lugar, para poder desplegar un campo con decimales fijos, hay que utilizar la función:
number_format($numero_flotante,decimales,".",",")
el primer parámetro es la variable numérica a desplegar,
el segundo parámetro es el número de decimales que aparecerán,
el tercer parámetro es el separador de decimales,
y el cuarto parámetro es el separador de miles.
Los parámetros tres y cuatro se pueden omitr, o se deben poner los dos.

Por otra parte, una deficiencia en el WebDev, es que las pantallas de consulta están un tanto limitadas, ya que se tienen que manejar como loopers, lo cual las hace un tanto difíciles de leer.




jueves, 2 de febrero de 2012

Facturación electrónica

Opciones para facturar.

En mi empresa, deseo empezar a ultilizar la facturación electrónica.
¿Que alternativas tengo?

1.- En caso de tener comprobantes impresos antes del 31 de diciembre
del 2010, se pueden seguir utilizando hasta que termine su vigencia.

2.- En caso de que durante el ejercicio fiscal del 2011, sus ingresos
hayan sido menores a $4,000,000, se pueden mandar imprimir facturas con
código de barras bidimensional, o se pueden imprimir directamente
usando un programa de hoja electrónica, por ejemplo: Excel. En este
caso se tramita ante Hacienda el código de barras bidimensional, y
luego se solicita una serie de folios. El control de las facturas se
lleva por Ustedes mismos.
En este caso, también se puede utilizar el programa microE, que
proporciona el SAT y que es gratuito.
Ultrica tiene una solución que se puede adaptar a sus necesidades,
ya que en el Sistema de Punto de Venta le permite la elaboración
de facturas que cumple con todos los requisitos fiscales actuales.

3.- En caso de que sus ingresos sean mayores de $4,000,000 al año, y
además se terminaron sus comprobantes impresos, entonces deberán usar
el nuevo esquema de CFDIs (comprobantes fiscales digitales por
internet).
Para utilizar este esquema se necesita contratar un PAC (proveedor
autorizado de certificación), y se necesita una computadora con
internet para elaborar facturas.
Algunos ejemplos de proveedores:
a).- Telmex permite elaborar hasta 15 facturas al mes a un costo de
$99 mas iva, y $5 por cada factura adicional.
b).- Contpaq tiene un módulo de facturación electrónica que permite
generar cualquier cantidad de facturas. El paquete cuesta $4,990, o se
puede comprar el paquete que incluye la contabilidad en $8,490 mas
iva.
c).- Sistec tiene paquetes, según el número de facturas al año; por
ejemplo: hasta 50 facturas por $400, hasta 100 por $750, etcétera.
Existen otros proveedores que ofrecen diferentes alternativas, y en
algunos casos ofrecen servicios gratuitos, pero en lo personal no los
he probado.

Espero que esta información les sea de utilidad.

miércoles, 1 de febrero de 2012

estructura de base de datos de mysql a webdev


Para ahorrar tiempo en la definición de una tabla en una base de datos de MySQL hacia WebDev, se puede transferir del servidor Web a una máquina local, a través del siguiente procedimiento:

La definición de la base de datos se hace en el servidor Web, utilizando el phpAdmin, que permite definir los campos e índices utilizando una interfase gráfica bastante sencilla. Además de la definición de campos, se pueden importar datos desde un archivo CSV, que a su vez puede generarse desde Excel, Quickbasic o dBase.

A continuación exportamos la base de datos, utilizando la opción SQL. El archivo lo dejamos un directorio local, por ejemplo: C:\copia\archivo.sql.

Procedemos a pasar la base de datos del servidor Web al servidor local. Entramos al prompt de MySQL:
mysql > use basedatos;
mysql> source c:/copia/archivo.sql;
Con esto se debe crear la tabla. Notese que la sintaxis del mysql requiere que utilicemos diagonal normal para definir los directorios en vez de la tradicional diagonal invertida.

Finalmente entramos a WebDev, y cargamos el análisis del proyecto. Tenemos la opción de dar un nuevo archivo a partir de MySQL, después ds lo cual salvamos el análisis y listo.



martes, 31 de enero de 2012

IDSE en Windows 7


Tuve bastantes problemas para echar a andar el IDSE en una máquina con Windows 7.

Sin embargo, la solución es bastante sencilla: el IDSE no trabaja con el Windows Explorer 9. Para regresar a la versión 8, hay que entrar a panel de control -> programas y caracterísiticas -> ver actualizaciones instaladas y buscar la entrada del internet explorer 9 para desinstalarlo.

Un indicativo para saber si el módulo va a trabajar, es observando el cuadro con la imagen del IDSE, ya que si por algún motivo aparecen caracteres raros es que no va a trabajar.

En el vínculo que dice ¿No puedes ingresar? aparecen cuatro opciones:
La primera es para entrar al sitio de java, donde se puede descargar la versión 5.7 o la 6.2 que son las mas recomendables.
En el segundo vínculo se instala el "java policy" que es indispensable para que el módulo trabaje.
En la tercera opción hay un manual de 14 hojas, que sirve para configurar el internet explorer bajo windows xp o vista.
En la cuarta opción hay información adicional para configurar el internet explorer 8.