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/
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!
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>
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.
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.
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