Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Guia PHP Nivel 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 44

PHP NIVEL 2

Guía de PHP nivel 2 UNEWEB


INDICE
OPERACIONES A LA BASE DE DATOS ................................................... 3
BASE DE DATOS .................................................................................... 4
CONEXIÓN.PHP ..................................................................................... 5
MENÚ.HTML ............................................................................................ 5
AGREGARMATERIA.PHP ....................................................................... 5
AGREGARALUMNO.PHP ....................................................................... 7
MATRICULA.PHP .................................................................................... 8
ARREGLOS Y MATRICES ....................................................................... 13
ARREGLOS ........................................................................................... 13
ARRAY ASOCIATIVO ............................................................................ 14
RECORRIDO DE TABLAS ASOCIATIVAS ........................................... 15
FUNCION EACH() ................................................................................. 16
FUNCIONES ............................................................................................. 17
FUNCIONES .......................................................................................... 17
PASE DE PARAMETRO POR VALOR .................................................. 19
PASE DE PARAMETRO POR REFERENCIA ....................................... 19
FUNCION FECHA DATE() .................................................................... 20
FUNCION DE CADENAS ...................................................................... 22
EJERCICIO PRACTICO CALCULADORA................................................ 24
CALCULADORA.PHP ............................................................................ 25
FUNCION.PHP ...................................................................................... 27
ARCHIVOS ................................................................................................ 28
ABRIR UN ARCHIVO ............................................................................ 28
CERRAR UN ARCHIVO ........................................................................ 30
FUNCIONES PARA LECTURA DE ARCHIVOS ................................... 32

1
FUNCION PARA GESTIONAR ARCHIVOS .......................................... 33
EJERCICIO PRACTICO ENCUESTA ....................................................... 33
ENCUESTA.PHP ................................................................................... 34
GUARDARENCUESTA.PHP..................................................................... 35
COOKIES .................................................................................................. 38
ELIMINAR COOKIES ............................................................................. 40
SESSIONES .............................................................................................. 41

2
OPERACIONES A LA BASE DE DATOS

En el nivel 1 de PHP se realizó conexión con la base de datos,

además de realizar el CRUD (crear, leer, modificar, eliminar) para una

tabla, en este caso realizaremos un ejercicio práctico para los casos en

donde tengamos una base de datos más real, donde haya más de una

tabla y estén relacionadas mediante claves foráneas.

Ejercicio

Se debe construir una base de datos la cual me permita registrar

alumnos, materias, y matricular alumnos en alguna materia para eso

deben diseñar la base de datos que se muestra a continuación en el

modelo entidad-relación, y también debemos crear los formularios

pertinentes para el ingreso de la información. Adicionalmente se creara los

archivos que procesaran la información a la base de datos, cabe destacar

que en este ejercicio se debe tomar en cuenta lo anteriormente estudiado

en el curso de PHP nivel 1.

3
BASE DE DATOS

Esta base de datos contiene tres tablas, resaltando que en la tabla

matricula, posee dos claves foráneas una que viene de la tabla materia y

otra que viene de la tabla alumno, es decir la tabla matricula depende de

ellas dos, por lo tanto no podemos crearla sin que previamente este

creada alumno y materia, lo mismo ocurrirá al momento de insertar

valores, no se podrá matricular alumno que no esté insertado así como

una materia que no se haya registrado.

4
CONEXIÓN.PHP

Este archivo define la ruta de conexión con una base de datos, para

este caso el modelo entidad relación del ítem anterior, para ello usamos

<?php
$link= mysqli_connect("localhost","root","","DB");
?>

MENÚ.HTML

Este será nuestra barra de navegación en el sistema debe

mostrarse como la figura a continuación

AGREGARMATERIA.PHP

Se debe crear un formulario el cual nos permita insertar en la base

de datos las materias, tal como se reflejó en el modelo se solicita el

nombre de la materia y la descripción de la misma, debe mostrarte como

la imagen a continuación. Para su fácil navegación se incluye el archivo

menú.html para así poder tener acceso a cualquier modulo del sistema

5
Después de crear el formulario se debe insertar en la base de datos

para ello se debe verifica si se envió el formulario con la función isset(), la

cual chequea que estén definida las variable que se envió en el formulario

y luego se procese al insert como se indica a continuación.

<?php
include "conexion.php";
if (isset($_POST['materia'])) {
$sql="insert into materia value ('','$_POST[materia]','$_POST[descripcion]')";
if(mysqli_query($link,$sql))
{
print "se inserto con exito";
}
else
{
print "Error".mysqli_error($link);
}
}
?>

6
AGREGARALUMNO.PHP

Este formulario nos permitirá insertar en la base de datos los

alumnos, tal como se reflejó en el modelo se solicita el nombre y apellido

del alumno debe mostrarte como la imagen a continuación. Para su fácil

navegación se incluye el archivo menú.html para así poder tener acceso a

cualquier modulo del sistema

Después de crear el formulario se debe insertar en la base de datos

para ello se debe verifica si se envió el formulario con la función isset(), la

cual chequea que estén definida las variable que se envió en el formulario

y luego se procese al insert como se indica a continuación.

7
<?php
include "conexion.php";
if (isset($_POST['nombre'])) {
$sql="insert into alumno value ('','$_POST[nombre]','$_POST[apellido]')";
if(mysqli_query($link,$sql))
{
print "se insertó con exito";
}
else
{
print "Error".mysqli_error($link);
}
}
?>

MATRICULA.PHP

Este nos permitirá matricular a un alumno que previamente se haya

registrado en una materia que ya exista para ello realizaremos dos lista

desplegable la cual llenaremos con información de la base de datos, en

conjunto con un formulario para poder guardar en la tabla matricula.

8
Se define el código PHP que nos permitirá consultar la información

tanto de los alumnos como de las materias para luego llenar la lista

desplegable

<?php
include "conexion.php";
include "menu.php";
$alumno="select idAlumno,nombre,apellido from alumno";
$a=mysqli_query($link,$alumno);
$materia="select idMateria,nombre from materia";
$m=mysqli_query($link,$materia);
echo mysqli_error($link);
?>

9
Después de ello se define el formulario que debe quedar como se indica

Donde la lista desplegable alumno y materia se llena con

información de la base de datos que en el código anterior PHP se

consultó, para ello se utilizara la función mysqli_fetch_array(), la cual nos

permite convertir en un arreglo, los registros extraídos de la base de datos

para imprimirlos en la etiqueta <option> de html.

10
<tr><td>Alumno</td>
<td>
<select name="alumno">
<?php while ($v1= mysqli_fetch_array($a)) {?>
<option value=" <?php print $v1[0];?>">
<?php print $v1[1]." ".$v1[2];?>
</option>
<?php } ?>
</select>
</td>
</tr>
<tr><td>Materia</td>
<td>
<select name="materia">
<?php while ($m1 = mysqli_fetch_array($m)) {?>
<option value="<?php print $m1[0];?>">
<?php print $m1[1]?>
</option>
<?php } ?>
</select>
</td>
</tr>

Después de extraer esa información es necesario guardar la fila

correspondiente en la tabla matricula, donde idMateria y idAlumno, son

11
claves foránea extraídas del atributo value de la etiqueta <select>, donde

se indicó que ese valor es el arreglo en la posición 0, correspondiente al id

<?php
include "conexion.php";
if (isset($_POST['n1'])) {
$sql="insert into matricula value
('','$_POST[materia]','$_POST[alumno]','$_POST[n1]','$_POST[n2]')";
if(mysqli_query($link,$sql))
{
print "se inserto con exito";
}
else
{
print "Error".mysqli_error($link);
}
}
?>

12
ARREGLOS Y MATRICES

ARREGLOS

Se define a un arreglo como un grupo de elementos relacionados

entre sí por medio de índices. Los arreglos pueden ser de una o más

dimensiones, los de una dimensión, son llamados comúnmente "vectores"

y de dos dimensiones matrices.

A diferencia con el lenguaje C, en PHP, un vector puede tener

elementos de distintos tipos de datos (cadenas de caracteres y números).

Para hacer referencia a un elemento del vector, se utiliza un índice,

que indica la dirección en donde se encuentra un determinado valor. El

índice en un arreglo comienza siempre por cero.

La forma para recorrerlos por excelencia es a través de estructuras

de control iterativas, sin embargo PHP también tiene funciones para

13
recorrer los arreglos asociativos (tablas asociativas) que observaremos

más adelante.

Sintaxis

$arreglo[0] = "Hola Mundo";


$arreglo[1] = 123;
$arreglo[3] = true;

Arreglos con autoincremento

$arreglo[] = "Hola Mundo";


$arreglo[] = 123;
$arreglo[] = true;

Otra forma de definición más formal

$arreglo = array("Hola Mundo",123);

ARRAY ASOCIATIVO

Se basan en una relación “key-value”, es decir podemos definir el


nombre de una clave y a su vez el valor, el nombre de esa clave
representa cada una de las posiciones del arreglo, pues digamos que
queremos almacenar en un array el nombre, apellido, edad de una
persona y así mismo mostrar su nombre.

<?php
$a=array("nombre"=>"Joel","apellido"=>"Rodríguez" , "edad"=>20);
echo $a["nombre"]; ?>

14
RECORRIDO DE TABLAS ASOCIATIVAS

Para cada arreglo existe un puntero interno, este siempre se


posiciona sobre el primer valor a menos que sea movido, puede existir
arreglos anidados es decir un arreglo dentro de otro como el ejemplo a
continuación

<?php
$arr =
array("primero"=>array("nombre"=>"joel","apellido"=>"ruiz","edad"=>20),
"segundo"=>array("nombre"=>"luis", "apellido"=>"perez" ,"edad"=>21),
"tercero"=>array("nombre"=>"vivi", "apellido"=>"Torres", "edad"=>19));
echo $arr["primero"]["nombre"];
echo $arr["segundo"]["nombre"];
?>

En este arreglo se define para la posición 0, un arreglo interno que

contiene la información para una persona, es decir en la posición 0, está

definido otro arreglo anidado

15
A continuación se muestra cuadro con las funciones y la descripción.

Función Descripción
current Devuelve el valor del elemento que indica el
puntero
pos Igual que current
reset Mueve el puntero al primer elemento de la tabla
end Mueve el puntero al último elemento de la tabla
next Mueve el puntero al elemento siguiente
prev Mueve el puntero al elemento anterior
count Retorna el número de elementos de una tabla

FUNCION EACH()

Devuelve el valor del elemento actual y su clave, después de que

each() haya sido ejecutado, el cursor del array será puesto en el siguiente

elemento del array, y cuando llega al final devuelve falso.

$visitas=array("lunes"=>200,"martes"=>186,"miércoles"=>190,
"jueves"=>175);
reset($visitas);
while ($var = each($visitas))
{
echo "el día {$var[0]} ha tenido {$var[1]} visitas<BR>";
}

16
FUNCIONES

FUNCIONES

Los procedimientos nos permiten relacionar un bloque de código o

instrucciones a un nombre determinado por el programador. Después este

nombre nos sirve para utilizar el bloque de código en algún punto del

algoritmo, pero sin tener la necesidad de repetir todas las instrucciones,

solo invocando al procedimiento por su nombre. Cuando se hace uso del

nombre de una acción o función en un algoritmo decimos que estamos

llamando o invocando a dicho procedimiento. Los procedimientos se

pueden dividir en funciones y acciones.

La principal diferencia entre estos es que las funciones retorna un

valor al algoritmo que las llama, mientras que las acciones no retornan

valor. Tanto las acciones como las funciones pueden tener una

herramienta llamada parámetros estos nos permiten utilizar la misma

secuencia de instrucciones con diferentes datos de entrada. El uso de

dichos parámetros es opcional. Los procedimientos facilitan el desarrollo

de la programación modular, es decir, la reutilización de código. Cuando

se finaliza la ejecución de dicho procedimiento bien sea una acción o

función se retorna el control al punto del algoritmo donde se hizo la

llamada para continuar con sus instrucciones.

17
Esta es una de las instrucciones más importante en cualquier

lenguaje de programación, PHP cuenta con una cantidad de funciones

predefinidas para usar.

Sintaxis:

function nombreFuncion(arg1, arg2,…, argN)


{
//bloque de código
}

Ejemplo 1

<?php
function suma($a,$b){
$r = $a+$b;
return $r;
}
$x= suma(5,6);
print "El resultado es: ".$x;
?>

La instrucción return de una función devuelve solo un valor, para

retornar varios valores se puede retornar un array o tabla.

18
Ejemplo 2

<?php
function mayor($x, $y)
{
if($x > $y)
return $x;
else
return $y;
}
print "El mayor es: ".mayor(3,5);
?>

PASE DE PARAMETRO POR VALOR

El parámetro que se pasa llamado actual no es modificado, y por

defecto todos los parámetros se pasan por valor, por ello, cuando se

regresa de la acción o función al algoritmo desde donde se hace la

llamada los parámetros actuales estos mantienen su valor original.

PASE DE PARAMETRO POR REFERENCIA

El parámetro actual se modificara. El parámetro no puede ser ni una

constante ni una expresión. Por esto, cuando se regresa de la

acción/función al algoritmo desde donde se hace la llamada los

parámetros actuales o que se enviaron a la función han cambiado. Para

que un parámetro de una función siempre se pase por referencia en PHP,

19
se antepone un ampersand (&) al nombre del parámetro en la definición

de la función function sumar(&$x,$y)

FUNCION FECHA DATE()

Carácter Descripción Ejemplo


de formato devueltos
d Día del mes, 2 dígitos con ceros iniciales 01 a 31
D Una representación textual de un día, tres Mon a Sun
letras
j Día del mes sin ceros iniciales 1 a 31
l Una representación textual completa del día Sunday a Saturday
de la semana
S Sufijo ordinal en inglés del dia del mes, 2 st, nd, rd o th.
caracteres Funciona bien con j
w Representación numérica del día de la 0 (para el
semana Domingo) a 6 (para
el Sábado)
z El día del año (comenzando en 0) 0 a 365
W Número de la semana del año ISO-8601, las Ejemplo: 42 (la
semanas comienzan en Lunes (agregado en 42va semana del
PHP 4.1.0) año)
F Una representación textual completa de un January a
mes, como January o March December
m Representación numérica de un mes, con 01 a 12
ceros iniciales
M Una representación textual corta de un mes, Jan a Dec
tres letras
n Representación numérica de un mes, sin 1 a 12
ceros iniciales

20
t Número de días en el mes dado 28 a 31
L Indica si es un año bisiesto 1 si es un año
bisiesto, 0 de lo
contrario.
Y Una representación numérica completa de un Ejemplos: 1999 o
año, 4 dígitos 2003
y Una representación de dos dígitos de un año Ejemplos: 99 o 03
a Ante meridiano y Post meridiano en am o pm
minúsculas
A Ante meridiano y Post meridiano en AM o PM
mayúsculas
B Hora Swatch Internet 000 a 999
g formato de 12-horas de una hora sin ceros 1 a 12
iniciales
G formato de 24-horas de una hora sin ceros 0 a 23
iniciales
h formato de 12-horas de una hora con ceros 01 a 12
iniciales
H formato de 24-horas de una hora con ceros 00 a 23
iniciales
i Minutos con ceros iniciales 00 a 59
s Segundos, con ceros iniciales 00 a 59
e Identificador de zona horaria (agregado en Ejemplos: UTC,
PHP 5.1.0) GMT,
Atlantic/Azores
I Indica si la fecha están en hora de ahorro de 1 si es Hora de
luz diurna Ahorro de Luz
Diurna, 0 de lo
contrario.
O Diferencia con la hora Greenwich (GMT) en Ejemplo: +0200
horas

21
T Configuración de zona horaria de esta Ejemplos: EST,
máquina MDT ...
Z Desplazamiento de la zona horaria en -43200 a 43200
segundos. El desplazamiento para zonas
horarias al oeste de UTC es siempre
negativo, y el de aquellas al este de UTC es
siempre positivo.
c Fecha ISO 8601 (agregada en PHP 5) 2004-02-
12T15:19:21+00:00
r Fecha en formato RFC 2822 Ejemplo: Thu, 21
Dec 2000 16:01:07
+0200
U Segundos desde el Epoch Unix (January 1 Vea también time()
1970 00:00:00 GMT)

Esta información se encuentra en: http://www.php.net/date.php

FUNCION DE CADENAS

 Función chr, string chr(int ascii); Devuelve el carácter ASCII

asociado al entero pasado por parámetro, chr(64); //retorna @

 Función ord, int ord(str cadena); Devuelve el valor ASCII del primer

carácter de la cadena, ord("hola como estas"); //retorna el numero

104

 Función strlen, int strlen(string cadena): Devuelve la cantidad de

caracteres que tiene la cadena, strlen("HoLa"); //retorna 4

22
 Función strstr, string strstr(string pajar, string aguja); Devuelve todo

el pajar desde la primera aparición de la aguja hasta el final. Si la

aguja no es hallada, retorna false, strstr("Hola como estas", "m" );

//retorna “mo estas”

 Función strcmp, int strcmp(string cadena1, string cadena2);

Devuelve un numero < 0 si cadena1 es menor que cadena2; >0 si

cadena1 es mayor que cadena2 y 0 si son iguales. Esta

comparación es binaria y es sensible a mayúsculas y minúsculas,

strcmp("hola", "Hola"); //retorna 1

 Función trim, string trim(string cadena); Elimina los espacios en

blanco del comienzo y del final de la cadena, trim(" hola como estas

"); //retorna “hola como estas”

 Función substr, string substr(string cadena, int ini [,int long]);

Devuelve la porción indicada por ini tantos caracteres indique long.

Si no se especifica long, devolverá hasta el final. Si ini es positivo se

contará de izquierda a derecha el número de caracteres, si es

negativo se comienza de derecha a izquierda, substr("Hola como

estas", -3, 2); //retorna “ta”

23
 Función nl2br, string nl2br(string cadena); Devuelve la cadena con

“<br>” insertados antes de cada nueva línea, nl2br("hola como\n

estas"); //retorna “hola como<br>\n estas”

 Función strpos, int strpos(string pajar, string aguja[, int

desplazamiento]); Indica la posición de la aguja en el pajar, si no es

hallada retorna false. Se puede buscar el la aguja sin tener en

cuenta los caracteres anteriores al desplazamiento, strpos("abcdef

abcdef" , "a"); //retorna 1 - strpos("abcdef abcdef" , "a", 1);

//retorna 7

 Función strrchr , string strrchr(string pajar, string aguja); Devuelve

la cadena desde la ultima aparición del string aguja en el pajar,

strrchr("/direccion/del/archivo/archivo.php", "/"); //retorna

"/archivo.php"

EJERCICIO PRACTICO CALCULADORA

Para este ejercicio pondremos en práctica el uso de las funciones,

las cuales nos permiten trabajar con la programación modular, para ello

tendremos

24
CALCULADORA.PHP

Básicamente es un archivo donde tendremos un formulario, con la

particularidad la información no será enviada a otro sino se procesara en

el mismo, se incluye el archivo funcion.php que realizara el proceso del

cálculo dependiendo de cuál sea la operación a realizar.

Debemos crear un formulario con 2 campos de texto (numero1 y

numero2) y 4 del tipo radio de opción que será el tipo de operación (tipo

operación), y estos valores se enviaran como parámetros a la función

definida en funcion.php

25
<?php include "funcion.php";?>
<form method="POST" action="">
<table border="0" cellspacing="1">
<tr>
<td align="center"> <h3> Calculadora</h3> </td>
</tr>
<tr>
<td width="292" align="center" height="23">
<input type="text" name="num1" size="10"><br>
<input type="text" name="num2" size="10"></td>
</tr>
<tr>
<td width="292" align="center" height="24">
<input type="submit" value="+" name="operacion">
<input type="submit" value="-" name="operacion">
<input type="submit" value="*" name="operacion">
<input type="submit" value="/" name="operacion"><br>
<input type="submit" value="^2" name="operacion">
<input type="submit" value="^3" name="operacion">
<input type="submit" value="Raiz" name="operacion">
</td>
</tr>
<tr> <td width="292" align="center" height="19"><br><b>Resultado: <?php
echo calculo(@$_POST['num1'],@$_POST['num2'],@$_POST['operacion'])
?></b></td>
</tr>
</table>
</form>

26
FUNCION.PHP

Se define una función que recibe 3 parámetros, correspondiente a

los dos números a procesar y por último la operación a realizar, esta

función retorna el resultado de la operación realizada, cuyo valor es

impreso en el archivo anteriormente definido

<?php
function calculo($num1,$num2,$operacion){
switch($operacion) {
case "+": $resultado = $num1 + $num2;
break;
case "*": $resultado = $num1 * $num2;
break;
case "/": $resultado = $num1 / $num2;
break;
case "-":$resultado = $num1 - $num2;
break;
case "Raiz": $resultado = sqrt($num1);
break;
case "^2": $resultado = $num1*$num1;
break;
case "^3": $resultado = $num1*$num1*$num1;
break;
default: $resultado= 0;
} return $resultado;
} ?>

27
ARCHIVOS

Existirán muchas ocasiones en las que nos interese acceder a

ficheros o archivos, bien sea para recuperar sus datos, o para modificar o

escribir en ellos. Piensa por ejemplo en contadores de hits, libros de

visitas, logs, o simplemente web fetching (recuperar datos de otra web

para incluirlos en la tuya). En esta sección veremos las funciones

necesarias y más comunes para estos fines

ABRIR 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 formas o modos de escritura/lectura.

Los modos en los que se puede abrir un archivo son:

 r Sólo lectura. El puntero al comienzo del archivo

28
 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

(sobrescribe el contenido)

 w+ Lectura y escritura, si existe lo trunca a tamaño cero, y se

sitúa 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 fichero (listo para escribir a continuación

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 contraposición a archivo

de texto) como una imagen o un sonido. En algunos sistemas operativos

como linux no existe esta diferencia así 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. Con

fopen podemos abrir ficheros locales o remotos. Si nombre_de_archivo

comienza con "http://" (o HTTP://), php abre una conexión HTTP hacia el

servidor especificado y se devuelve un apuntador de fichero al comienzo

29
del texto de respuesta. Así puedes acceder (en modo lectura solamente) a

ficheros de otros servidores. La dirección en estos casos debe ser

completa.

Si nombre_de_archivo comienza con "ftp://" (o FTP://), se abre una

conexión ftp hacia el servidor indicado.

Si nombre_de_archivo empieza de cualquier otra forma, php

considera que se trata de una ruta a un fichero local y intenta recuperarlo.

Si la operación falla (no existe el fichero en esa ruta, o no se puede abrir)

la función devuelve FALSE.

Advierte que en todos los casos nos referimos no solo a la apertura

de un fichero, sino a la obtención de un puntero o apuntador a su

contenido. fopen solo debe usarse para abrir un archivo cuyo contenido

vamos a manipular. Si únicamente queremos recuperar su contenido (y

por ejemplo mostrarlo en pantalla), hay otras funciones que se ajustan

mejor.

CERRAR UN ARCHIVO

La función que se utiliza para cerrar un archivo es fclose , se cierra el

apuntador adquirido sobre un fichero previamente abierto con la funcion

fopen.

30
Su sintaxis es fclose (file_handler), Es muy importante cerrar el

fichero al terminar de operar con el, para evitar deterioro de los datos.

Ejemplo 2

<?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
// apunta al comienzo ... Aqui incluiriamos código para recuperar datos
fclose($file); // hemos terminado, cerramos el apuntador
}
// Abrimos el archivo de nuevo, ahora en modo escritura.
if ($file = fopen( "/otros/contador.txt", "w")) {
// tenemos nuevo apuntador. Aqui iria el código que sobreescribiria
// el archivo con los nuevos datos.
fclose($file); //hemos terminado, cerramos el archivo.
}
?>

Como habrás observado, $file no es el nombre del archivo, es nuestro

apuntador (file handler) al contenido del mismo. Y en otra sección

abordaremos como leer y escribir el fichero. Como recordatorio final, si

tienes que indicar la ruta a un fichero en un entorno windows, recuerda

31
que si usas barras invertidas \ tienes que incluir la barra adicional de

escape \\.

FUNCIONES PARA LECTURA DE ARCHIVOS

Función Descripción Sintaxis


Fopen Abre un archivo y le asigna un $id = Fopen($archivo,
identificador id. $modo)
Fgets Lee una línea de un archivo hasta fgets($id,$max)
un numero máximo de caracteres
Fwrite Escribe una cadena dentro del fwrite($id, $cadena)
archivo
Fseek Avanza o retrocede el puntero del fseek($id,$posiciones)
archivo un cierto numero de
posiciones
Feof Comprueba si el puntero que lee feof($id)
el archivo ha llegado al final
fpassthru lee completamente el archivo y lo fpassthru($id)
muestra
Fclose Cierra el archivo abierto fclose($id)
previamente

32
FUNCION PARA GESTIONAR ARCHIVOS

Función Descripción Sintaxis


Copy Copia un archivo copy($origen,$destino)
Rename Cambia el nombre del archivo de rename($antes,$despues)
$antes a $despues
Unlink Borra el archivo unlink($archivo)

EJERCICIO PRACTICO ENCUESTA

Para este ejercicio, vamos a hacer uso de las funciones para abrir y

cerrar archivos, se basa en una encuesta y al momento de realizar la

votación los resultados se guardan en un archivo txt

33
ENCUESTA.PHP

<!DOCTYPE html>
<head>
</head>
<body>
<form method="post" action="resultados.php">
<table width="200" align = "center">
<th colspan ="2" align ="center">
Postre Favorito</th>
<tr>
<td>
<select name="voto">
<option value="v1">Torta de chocolate</option>
<option value="v2">Torta tres leches</option>
<option value="v3">Quesillo</option>
<option value="v4">Torta Selva Negra</option>
<option value="v5">Pie de Limon</option>
</select>
</td>
</tr>
<tr>
<td colspan ="2" align ="center">
<input type="submit" value="Votar"></td>
</tr>
</table>
</form>
</body>
</html>

34
En este archivo simplemente lo que tenemos es un formulario con

una select que contenga las opciones que el usuario puede seleccionar, al

enviarlo, el archivo guardarEncuesta.php será el encargado de copiar los

votos en el documento con extensión .txt para luego ir haciendo el conteo

GUARDARENCUESTA.PHP

<!DOCTYPE html>
<head>
</head>
<body>
<p>
<?php
$op1=0;$op2=0;$op3=0;$op4=0;$op5=0;
//variable del archivo para sus próximo uso
$archivo="resultados.txt";
//abrimos el archivo como escritura
$fp=fopen("$archivo","a+");
//grabamos el contenido con el // para poder separarlos
$w=fputs($fp,"$_POST[voto]//");
//volvemos a abrir el archivo
$fp=fopen("$archivo","r");
//leemos el contenido del archivo
$resultado=fread($fp, filesize($archivo));
//separamos el contenido por el simbolo //
$div=explode("//",$resultado);
//contamos el total de votos
$total=count($div)-1;

35
//for, para sumar ++voto
for($i=0; $i<$total; $i++)
{
if($div[$i]=="v1"){
$op1++;
}
if($div[$i]=="v2"){
$op2++;
}
if($div[$i]=="v3"){
$op3++;
}
if($div[$i]=="v4"){
$op4++;
}
if($div[$i]=="v5"){
$op5++;
}
}
$p1=$op1*100/$total;
$p2=$op2*100/$total;
$p3=$op3*100/$total;
$p4=$op4*100/$total;
$p5=$op5*100/$total;
?></p>

Esta primera parte del archivo procesa la información del formulario,


la guara en el archivo .txt y realiza los cálculos de los porcentajes por cada

36
opción, la siguiente parte del mismo archivo contiene la impresión en
tablas de los resultados anteriormente calculados.

<p>Paticipacion <?php print $total;?> </p>


<table width="600" border="1">
<tr>
<td>Torta de Chocolate:</td>
<td><?php print $op1." ".round($p1,2)?> %</td>
<td><img src="1.jpg" width="<?php print $p1*7;?>" height="50"/></td></tr>
<tr>
<td>Torta tres Leches:</td>
<td><?php print $op2." ".round($p2,2); ?>%</td>
<td><img src="2.jpg" width="<?php print $p2*7;?>" height="50"/></td></tr>
<tr>
<td>Quesillo:</td>
<td><?php print $op3." ".round($p3,2); ?>%</td>
<td><img src="3.jpg" width="<?php print $p3*7;?>" height="50"/></td></tr>
<tr>
<td>Torta Selva Negra:</td>
<td><?php print $op4." ".round($p4,2); ?>%</td>
<td><img src="4.jpg" width="<?php print $p4*7;?>" height="50"/></td></tr>
<tr>
<td>Pie de Limon:</td>
<td><?php print $op5." ".round($p5,2); ?>%</td>
<td><img src="5.jpg" width="<?php print $p5*7;?>" height="50"/></td></tr>
</table>
</body>
</html>

37
COOKIES

Una cookie es información que un navegador web almacena en el

disco duro del visitante a una página web. La información se almacena a

petición del servidor web, ya sea directamente desde la propia página web

con JavaScript o desde el servidor web mediante las cabeceras HTTP,

que pueden ser generadas desde un lenguaje de web scripting como

PHP. La información almacenada en una cookie puede ser recuperada por

el servidor web en posteriores visitas a la misma página web.

Las cookies resuelven un grave problema del protocolo HTTP: al ser

un protocolo de comunicación "sin estado" (stateless), no es capaz de

mantener información persistente entre diferentes peticiones. Gracias a

las cookies se puede compartir información entre distintas páginas de un

sitio web o incluso en la misma página web pero en diferentes instantes de

tiempo

Las cookies a menudo se utilizan para identificar un usuario. Con

PHP, puede crear y recuperar valores de cookie, así como también

eliminar las mismas. La instrucción para el envío de cookies debe

insertarse al principio de la página y antes de cualquier etiqueta HTML o

línea en blanco. Esto es muy importante, no lo olvides.

38
La sintaxis es la siguiente:

setcookie(nombre, valor, expira)

Donde nombre es una cadena que contiene el nombre de la variable

que recoge el valor de la cookie, valor se refiere, al valor numérico o

cadena, que se asignará a la variable anterior y expira indica la fecha de

caducidad de la cookie que suele expresarse usando el valor devuelto por

la función time() (hora actual) más un número que representa los

segundos que han de transcurrir desde «ahora» hasta que la cookie

expire.

Los valores contenidos en las cookies pueden ser leídos por el

servidor a partir de variables predefinidas $_COOKIE que, como todas las

de este tipo, es un array asociativo. El índice de este array será el nombre

asignado a la cookie. Veamos este ejemplo:

Ejemplo

<?php
/* setcookie escribe el contenido de la cookie en el computador del cliente
*/
setcookie("cookie1","Soy la cookie1",time()+3600);
# escribe el valor leído en la cookie
@print "Esta es la <i>variable cookie </i>: ".$_COOKIE['cookie1'];
?>

39
Ejemplo 2
<?php
@$numero=$_COOKIE['visitante'];
$numero+=1;
setcookie("visitante",$numero,time()+86400);

if($numero==1){print "Es la $numero ª vez que visitas esta página";}


if($numero>1){print "Es la $numero ª vez que visitas esta página";}
?>

ELIMINAR COOKIES

Para eliminar una cookie debe llamar a setcookie () con el

argumento name solamente, pero esto no siempre funciona bien. Es

más seguro establecer la cookie con una fecha de caducidad en el

pasado de esta forma se eliminan por completo

<?php
setcookie("user", "", time() - 3600);
?>
<html>
<body>
<?php
echo "Cookie 'user' ha sido borrada.";
?>

40
SESSIONES

Una sesión es una forma de almacenar y conservar información (en

variables) para ser utilizada en varias páginas. A diferencia de una cookie,

los datos asociados a una sesión se almacenan en el servidor y nunca en

el cliente. Cuando abres una aplicación, trabajas en ella realiza algunos

cambios y la cierra. Esto es como una Sesión. La computadora sabe quién

es usted. Sabe cuándo inicia la aplicación y cuando termina. Pero en

Internet hay un problema: el servidor web no sabe quién es usted ni qué

hace, porque la dirección HTTP no mantiene el estado.

Las variables de sesión solucionan este problema almacenando

información de usuario para ser utilizada en varias páginas (por ejemplo,

usuario, nombre, apellido, etc.). De forma predeterminada, las variables de

sesión duran hasta que el usuario cierra el explorador.

Así que; Las variables de sesión contienen información sobre un

único usuario y están disponibles para todas las páginas en una

aplicación. Las sesiones siguen un flujo de trabajo sencillo. Cuando una

sesión se inicia, PHP recuperará una sesión existente usando el ID

pasado (normalmente desde una cookie de sesión) o, si no se pasa una

41
sesión, se creará una sesión nueva. PHP rellenará la variable superglobal

$_SESSION con cualesquiera datos de la sesión iniciada. Cuando PHP se

cierra, automáticamente toma el contenido de la variable superglobal

$_SESSION, la serializa, y la envía para almacenarla usando el gestor de

almacenamiento de sesiones.

 Se inicia una variable de sesión con la función session_start ().

 Las variables de sesión se establecen con la variable global PHP:

$ _SESSION.

Las variables de sesión tienen un tiempo limitado de existencia.

Para identificar al usuario que generó las variables de sesión, el servidor

genera una clave única que es enviada al navegador y almacenada en

una cookie. Luego, cada vez que el navegador solicita otra página al

mismo sitio, envía esta cookie (clave única) con la cual el servidor

identifica de qué navegador proviene la petición y puede rescatar de un

archivo de texto las variables de sesión que se han creado. Cuando han

pasado 20 minutos sin peticiones por parte de un cliente (navegador) las

variables de sesión son eliminadas automáticamente (se puede configurar

el entorno de PHP para variar este tiempo)

42
Una variable de sesión es más segura que una cookie ya que se

almacena en el servidor. Otra ventaja es que no tiene que estar

enviándose continuamente como sucede con las cookies. Otra ventaja de

emplear una variable de sesión en lugar de una cookie es que cuando el

navegador del cliente está configurado para desactivar las cookies las

variables de sesión, tienen forma de funcionar (enviando la clave como

parámetro en cada hipervínculo). Como desventaja podemos decir que

ocupa espacio en el servidor.

Ejemplo

<?php session_start(); //inicia sesion


// asigno valores a variable de session
$_SESSION["color"] = "verde";
$_SESSION["animal"] = "perro";
echo "Session variables are set.";
?>

Para cerrar una sesión debes primero aplicar el session_start() para

saber cuál es la sesión a destruir y luego la cierras

<?php
session_start();
session_destroy();?>

43

También podría gustarte