jul 20 2010

Error: La CPU NTVDM ha encontrado una instrucción no permitida

Este error es molesto y muy simple de reparar, lo unico que se tiene que hacer es, en “opciones de carpeta” y permitir ver archivos ocultos y archivos de sistema.

Ahora vayan a:

C:\WINDOWS\repair

Copiar los archivos: Autoexec.nt y Config.nt despues los pegan en:

C:\WINDOWS\system32

  • Share/Bookmark

jul 8 2010

Obtener numerador y denominador desde una tabla en MySQL con PHP (numero / total)

En realidad no sé ni como poner titulo a este tema, pero les explico un poco lo que tenia que hacer para que encuentren este ejemplo útil en lo que necesiten.
Existe una tabla en la que almaceno registros que se enlazan a otra tabla por medio de un campo, ejemplo:

T1
a_id, a_referencia_t2_id, a_contenido

T2
b_id, b_algomas

Con esto, debía listar todas las filas de T1 y en obtener la el numerador del registro, es decir, 2 / 3 (el segundo registro de los tres disponibles con la misma referencia de la T2).

Obtener el denominador es sencillo:

$total_num = ceil(mysql_num_rows(mysql_query(“SELECT a_id FROM t1 WHERE a_referencia_t2_id=”.$row_t1['b_id'].”")));

Ahora, lo complicado, es generar ese “índice” para obtener el numerador, esto lo hice dentro de un while($row_t1=mysql_fetch_assoc($query_t1)), entonces la ejecución del código se hace por cada fila obtenida:

mysql_query(“set @a_id = ””);
mysql_query(“set @num  = 1;”);
$sql_num = ‘
SELECT
a_id as id_num,
a_referencia_t2_id,
@num := if(@a_id = a_referencia_t2_id, @num + 1, 1) as row_number,
@a_id:= a_referencia_t2_id as dummy
FROM `t1`
WHERE a_referencia_t2_id=’.$row_t1['a_referencia_t2_id'];
$query_num=mysql_query($sql_num) or die(mysql_error());
while($row_num=mysql_fetch_assoc($query_num)) {
if($row_num['id_num']==$row_t1['a_id']) {
$num=$row_num['row_number'];
}
}

Con esto, obtenemos el resultado deseado (Ej.: 4 / 8):

echo $num.” / “.$total_num

Espero que les sea útil!
Part ot this code came from: http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/

  • Share/Bookmark

jun 29 2010

Convertir de cantidad a importe con letra en pesos mediante PHP

Necesitaba una función que pudiera traducir una cantidad dada con centavos a el total con letra, es decir escrito, para un sistema de facturación con PHP, encontré una función excelente en BLASTEN.com y me tome la libertad de moverle un poquito para hacer que la salida fuera exactamente como la necesitaba, es decir, incluyendo “X PESOS xx/100 M.N.”

Todo el crédito es para la gente de Blasten, pero le puse un poquito mas de sabor para quienes me leen y lo puedan utilizar con mayor facilidad.

Importante: La función por el momento solo acepta 2 decimales y el formato del numero tiene que ser xxx.xx, así que pueden utilizar number_format() para limpiar la variable antes de pasarla por la función.

Para utilizarlo, solo descarguen el código, péguenlo en su script o hagan un include con la ruta al fichero que pueden descargar aquí, de cualquier forma, lo único necesario es utilizar:

echo num2letras($var);

No queda mas que desearles happy coding!

num2letras en php

  • Share/Bookmark

jun 23 2010

xHTML Tipos de Doctype

Un tip rápido o una lista que puede ser útil, una pequeña lista con los Doctypes autorizados por la W3C:

HTML 4 Estricto

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN”
“http://www.w3.org/TR/html4/strict.dtd”>

xHTML 1 Estricto

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>

xHTML Transicional

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

xHTML 1.1

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>

HTML 5

<!DOCTYPE html>

  • Share/Bookmark

mar 11 2010

Copiar la estructura de una tabla MySQL en una tabla nueva

Si deseas copiar la esctructura de una tabla dentro de una base de datos MySQL, peor no los datos, solo necesitas ejecutar una linea en un query. La Sintaxis es:

CREATE TABLE tabla_copia LIKE tabla_original;

Eso es todo, obtendremos los mismo campos que en la “tabla original” en la “tabla_copia” en un sencillo paso.

  • Share/Bookmark

mar 2 2010

Buscar en un campo separado por comas en MySQL

Debido a un desarrollo en el que actualmente trabajo, me tope con esto que resulto ser muy sencillo de hacer, pero no esta tan documentado como se espera. Que pasa si tienes un campo con cadenas de texto o enteros separados por coma, como categorías, nombres etc.

Un ejemplo practico seria,  el campo “cats” tiene un contenido como ’2,11,10,1,16′, si usamos el tradicional LIKE:

SELECT * FROM tabla WHERE cats LIKE '1';

Se podría pensar que esta solución es adecuada pero no es así, ya que nos devolvera:

cats:

  • 11
  • 10
  • 1
  • 16

Para lograr obtener solo el ’1′ y no todos los números que contengan el ’1′ se debe utilizar esta sintaxis:

SELECT * FROM tabla WHERE FIND_IN_SET('1', cats)

En el ejemplo práctico ‘tabla’ es el nombre de la tabla en la que queremos buscar y ‘cats’ el nombre del campo.

  • Share/Bookmark

feb 11 2010

Error APT: E: Unable to lock the download directory

Aquí otro tip rápido para nuestras cajas con Linux, si al hacer un:

$ apt-get upgrade

Nos devuelve un error algo así:

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  bind9 bind9-host dnsutils libbind9-30 libdns35 libisc35 libisccc30
  libisccfg30 liblwres30 linux-generic linux-headers-generic
  linux-image-generic linux-restricted-modules-generic netatalk
The following packages will be upgraded:
  libmysqlclient15-dev libmysqlclient15off mysql-client mysql-client-5.0
  mysql-common mysql-server mysql-server-5.0 php5-imap
8 upgraded, 0 newly installed, 0 to remove and 14 not upgraded.
3 not fully installed or removed.
E: Could not get lock /var/cache/apt/archives/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the download directory

Lo único que debémos hacer como root es:

$ pkill apt
  • Share/Bookmark

feb 4 2010

Reparar tabla corrupta en MySQL

Lo único que hay que hacer, es un query mediante PHP, en  la consola interactiva o vía PhpMyAdmin conteniendo lo siguiente:

REPAIR TABLE mytablacorrupta;

Con esto, MySQL reparara los problemas que tengamos.

  • Share/Bookmark