Archivo | PHP RSS for this section

Manejo de Ficheros

En esta seccion veremos las funciones mas comunes de acceso a ficheros, ya que son de vital ayuda cuando queremos por ejemplo, recuperar o escribir datos desde contadores, libros de vicita etc…
Apertura de un archivo.

La función utilizada para abrir un archivo en PHP es fopen, y su sintaxis:
file_handler=fopen(“nombre_de_archivo”,”modo”);
Donde file_handler es el puntero que se crea sobre el archivo, nombre_de_archivo es la ruta y nombre del archivo a abrir, y modo se refiere a los diferentes modos escritura/lectura.

Los Modos son:

  • r Sólo lectura. El puntero al comienzo del archivo
  • r+ Lectura y escritura; apuntador al inicio del archivo
  • w Sólo escritura, si no existe el archivo lo crea, si existe lo convierte en fichero de longitud cero y el apuntador se coloca en el inicio (sobreescribe el contenido, vamos)
  • w+ Lectura y escritura, si existe lo trunca a tamaño cero, y se situa al inicio, si no existe lo crea
  • a Modo append, sólo escritura, si no existe lo crea. Si existe, el apuntador se coloca al final del ficero (listo para escribir a continuacion del contenido)
  • a+ Modo append, lectura y escritura, si no existe lo crea; apuntador al final del archivo
  • b es un flag adicional a cualquiera de los anteriores que indica que vamos a operar sobre un archivo binario (en contraposicion a archivo de texto) como una imagen o un sonido. En algunos sistemas operativos como linux no existe esta diferencia asi que el indicador b será ignorado.

La función devuelve un file_handler que luego debe ser usado en todas las funciones de tipo fgets, fputs, fclose, fread, fwrite, etc.

fopen solo debe usarse para abrir un archivo cuyo contenido vamos a manipular. Si unicamente queremos recuperar su contenido (y por ejemplo mostrarlo en pantalla), hay otras funciones mas adecuadas.

Cerrar el archivo: fclose()

para eso usamos fclose sobre el apuntador adquirido sobre el fichero previamente abierto con fopen. sintaxis fclose (file_handler);

Es muy importante cerrar el fichero al terminar de operar con el, para evitar deterioro de los datos.

ejemplo 1:

<?php
//vamos a ir construyendo un contador básico
//abrimos "contador.txt" en modo lectura

if ($file fopen"/otros/contador.txt",  "r")) {
// tenemos un puntero ($file) sobre contador.txt
// codigo de manejo del fichero
    fclose($file); // hemos terminado, cerramos el apuntador
}
?>

ejemplo 2

<?php
if ($file fopen"/otros/contador.txt",  "w")) {
// tenemos nuevo apuntador.
// codigo de manejo del fichero
fclose($file); //hemos terminado, cerramos el archivo.
}
?> 

Como nota final queda aclarar que la variable $file no es el nombre del archivo sino el apundador (fie_handler) al contenido.

Mostrar la fecha : dia , mes y año

Muchas veces es útil en nuestra página web colocar un indicador automático que muestre la fecha actual

Aqui mostrare en este pequeño script como mostrar un indicador automatico que muestre la fecha actual para ello vamos a utilizar un codigo queno pretende ser el mas optimizado pero que nos servira para entender el funcionamiento de la funcion date() y de los array asociativos.

function fecha(){
$mes = date(“n”);
$mesArray = array(
1 => “Enero”,
2 => “Febrero”,
3 => “Marzo”,
4 => “Abril”,
5 => “Mayo”,
6 => “Junio”,
7 => “Julio”,
8 => “Agosto”,
9 => “Septiembre”,
10 => “Octubre”,
11 => “Noviembre”,
12 => “Diciembre”
);
$semana = date(“D”);
$semanaArray = array(
“Mon” => “Lunes”,
“Tue” => “Martes”,
“Wed” => “Miercoles”,
“Thu” => “Jueves”,
“Fri” => “Viernes”,
“Sat” => “Sábado”,
“Sun” => “Domingo”,
);
$mesReturn = $mesArray[$mes];
$semanaReturn = $semanaArray[$semana];
$dia = date(“d”);
$anio = date (“Y”);
return $semanaReturn.” “.$dia.” de “.$mesReturn.” del “.$anio;
}

Basicamente lo que hace es crear secuencias equivalente de lo que crea php , y lo que nostros queremos interpretar, el resultado sería algo así:

Jueves 23 de agosto de 2007

Para ejecutar el script, solo tendreis que poner en el lugar donde querais que se muestre la fecha:

<?=fecha() ?>

 

Espero que les sea úti l.

Calcular dias de diferencia

Script PHP para calcular los días de diferencia que hay entre dos fechas.
Este codigo nos puede servir para calcular el tiempo transcurrido entre 2 fechas, para solucionar esto usaremos una funcion que lo resolvera facilmente.

Es muy sencillo. Vamos a obtener los valores timestamp de las dos fechas. (Timestamp son los segundos que han pasado desde las cero horas del 1 de enero de 1970)
Usaremos mktime para trabajar con fechas, esta funcion función recibe varios parámetros:
mktime ( [int hora [, int minuto [, int segundo [, int mes [, int dia [, int anyo [, int es_dst]]]]]]] )

El primer parámetro es la hora, luego los minutos y segundos. Luego los meses, días y años. Con todos esos valores nos devuelve el timestamp de una fecha cualquiera. Podemos omitir parámetros y en ese caso tomará los valores de la fecha actual del servidor.

dejo un ejemplo de como seria el codigo terminado:

function calculaDias($desde,$hasta) {
/* USAMOS UNA FUNCION LLAMA DA MKTIME LA CUAL TIENE LA SINTAXIS SIGUIENTE
mktime ( [int hora [, int minuto [, int segundo [, int mes [, int dia [, int anyo [, int es_dst]]]]]]] )
*/

// CALCULO DE LA EDAD———————————————->
//$fecha1= date (“Y-m-d”);

// separamos los datos con la función explode.
$f1=explode(“-“,$desde);
$f2=explode(“-“,$hasta);
echo “f1: “.$f1.” fecha1: “.$hoy.”
“;
echo “f2: “.$f2.” fecha2: “.$fecha2.”
“;
//fecha1
$dia1=intval($f1[2]);
$mes1=intval($f1[1]);
$ano1=intval($f1[0]);
echo “dia1: “.$dia1.” mes1: “.$mes1.”. ano1: “.$ano1.”
“;
//FECHA 2
$dia2=intval($f2[2]);
$mes2=intval($f2[1]);
$ano2=intval($f2[0]);
echo “dia2: “.$dia2.” mes2: “.$mes2.”. ano2: “.$ano2.”
“;
//calculo timestam de las dos fechas
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
$timestamp2 = mktime(0,0,0,$mes2,$dia2,$ano2);

//resto a una fecha la otra
$segundos_diferencia = $timestamp1 – $timestamp2;

//convierto segundos en días
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);

//obtengo el valor absoulto de los días (quito el posible signo negativo)
$dias_diferencia = abs($dias_diferencia);

//quito los decimales a los días de diferencia
$dias_diferencia = floor($dias_diferencia);

return $dias_diferencia;
}

$fecha1 = “2007-12-16”;
$fecha2 = “2007-8-1”;
echo “

diferencia :” .calculaDias($fecha1,$fecha2);

?>