Llevo desde el 2005 trabajando para una pequeña empresa de informática como programador LAMP. En estos años he acumulado muchas funciones potencialmente reutilizables e interesantes para cualquiera, aqui muestro una pequeña selección.
Os pido e invito a que añadáis vuestras propias funciones útiles o reutilizables en los comentarios.
Define una tabla sql con parejas campo-valor como constantes de php. Una entrada de ejemplo válida podría ser : «select campo,valor from constantes»
function definir_constante_sql($sql) { $resultado=mysql_query($sql); if($resultado) { while($array=mysql_fetch_row($resultado)) { define($array[0],$array[1]); } } else { echo "ERROR Grave , no se pudieron cargar las constantes"; exit; } }
Nos devuelve un número de filas al azar de la tabla indicada.
function dame_unas_filas_al_azar($tabla,$numero_de_filas) { $sql="SELECT * FROM ".$tabla." ORDER BY RAND(NOW()) LIMIT ".$numero_de_filas; $resultado = mysql_query($sql); if($resultado) { return $resultado; } else { return false; } }
Devuelve el último ID de una tabla, usaba esto hasta que conocí mysql_last_id() -_-
function ultimo_id($tabla,$campo) { $sql="SELECT max(".$campo.") AS maximo FROM `".$tabla."`"; $resultado=mysql_query($sql); if($resultado) { $array=mysql_fetch_array($resultado); $id_auto_asignado=$array['maximo']; return $id_auto_asignado; } else { return 0; } }
Nos dice si un valor existe.
function si_existe_en_la_tabla($tabla,$campo,$valor) { $tabla=mysql_escape_string($tabla); $campo=mysql_escape_string($campo); $valor=mysql_escape_string($valor); $sql="select ".$campo." from ".$tabla." where ".$campo."=".$valor; return (mysql_query($sql) && (mysql_num_rows($resultado)>0)); }
Comprueba si vienes de la página pasada por parametro. OJO! No todos los navegadores definen HTTP_REFERER (ni tienen obligación de hacerlo), con todas las consecuencias que ello supone.
function vienesDe($pagina) { return strrchr($_SERVER['HTTP_REFERER'],"/") == "/".$pagina; }
Coge el valor del campo de una sql que devuelve al menos una fila.
function coger_valor($sql,$campo) { $resultado=mysql_query($sql); if($resultado) { $array=mysql_fetch_array($resultado); $valor=$array[$campo]; return $valor; } else { return false; } }
Metido al principio, evita que el navegador use cache
function no_coge_de_cache() { header("Expires: Mon, 1 Jul 1900 00:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); }
Genera un color aleatorio hexadecimal
function generar_color() { $r=rand(0,255); $g=rand(0,255); $b=rand(0,255); $color="#".dechex($r).dechex($g).dechex($b); return $color; }
Vacia una tabla !! para mysql 3.x o 4.x, en mysql 5.x esto es equivalente a TRUNCATE ‘tabla’
function vaciar_tabla($tabla) { $sql="DELETE FROM `".$tabla."`";mysql_query($sql); $sql="ALTER TABLE `".$tabla."` PACK_KEYS =0 CHECKSUM =0 DELAY_KEY_WRITE =0 AUTO_INCREMENT =1";mysql_query($sql); }
Redirecciona por javascript, en lugar de por header(Location : pagina.php).
function redireccionarPorJavascript($nuevaURL) { echo '<script type="text/javascript">'; echo 'location.href="'.$nuevaURL.'"'; echo '</script>'; }
Capitaliza una palabra
function capitalizar($palabra) { return ucfirst(strtolower($palabra)); }
Si tenemos tablas definidas con enumerado podemos obtener un array de ese enumerado con esta función, la sintaxis es tabla.columna
/* $array = enum("tabla.columna"); */ function enum($objeto) { list($tabla, $columna) = explode(".", $objeto); $fila=@mysql_fetch_assoc(mysql_query("SHOW COLUMNS FROM ".$tabla." LIKE '".$columna."'")); return ($fila ? explode("','",preg_replace("/(enum|set)\('(.+?)'\)/","\\2",$fila['Type'])) : array(0=>'None')); }
Nos dice si una definición esta definida.
function estaDefinido($var) { return (isset($var) || $var != "" || $var != null || strlen($var)>0); }
Borra un registro
function borrarRegistro($tabla , $nombreCampoClave , $valorCampoClave) { $sql="DELETE FROM `".$tabla."` WHERE `".$nombreCampoClave."` = '".$valorCampoClave."' LIMIT 1;"; return mysql_query($sql); }
Actualiza un campo
function actualizar_campo($tabla , $nombreCampoUnico , $valorCampoUnico , $nombreColumna , $nuevoValorColumna) { $sql="UPDATE `".$tabla."` SET `".$nombreColumna."` = '".$nuevoValorColumna."' WHERE `".$nombreCampoUnico."` = '".$valorCampoUnico."' LIMIT 1 ;"; return mysql_query($sql); }
Ver las «superglobales» definidas.
function versupervariables() { echo "_COOKIE"; foreach($_COOKIE as $clave=>$valor) { echo $clave." = ".$valor.""; } echo "_ENV"; foreach($_ENV as $clave=>$valor) { echo $clave." = ".$valor.""; } echo "_FILES"; foreach($_FILES as $clave=>$valor) { echo $clave." = ".print_r($valor).""; } echo "_GET"; foreach($_GET as $clave=>$valor) { echo $clave." = ".$valor.""; } echo "_POST"; foreach($_POST as $clave=>$valor) { echo $clave." = ".$valor.""; } echo "_REQUEST"; foreach($_REQUEST as $clave=>$valor) { echo $clave." = ".$valor.""; } echo "_SESSION"; foreach($_SESSION as $clave=>$valor) { echo $clave." = ".$valor.""; } echo "_SERVER"; foreach($_SERVER as $clave=>$valor) { echo $clave." = ".$valor.""; } }
Acota una palabra con puntos suspensivos.
function acotar($palabra , $cantidadDeseada , $porDelante = false) { $sufijo = "..."; if(strlen($palabra)>$cantidadDeseada) { if($porDelante) { return $sufijo.substr($palabra,strlen($palabra)-$cantidadDeseada,strlen($palabra)-1); } else { return substr($palabra,0,$cantidadDeseada-strlen($sufijo)).$sufijo; } } else { return $palabra; } }
Si el valor de un GET es numero —> bool
function porElGETvieneUnNumero($nombre) { return (isset($_GET[$nombre]) && $_GET[$nombre]!="" && is_numeric($_GET[$nombre])); }
Esta función recibe un timestamp he imprime hace cuando fue esa fecha adaptandose al mejor periodo de tiempo posible. Por ejemplo «Por ejemplo: Hace 3 dias»
function hace($timestamp) { $diferencia = time() - $timestamp; if($diferencia > 0) { $periodo = array("seg", "min", "hora", "dia", "semana", "mes" , "año", "decada"); $longitud = array( "60" ,"60" , "24" , "7" , "4.35", "12" , "10" ); for($j = 0; $diferencia >= $longitud[$j]; $j++) $diferencia /= $longitud[$j]; $diferencia = round($diferencia); if($diferencia != 1) { if($periodo[$j] == "mes") $periodo[$j].= "es"; else $periodo[$j].= "s"; } return "Hace ".$diferencia." ".$periodo[$j]; } else { return "Ahora mismo"; } }
Nos dice si un año es bisiesto
function esBisiesto($ano) { // El dia y el mes me lo invento por que no interesa return (date("L",strtotime($ano."-2-28")) == 1); }
Nos dice el limite de un mes, teniendo en cuanta bisiestos con la función anterior
function getLimiteMes($mes,$ano) { switch($mes) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; break; case 2: if(esBisiesto($ano)) {return 29;} else {return 28;} break; case 4: case 6: case 9: case 11: default: return 30; break; } }
Filed under: Linux, multiplataforma, php, programación, repositorios | Tagged: php, programación, scripts |
Deja una respuesta