viernes, 26 de septiembre de 2014

Obtener usuarios y permisos MySQL

Los usuarios creados en MySQL se almacenan en una tabla llamada user dentro de la base de datos mysql.
Si queremos obtener el listado de usuarios simplemente podemos lanzar esta consulta:
select user, password, host from mysql.user;

Si después necesitamos obtener la lista de privilegios que tiene uno de los usuarios podemos hacerlo con:
SHOW GRANTS FOR user;

Siendo user uno de los usuarios que nos ha devuelto la SQL anterior que deberemos escribir uniendo el resultado de la columna user y host separados por el símbolo de @. Por ejemplo:
SHOW GRANTS FOR 'root'@'localhost';

martes, 23 de septiembre de 2014

Llenar una cadena con ceros a la izquierda mediante Javascript

Hace un año aproximadamente colgué en este enlace la forma de llenar una cadena con ceros a la izquierda especificando la longitud de la cadena que se deseaba mediante PHP. En esta ocasión me ha hecho falta con Javascript y aquí os dejo la función:

function zerofill(valor, longitud){
  var cad = new Array(1+longitud).join('0');
  return (cad+valor).slice(-cad.length);
}

martes, 16 de septiembre de 2014

Obtener lista de parámetros pasados por GET mediante Javascript

Si necesitamos obtener una lista de los parámetros que nos han pasado en una url y necesitamos hacerlo con Javascript lo podemos realizar sin problemas con esta pequeña función que os dejo a continuación:
function getParamsGET(){
 var url = document.location.href;
 var strparams = url.split('?')[1];
 var arrparams = strparams.split('&');
 var arrget = {};

 for (var i = 0, l = arrparams.length; i < l; i++){
  var arrtmp = arrparams[i].split('=');
  arrget[arrtmp[0]] = unescape(decodeURI(arrtmp[1]));
 }
 return arrget;
}

Convertir tamaño de puntos a píxels con Javascript

Hoy os dejo una sencilla función que tuve que buscar para convertir el tamaño de una fuente de puntos a píxels y así poder averiguar qué iba a ocupar un texto mediante Javascript.

La función es la siguiente:

function pttopx(valpt){
 var valpx = parseInt(valpt, 10);
 valpx = parseInt(((valpx*96)/72), 10);
 return valpx;
}

lunes, 15 de septiembre de 2014

Eliminar un directorio completo con PHP

Con esta función recursiva lo que vamos a hacer es eliminar un directorio completo, borrando los ficheros y subdirectorios que pueda contener. El código fuente sería el siguiente:
 function deleteDirectory($dir){
     $result = false;
     if ($handle = opendir("$dir")){
         $result = true;
         while ((($file=readdir($handle))!==false) && ($result)){
             if ($file!='.' && $file!='..'){
                 if (is_dir("$dir/$file")){
                     $result = deleteDirectory("$dir/$file");
                 } else {
                     $result = unlink("$dir/$file");
                 }
             }
         }
         closedir($handle);
         if ($result){
             $result = rmdir($dir);
         }
     }
     return $result;
 }

domingo, 16 de febrero de 2014

Seleccionar un registro aleatoriamente con MySQL

Si necesitamos obtener una fila aleatoria de una tabla MySQL, es muy probable que si no conocemos sus problemas, optemos por la función RAND().


SELECT * FROM tabla ORDER BY RAND() LIMIT 1;


Éste es una de esas funciones que suenan muy bien a primera vista y donde muchos programadores suelen caer. Sin embargo se trata de una función lenta y que utiliza muchos recursos del servidor ya que MySQL tiene que generar una tabla temporal completa con todos los datos de la tabla original reordenados aleatoriamente.

Si realmente necesitas obtener un registro aleatorio hay mejores formas de hacerlo y así prevenir un cuello de botella que aumentará a medida que aumenta el número de registros de la tabla.

   $res = mysqli->query("SELECT count(*) FROM tabla");
   $fila = $res->fetch_row();
   $rand = mt_rand(0, $fila[0] – 1);
 
   $res = mysqli->query("SELECT * FROM tabla LIMIT $rand, 1");