El hombre nunca sabe de lo que es capaz hasta que lo intenta. Charles Dickens

Convertir un color de formato hexadecimal a RGB con PHP

A veces puede resultar útil convertir un color en formato hexadecimal, como por ejemplo #336699, a un formato RGB, como por ejemplo (51,102,153).

En esta entrada se muestra una función que realiza esta conversión en PHP.

function hex2rgb($hex){
	$hex = ereg_replace("#", "", $hex);
        $color = array();

        if(strlen($hex) == 3) {
        $color['r'] = hexdec(substr($hex, 0, 1) . $r);
        $color['g'] = hexdec(substr($hex, 1, 1) . $g);
        $color['b'] = hexdec(substr($hex, 2, 1) . $b);
        }
        else if(strlen($hex) == 6) {
        $color['r'] = hexdec(substr($hex, 0, 2));
        $color['g'] = hexdec(substr($hex, 2, 2));
        $color['b'] = hexdec(substr($hex, 4, 2));
        }

        return $color;
}

Ejemplo de uso:

$color = hex2rgb('336699');
echo "R:". $color['r']."
";
echo "G:". $color['g']."
";
echo "B:". $color['b']."
";

Lo que nos devolvería:

R:51
G:102
B:153

Crear un fichero CSV utilizando PHP/MYSQL

Como complemento al post "Generar archivo CSV desde una array de PHP", en este caso vamos a ver como crear una exportación a un fichero CSV de una tabla MySQL

<?php
$db_host = 'localhost';
$db_usuario = 'root';
$db_password = ";
$db_basedatos = 'mytestdatabase';
$db_tabla = 'clientes';
$$nombre_fichero = 'clientes.csv';
$dblink = mysql_connect($db_host, $db_usuario, $db_password) or die("No puede conectar " . mysql_error());
mysql_select_db($db_basedatos) or die("No puede conectar.");
$result = mysql_query("SHOW COLUMNS FROM ".$db_tabla."");
$i = 0;
if (mysql_num_rows($result) > 0) {
	while ($row = mysql_fetch_assoc($result)) {
		$salida_cvs .= $row['Field'].",";
		$i++;
	}
}
$salida_cvs .= "\n";
$values = mysql_query("SELECT * FROM ".$db_tabla."");
while ($rowr = mysql_fetch_row($values)) {
	for ($j=0;$j<$i;$j++) {
		$salida_cvs .= $rowr[$j].", ";
	}
	$salida_cvs .= "\n";
}

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header( "Content-disposition: filename=".$nombre_fichero.".csv");
print $salida_cvs;
exit;
?>

Generar archivo CSV desde una array de PHP

Sencilla pero muy útil función PHP para generar un archivo .csv a partir de una array. La función acepta 3 parámetros: los datos, el delimitador del csv (el valor predeterminado es una coma) y el encapsulador del csv (el valor por defecto es una comilla doble).

function generateCsv($data, $delimiter = ',', $enclosure = '"') {
       $handle = fopen('php://temp', 'r+');
       foreach ($data as $line) {
               fputcsv($handle, $line, $delimiter, $enclosure);
       }
       rewind($handle);
       while (!feof($handle)) {
               $contents .= fread($handle, 8192);
       }
       fclose($handle);
       return $contents;
}

Visto en CatsWhoCode » »

jQuery: inyectar una parte de un documento

La función de .load() es una de las formas más sencillas de AJAX en jQuery, pero es realmente potente. Para aquellos que no estén familiarizados pueden consultar el siguiente tutorial en este mismo blog: Ajax con jQuery: el método load(). Cuando se ejecuta, se carga la URL solicitada e inyecta el HTML resultante en el elemento contenido en ese objeto:

$('#caja').load('/noticias/top.html');

Se trata de una forma muy simple de hacer llamadas AJAX. Una función interesante que a menudo no se utiliza, es la capacidad de inyectar sólo un fragmento de dicho documento, en lugar de toda la página, en nuestro elemento:

$('#caja').load('/noticias/top.html div#deportes');

Esto realizaría una petición XMLHttpRequest para la URL solicitada, analiza el documento devuelto, encuentra sólo el elemento solicitado y lo agrega al elemento seleccionado.

Seleccionar registros repetidos en MySQL

Consulta SQL que nos permite seleccionar una serie de registros repetidos de un campo e-mail, nif o cualquiero otro campo que debería ser único en nuestra tabla. En el siguiente ejemplo se ha consultado la tabla "clientes" para seleccionar los correos electrónicos repetidos y la cantidad de veces que aparecen en la tabla.

SELECT email, COUNT(email) as total_registros
FROM clientes
GROUP BY email
HAVING COUNT(email)>1