Recientemente he lanzado Psicocanis.com una web/blog sobre etología clínica veterinaria, que intenta posicionarse como sitio de referencia en este sector.
Espero que os guste
Recientemente he lanzado Psicocanis.com una web/blog sobre etología clínica veterinaria, que intenta posicionarse como sitio de referencia en este sector.
Espero que os guste
Genial función en PHP que transforma un array PHP en una salida tipo Json. Genial para PHP4 que no integraba esta funcionalidad de serie.
function array2json($arr) {
if(function_exists('json_encode')) return json_encode($arr); //Lastest versions of PHP already has this functionality.
$parts = array();
$is_list = false;
//Find out if the given array is a numerical array
$keys = array_keys($arr);
$max_length = count($arr)-1;
if(($keys[0] == 0) and ($keys[$max_length] == $max_length)) {//See if the first key is 0 and last key is length - 1
$is_list = true;
for($i=0; $i$value) {
if(is_array($value)) { //Custom handling for arrays
if($is_list) $parts[] = array2json($value); /* :RECURSION: */
else $parts[] = '"' . $key . '":' . array2json($value); /* :RECURSION: */
} else {
$str = '';
if(!$is_list) $str = '"' . $key . '":';
//Custom handling for multiple data types
if(is_numeric($value)) $str .= $value; //Numbers
elseif($value === false) $str .= 'false'; //The booleans
elseif($value === true) $str .= 'true';
else $str .= '"' . addslashes($value) . '"'; //All other things
// :TODO: Is there any more datatype we should be in the lookout for? (Object?)
$parts[] = $str;
}
}
$json = implode(',',$parts);
if($is_list) return '[' . $json . ']';//Return numerical JSON
return '{' . $json . '}';//Return associative JSON
}
Para resaltar la sintaxis de los ficheros ctp, es tan sencillo como seguir los siguientes pasos.
Abre la consola y escribe
$ cd ~/Library/Application\ Support/TextMate/Bundles
A continuación
$ svn co http://macromates.com/svn/Bundles/trunk/Review/Bundles/PHP\ Cake.tmbundle
Ahora solo tienes que abrir los ficheros con extensión ctp y listo
Cuando damos de alta usuarios de forma automática a menudo necesitamos poner una contraseña por defecto. Este script PHP nos devuelve una contraseña aleatoria de la longitud en caracteres que le pasemos
function getRandomPWD($length = 10){
$password = "";
$possible = "0123456789bcdfghjkmnpqrstvwxyz";
$i = 0;
while ($i < $length) {
$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
if (!strstr($password, $char)) {
$password .= $char;
$i++;
}
}
return $password;
}
Bueno pues igual que en javascript, aquí tenéis la función PHP para calcular los días/noches de diferencia entre dos fechas.
function dateDifference($d1, $d2){
$v1 = explode("-", $d1);
$date1 = mktime(0, 0, 0, intval($v1[1]), intval($v1[0]), intval($v1[2]));
$v2 = explode("-", $d2);
$date2 = mktime(0, 0, 0, intval($v2[1]), intval($v2[0]), intval($v2[2]));
$dateDiff = $date2 - $date1;
return floor($dateDiff/(60*60*24));
}
Ahora mismo estoy desarrollando una aplicación para un hotel en la que el usuario tiene que seleccionar dos fechas, y hay que calcular la diferencia entre las dos para obtener el número de noches que se va a alojar.
Solo tenéis que utilizar esta función javascript, que os devolverá un entero con el numero de noches.
function getNumeroDeNits(){
var d1 = $('#datepicker1').val().split("-");
var dat1 = new Date(d1[2], parseFloat(d1[1])-1, parseFloat(d1[0]));
var d2 = $('#datepicker2').val().split("-");
var dat2 = new Date(d2[2], parseFloat(d2[1])-1, parseFloat(d2[0]));
var fin = dat2.getTime() - dat1.getTime();
var dias = Math.floor(fin / (1000 * 60 * 60 * 24))
return dias;
}
Esta claro que en html deberíais tener dos campos llamados datepicker1 y datepicker2, con el formato de fecha dd-mm-aaaa.
Bueno después de un tiempo sin publicar a ver si nos ponemos las pilas de nuevo
.
Cuando desarrollas webs de una sola pagina en las que muestras un contenido u otro en javascript, a menudo queda un poco tosca la transición entre un contenido y otro, lo mejor es hacer un scroll hasta arriba de la pagina y no hay manera más estética de hacerlo que mediante este trozo de código en jquery.
$('html, body').animate({scrollTop:0}, 'slow')
Espero que os guste y os sirva.
Mirando en the Bakery de CakePHP he encontrado una librería genial tanto para JQuery como para prototype, para cargar imagenes con AJAX.
Es francamente sencilla de utilizar, y además podemos conseguir unos acabados muy al estilo de web 2.0. eliminando de una vez por todas el input.file de toda la vida que a mi parecer es horroroso.
Podéis encontrar el articulo original aquí.
Os dejo una función para enviar mensajes a Twitter desde PHP.
function tweet($message, $username, $password)
{
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => sprintf("Authorization: Basic %s\r\n", base64_encode($username.':'.$password)).
"Content-type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query(array('status' => $message)),
'timeout' => 5,
),
));
$ret = file_get_contents('http://twitter.com/statuses/update.xml', false, $context);
return false !== $ret;
}
A continuación se muestra como extender el núcleo de JQuery para poder hacer uso de la función reset() de un formulario en JQuery
$.fn.extend({
reset: function() {
return this.each(function() {
$(this).is('form') && this.reset();
});
}
});