You are on page 1of 64

El Lenguaje PHP

PHP es un lenguaje interpretado(el compildor ejecuta linea por linea) del lado del servidor que se
caracteriza por su potencia, versatilidad, robustez y modularidad. Los programas escritos en PHP son
embebidos directamente en el código HTML y ejecutados por el servidor web a través de un intérprete
antes de transferir al cliente que lo ha solicitado un resultado en forma de código HTML puro. Al ser un
lenguaje que sigue la corriente open source, tanto el intérprete como su código fuente son totalmente
accesibles de forma gratuita en la red. En concreto, la dirección oficial en la que puede descargarse es:
http://www.php.net/

Por su flexibilidad, PHP resulta un lenguaje muy sencillo de aprender; especialmente para programadores
familiarizados con lenguajes como C, Perl o Java, debido a la similitud de sintaxis entre ellos.

Por supuesto es un lenguaje multiplataforma; los programas funcionan igual sobre diferentes plataformas,
trabajando sobre la mayoría de servidores web y estando preparado para interactuar con más de 20 tipos
de bases de datos. No obstante, al ser un lenguaje inicialmente concebido para entornos UNIX, es sobre
este sistema operativo sobre el que se pueden aprovechar mayor sus prestaciones.

Primer Ejemplo de PHP ---- ajajex

En un nuevo documento escriba el siguiente código y grabarlo con el nombre primer.php

<HTML>
<HEAD>
<TITLE>Primer Ejemplo de PHP</TITLE>
</HEAD>
<BODY>
<U>
<?PHP
echo(o print:) "Este es mi primer programa en PHP";
?>
</U>
</BODY>
</HTML>
FORMAS DE INCRUSTAR EL CODIGO PHP EN LOS DOCUMENTOS HTML

Existen 4 formas de incrustar código PHP, dos de ellas están siempre disponible y las dos restantes
dependen da la configuración particular del servidor.

Las dos formas siempre disponibles de delimitar código PHP son:

<?PHP

Instrucciones PHP

?>

<SCRIPT LANGUAGE=”php”>

Instrucciones PHP

</SCRIPT >

De estas dos formas, la primera es la sintaxis especifica del lenguaje PHP, mientras que la segunda es la
sintaxis general que se utiliza para insertar scripts programados en diferentes lenguajes

Las otras dos formas de incrustar el código PHP son:

<?

Instrucciones PHP

?>

<%

Instrucciones PHP

%>

La primera de estas sintaxis es la que se denomina de “etiquetas de formato corto” y requiere que el
servidor tenga configurado su fichero php.ini para aceptarlas.
Finalmente la ultima sintaxis es la que resulta compatible con ASP, pero tampoco es aceptada por todos
los servidores.
De las 4 formas de incrustar el código PHP, la más recomendable es la primera (<?php ….. ¿>), por varias
razones: por ser la especifica de PHP, por estar disponible en cualquier servidor, y por ser además la
única que permite incrustar código PHP también en XML y en XHTML.
ASPECTOS SOBRE LA SINTAXIS DEL LENGUAJE

La sintaxis del Lenguaje PHP es muy similar a la de otros lenguajes conocidos como C o Perl, algunos
aspectos iniciales sobre la sintaxis que deben ser considerados a la hora de ahondar la escritura del
código fuente de los programas son:

- El uso de las mayúsculas y minúsculas es indiferente(solo instrucciones). A diferencia de otros


lenguajes similares, PHP permite que las diferentes sentencias estén escritas con cualquier
combinación de letras mayúsculas o minúsculas. Por ejemplo con las estructuras condicionales
sería totalmente equivalente utilizar la palabra if o IF. Una excepción importante a esta regla se
produce en los nombres de las variables, no es lo mismo nombrar una variable con letras
mayúsculas que hacerlo con minúsculas.
- Se pueden colocar todos los espacios en blanco y cambios de línea que se deseen con objeto de
hacer mas legible el código fuente. Estos espacios adicionales no tienen efecto alguno en la
ejecución del programa, el interprete de PHP los ignora.
- Las diferentes instrucciones deben terminar con “;”. Sin embargo PHP admite cierta flexibilidad
a este respecto, ya que el terminador punto y coma no sería necesario en la última sentencia del
script antes del terminador ?>, ni en los casos en los que al final de la instrucción se cierre un
bloque de código con una llave, por ejemplo en las estructuras condicionales o bucles
- Las instrucciones se pueden partir en tantas líneas como se desee a efectos, de nuevo, de
mejorar la legilibilidad. Esta división de las instrucciones no afecta a la ejecución.
- En una misma línea se pueden colocar, si así se desea, varias instrucciones diferentes separadas
por “;”. Esto puede ser útil en el caso, por ejemplo, de tener que hacer varias sentencias de
asignación diferentes

INSERCION DE COMENTARIOS EN EL CODIGO

- Comentarios de una línea :

//

- Comentarios de varias líneas


/*

*/

ELEMENTOS BASICOS DEL LENGUAJE

TIPOS DE DATOS

Como todo lenguaje de programación, PHP puede trabajar con una serie de tipos de datos básicos. En
concreto los tipos de datos admitidos son:

- Números enteros: los enteros pueden ser dados tanto en base decimal como en base octal o
hexadecimal ( un 0 inicial indica que el valor esta representado en octal, un 0x indica que es
hexadecimal.
- Ejemplos de números en base 10 : 45 -142 783
- Ejemplos de numero en octal: 0123 (equivale a 83)
- Ejemplos de números en hexadecimal: 0x12 (equivale a 18)
- Números reales: Los números reales se pueden dar en dos formatos; como parte entera y parte
decimal, usando el punto como separador, o en notación científica.
Ejemplos: 14.67 -76.0023 1.4e3 -78.5e-4
- Cadenas de Caracteres: Las cadenas de caracteres pueden ser dadas en dos formatos usando
comillas dobles o usando comillas simples. El uso de una u otra forma de delimitación afecta a la
forma en la que se tratan las posibles variables que puedan haber dentro de la propia cadena.
Ejemplo: “Casablanca”, ‘cantando bajo la lluvia’
- Arrays o Matrices: Constituyen colecciones de datos que se referencian bajo un mismo nombre
común. Como se verá al capítulo dedicado a estas estructuras de datos, PHP admite la posibilidad
de construir dos tipos de arrays: arrays asociativos e indexados.
- Objetos: finalmente PHP admite también la posibilidad de crear objetos y realizar acción con
ellos. Mediante el uso de objetos se puede entender como una misma entidad los datos y las
acciones que se realizan con ellos. Esta es la base de la programación orientada a objetos.

VARIABLES
Algunas de las peculiaridades de las variables en PHP son:
- No es necesario declarar explícitamente, sino que basta con utilizarlas cuando se necesite.
- En principio las variables no tienen un tipo predefinido, puede asignarse cualquier tipo de valor.
- La asignación de valores a las variables se hace con el singo “=”.
- Los nombres de las variables en PHP siempre comienzan con el signo “$”.
- Se pueden usar nombres de variables de cualquier longitud, formados por letras, digitos y
carácter de subrayado, pero nunca comenzando por un digito. Entre las letras que pueden
utilizarse se encuentran los caracteres cuyo código ASCII se encuentran entre 127 y 255 por lo
que se pueden utilizar letras acentuadas o ñ en los nombres de variables.
- En los nombres de variables si se distingue el uso de mayúsculas y minusculas, de manera que
$area y $AREA serian variables diferentes.
- Una variable se puede utilizar asignándole a la lo largo del tiempo datos incluso de distinto tipo.
Ejemplo de nombres de variables validas
$titulo $fecha_nacimiento $año $precio
En cambio no serian validos los siguientes:
$dir-pelicula $4fila genero $dto%

Ejemplo:
<html>
<head>
<title>Variables en PHP </title>
</head>
<body>
<?php
$titulo="Buscando a Nemo";
$sala=2;
echo "En la sala $sala se proyectará la pelicula $titulo";
?>
</body>
</html>
En este caso, a la primera variable se le asigna una cadena de caracteres y a la segunda un número entero.
Las dos variables se utilizan dentro de la cadena a imprimir, cuando dicha cadena está delimitada por
comillas dobles como en este caso, la variables que se encuentran en su interior serán sustituidas por sus
valores.

Ejemplo:

<html>
<head>
<title>Variables en PHP</title>
</head>
<body>
<?php
$x="Importe: ";
echo $x;
$x=5;
echo $x . " (precio normal) "; (el . sirve para concatenar cadenas)
//también echo “$x (precio normal) ";
$x = $x * 0.85;
echo $x . " (precio reducido) ";
?>
</body>
</html>
Como puede observarse, en este programa se ha utilizado una única variable $x a la que inicialmente se le
asigno una cadena de caracteres, después se le asigno un numero entero y finalmente, el resultado de una
expresión que devuelve un numero real.

En este caso se ha utilizado el operador punto para realizar concatenaciones entre cadenas de caracteres
y variables. Esto es una alternativa a la inclusión de las variables directamente dentro de las cadenas.

Ejemplo:

<html>
<head>
<title>Variables en PHP</title>
</head>
<body>
<?php
$a="10 euros";
$b= 2.25;
$c= $a - $b;
echo "Valor de c = $c<br>";
$d = (integer)$c;
echo "Valor de d = $d<br>";
$e = $d/2;
echo "Valor de e = $e<br>";
?>
</body>
</html>

La conversión de tipo explicita se puede realizar mediante el operador cast:


(tipo) expresión;
O mediante la función settype();
$telef= (string) 949567894;
$x= (integer) 5.97;
$y=12.5;
settype($y,”integer”);
settype($y,”float”);
AMBITO DE LAS VARIABLES
El ámbito de las variables determina desde que lugares la variable es visible y, por tanto, puede ser
utilizada.
Las variables por defecto tienen un ámbito global que abarcaría el documento completo en el que son
definidas, a no ser que sean definidas dentro de una función, en cuyo caso solo pueden ser utilizadas
dentro de la propia función (ámbito local)
Esto significa que una variable definida en un script del documento fuera de cualquier función, puede ser
utilizada en cualquier otro lugar de ese script o incluso en otros posibles scripts que se encuentren en el
mismo documento.

<html>
<head>
<title>Ambito de las Variables en PHP</title>
</head>
<body>
<h1>Ambito de las variables </h1>
<hr>
<?php
$fila=12;
$num=6;
?>
luego de haber declarado en un script<br>
las variables pueden ser usadas en otro script<br>
<?php
echo "fila = $fila<br>";
echo "numero = $num<br>";
?>
</body>
</html>
Una variable global puede ser utilizada dentro de cualquier función, pero para hacer referencia a ella
debe declararse dentro de la función con la palabra global delante de su nombre.

Ejemplo:

$precio = 4.5;

function calcular_importe($num_entradas){
global $precio;
$i = $precio * $num_entradas;
return $i;
}
En este caso la variable $precio está definida fuera de la función y es utilizada dentro de la función
calcular_importe(). Por otro lado, la variable $i está definida dentro de la función y no puede ser
utilizada fuera de ella.

Funciones usadas con variables

isset() : Permite averiguar si una variable ha sido definida. Esta función es especialmente útil cuando se
quiere comprobar si se han recibido los valores correspondientes a todos los campos de un formulario.

unset(): Permite eliminar una variable, no solo borra el contenido de la variable sino que también libera el
espacio de memoria reservado para ella. Cualquier intento posterior de acceso a esa variable generaría un
error.

gettype(): Devuelve el tipo de variable.

is_array(): determina si la variable contiene un array.

is_float(): Determina si la variable contiene un numero de coma flotante.

is_int(): Determina si la variable contiene un numero entero.

is_object(): Determina si la variable hace referencia a un objeto.

is_string(): Determina si la variable contiene una cadena de caracteres.

CONSTANTES

Una constante es un valor que permanece inalterable a lo largo de la ejecución del script y a la que se le
asigna un identificador. Solo puede definirse constantes con valores escalares (números o cadenas de
caracteres). Por ejemplo no podría definirse una constante cuya valor fuese un array.

La definición de constantes de realiza con la función define(), y una vez definidas su valor no puede
cambiarse. En cuanto a los identificadores de las constantes, estos siguen las mismas reglas que los
identificadores de las variables salvo que no comienzan con el símbolo $. Aunque no es una regla
obligatoria por convenio se suele utilizar identificadores con letras mayúsculas para las constantes.
Otra diferencia con las variables está en la ausencia de cualquier restricción de ámbito en las constantes.
Una constante definida en un documento será accesible desde cualquier punto de cualquier script que
esté en el mismo documento.

Ejemplo:

<html>
<head>
<title>Constantes en PHP</title>
</head>
<body>
<h1>Constantes en php</h1>
<hr>
<?php
define("NOMBRE","Juan");
define("EDAD",19);
define("PESO",72.85);

echo "constantes definidas <br>";


echo "nombre : ". NOMBRE . "<BR>";
echo "edad : ". EDAD . "<BR>";
echo "peso : ". PESO . "<BR>";

?>
</body>
</html>

El uso de constantes puede resultar especialmente adecuado para definir determinados parámetros del
programa que no se espera que cambien.
CADENAS DE CARACTERES Y VARIABLES
Las cadenas de caracteres constituyen uno de los tipos de datos básicos del lenguaje PHP. En su
definición se pueden utilizar como delimitadores tanto las comillas simples como las dobles, lo que no es
posible combinar ambos tipos de delimitadores, por ejemplo abriendo la cadena con comillas dobles y
cerrándola con comillas simples.
La inclusión de determinados caracteres en las cadenas exige la utilización de las denominadas secuencias
de escape. Entre estos caracteres especiales están las comillas, el signo dólar, la barra invertida y los
caracteres de tabulación y retorno de carro. En la siguiente tabla se muestran algunas de estas
secuencias de escape.
Secuencia de Escape Significado
\n Nueva línea
\r Retorno de Carro
\t Tabulador
\\ Barra invertida
\’ Comillas simples
\” Comillas dobles
\xNum Carácter cuyo código ASCII en hexadecimal es
Num
\Num Carácter cuyo código ASCII en octal es Num
Ejemplo:
<html>
<head>
<title>Cadenas de caracters en PHP</title>
</head>
<body>
<h1>Cadenas de caracteres en php</h1>
<hr>
<?php
echo "Pagina creada por :\n \"cinemas\" \t \xA9 2004";

?>
</body>
</html>
En la cadena anterior se utilizan dos secuencias de escape que no tienen reflejo en la pagina que sería
visualizada por el navegador del cliente, pero si en el código fuente HTML: el carácter de nueva línea y el
tabulador se incluirían en el código fuente HTML, pero, como todos los espacios extra, serian ignorados
por el navegador.
Las otras secuencias de escape que han sido utilizadas en el ejemplo son las que permiten incluir comillas
en la propia cadena y que generan el signo copyright (correspondiente al carácter de código ASCII 169 o
A9 en hexadecimal).
La diferencia entre el uso de comillas dobles o simples como delimitadores de las cadenas de caracteres
está en la forma en la que se tratan los posibles identificadores de variables que aparezcan dentro de la
cadena:
- Con las comillas dobles, las variables dentro de la cadena se expanden, es decir, se sustituyen
por su valor.
- Con las comillas simples las variables no se expanden y por tanto en la propia cadena aparecerán
sus identificadores como cualquier otro carácter de la misma. Además de eso, en este caso las
únicas secuencias de escape reconocidas son \\ y \’.
Ejemplo:
<html>
<head>
<title>Cadenas de caracters en PHP</title>
</head>
<body>
<h1>Comillas dobles en php</h1>
<hr>
<?php
$titulo="Todo sobre mi madre";
$director="Pedro Almodovar";
$año=1999;
print "Sesion Especial : \"$titulo\" de $director ($año)";

?>
</body>
</html>
Observar como al utilizar las comillas dobles, los nombres de variables que aparecen dentro de la cadena
son sustituidos por sus valores. Esta característica de PHP es especialmente útil y evita tener que
recurrir a engorrosas operaciones de concatenación de cadenas con variables.

En cambio la sentencia

print ‘Sesion Especial : \"$titulo\" de $director ($año)’;

Escribiría el siguiente mensaje

Sesion Especial: \”$titulo\”de $director ($año)

En este caso se observa como las secuencias de escape no son reconocidas y se escriben los nombres de
las variables dentro de la cadena y no sus valores.

Operador de Asignación

En diversos ejemplos previos ya se ha utilizado el operador de asignación para dar valores a las variables,
este operador se representa mediante el signo “=”. Su sentido es el evidente; la variable de la izquierda
del operador tomará el valor resultado de la expresión que se encuentra a la derecha.

$variable = valor o expresión;

También se puede asignar varias asignaciones en una sola sentencia.

$a = $b = $c =1;

Operadores Aritméticos

Los operadores aritméticos básicos son los habituales de cualquier lenguaje de programación

+ Suma
- Resta
* Multiplicación
/ División
% Modulo: Residuo de la división de dos números enteros.

Además de los operadores anteriores se dispone de los operadores de incremento y decremento que
existen también en lenguajes C o C++

++$x Incrementa una unidad el valor de $x


$x++ Incrementa una unidad el valor de $x, pero después de evaluar el resto de la expresión.
--$x Disminuye una unidad el valor de $x
$x-- Disminuye una unidad el valor de $x, pero después de evaluar el resto de la expresión
PHP Y LOS FORMULARIOS HTML

formulario01.html

<html>
<head>
<title>Rectangulo</title>
</head>
<body>
<h1>Rectangulo</h1>
<hr>
<form action="calculo01.php" method="POST">
<table>
<tr>
<td>BASE : </td>
<td><INPUT TYPE="TEXT" NAME="BASE"></td>
</tr>
<tr>
<td>ALTURA : </td>
<td><INPUT TYPE="TEXT" NAME="ALTURA"></td>
</tr>
<tr>
<td><INPUT TYPE="SUBMIT" VALUE="CALCULAR"> </td>
<td><INPUT TYPE="RESET" VALUE="BORRAR"></td>
</tr>
</table>

</form>
</body>
</html>
calculo01.php

<html>
<head>
<title>Rectangulo</title>
</head>
<body>
<h1>Rectangulo</h1>
<hr>
<?php
$base=$_POST["BASE"];
$altura=$_POST["ALTURA"];
$area= $base*$altura;
$perimetro = 2*($base + $altura);
$diagonal = sqrt(pow($base,2) + pow($altura,2));
print "base : $base <br>";
print "altura : $altura <br>";
print "area : $area <br>";
print "perimetro : $perimetro <br>";
print "diagonal : $diagonal <br>";
?>
<a href="formulario01.html">regresar al formulario </a>
</body>
</html>
Variables de Formularios
Para acceder a las variables de formulario se puede hacer de dos maneras usando las variables
predefinidas $_ REQUEST[] que es un arreglo asociativo donde se guardan los valores de las variables o
con las variables $_POST[] Y $_GET[] dependiendo del método utilizado para el envío de datos del
formulario.

Variables de petición: $_REQUEST

Una matriz asociativa que consiste en los contenidos de $_GET, $_POST, y $_COOKIE.
Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible
en todos los contextos a lo largo de un script. No necesita hacer global $_REQUEST; para acceder a ella
dentro de funciones o métodos.

Variables HTTP GET: $_GET


Una matriz asociativa de variables pasadas al script actual a través del método HTTP GET. Global
automáticamente en cualquier contexto.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible
en todos los contextos a lo largo de un script. No necesita hacer global $_GET; para acceder a ella
dentro de funciones o métodos, como lo hace con $HTTP_GET_VARS.

$HTTP_GET_VARS contiene la misma información inicial, pero no es autoglobal. (Note que


HTTP_GET_VARS y $_GET son variables diferentes y que PHP las trata como tal)

Variables HTTP POST: $_POST

una matriz asociativa de variables pasadas al script actual a través del método HTTP POST. Global
automáticamente en cualquier contexto.

Esta es una variable 'superglobal', o global automática. Esto simplemente quiere decir que está disponible
en todos los contextos a lo largo de un script. No necesita hacer global $_POST; para acceder a ella
dentro de funciones o métodos, como lo hace con $HTTP_POST_VARS.

$HTTP_POST_VARS contiene la misma información inicial, pero no es autoglobal. (Note que


HTTP_POST_VARS y $_POST son variables diferentes y que PHP las trata como tal)

Métodos de transferencia de datos en Formularios


Los datos que el usuario introduzca en un formulario de una página web pueden ser transferidos al
servidor para su procesamiento con dos métodos diferentes.
- Método GET: los datos son enviados dentro del URL de localización del destino
- Método POST: los datos son enviados de manera invisible para el usuario haciendo uso del
protocolo http y en un encabezado independiente.
El método de transferencia se especifica en la definición del formulario mediante el parámetro
METHOD, asignándole el valor “Get” o “Post” en función del método elegido. En caso de ausencia de ese
parámetro, se considera como método por defecto el método GET.
En el caso de que los datos deban ser transferidos por correo electrónico, es obligatorio el uso del
método POST.
OPERADORES DE COMPARACION
Sirven para comparar 2 valores devolviendo un valor verdadero si la comparación es positiva o falsa en
otro caso:

$x == $y Compara si $x e $y tienen el mismo valor (operador de igualdad)


$x === $y Compara si $x e $y son iguales además si son del mismo tipo (operador de
identidad)
$x != $y Comprueba si $x e $y tienen distinto valor (negación de igualdad)
$x !== $y Comprueba si $x e $y tienen distinto valor y/o tipo (negación de identidad)
$x < $y Comprueba si el valor de $x es menor que el valor de $y
$x > $y Comprueba si el valor de $x es mayor que el valor de $y
$x <= $y Comprueba si el valor de $x es menor o igual que el valor de $y
$x >= $y Comprueba si el valor de $x es mayor o igual que el valor de $y

OPERADORES LOGICOS
&& y
|| o
! negación
And
Or
Not

ESTRUCTURAS CONDICIONALES
Sentencia if.. else
Sirve para escoger uno de dos caminos en un programa de acuerdo al resultado de una comparación

if(expresión)
Instruccion1;
else
Instruccion2;

Si expresión es verdadera se ejecuta Instrucción1, si es falsa se ejecuta Instruccion2.

En PHP toda expresión que produzca como resultado un valor numérico distinto de cero, una cadena
diferente de la cadena vacia o un array no vacio, si aparece dentro de un contexto lógico es tratado como
el valor booleano verdadero (true).
Si se desea ejecutar un conjunto de Instrucciones al resultar verdadero o falsa la expresión, las
instrucciones se deben colocar entre llaves

if(expresión)
{
Instrucciones1;
}
else
{
Instrucciones2;
}

La sentencia else es Opcional


If(expresión)
{
Instrucciones;
}
Ejemplo:

<html>
<head>
<title>Estructuras Condicionales</title>
</head>
<body>
<h1>Estructura Selectiva Simple : if ... else</h1>
<hr>

<font color="blue">verifica Si un numero es par o impar</font><br>


<?php

$num=12;
if($num % 2==0)
echo "el valor $num es par <br>";
else
echo "el valor de $num es impar<br>";

?>
<br>
<font color="blue">verifica si un numero es positivo, negativo o cero </font><br>
<?php
$x=-20;
if($x>0)
echo "El numero es positivo<br>";
else
if($x<0)
echo "El numero es negativo<br>";
else
echo "El numero es cero <br>";

?>
<br>
<font color="blue">calcula las raices reales de una ecuacion cuadratica <br>
con coeficientes a=1 b=5 c=6<br> </font>

<?php
$a=1;
$b=5;
$c=6;
if($a!=0)
{
$d = pow($b,2) - 4*$a*$c;
if($d>=0)
{
$x1 = (-$b + sqrt($d)) /(2*$a);
$x2 = (-$b - sqrt($d)) /(2*$a);
echo "Valor de x1 = $x1 <br> ";
echo "Valor de x2 = $x2 <br> ";
}
else
echo "Raices imaginarias<br>";
}
else
echo "No se puede calcular<br>";
?>

</body>
</html>

Sentencia if…elseif…..else

if(condicion1)
{
Instrucciones1;
}
elseif (condicion2)
{
Instrucciones2;
}
elseif(condicion3)
{
Instrucciones3;
}
else
{
Instrucciones a ejecutar si ninguna de las condiciones anteriores es cierta

}
El funcionamiento de esta sentencia es el siguiente: Si la primera condición es evaluada como cierta
entonces se ejecutan las sentencias del bloque correspondiente y tras ello finaliza la ejecución de la
sentencia, En el caso de que la primera condición sea falsa, el interprete continuará evaluando de manera
consecutiva las siguientes hasta encontrar la primera que es cierta, en cuyo caso se ejecutan las
sentencias de su bloque y se finaliza. Si ninguna de las condiciones es cierta se ejecutan las Instrucciones
que siguen a else.
Ejemplo:
<html>
<head>
<title>Estructuras Condicionales</title>
</head>
<body>
<h1>Sentencia if... elseif ... else</h1>
<hr>
<br>
<font color="blue">verifica si un numero es positivo, negativo o cero </font><br>
<?php
$x=-20;
if($x>0)
echo "El numero es positivo<br>";
elseif($x<0)
echo "El numero es negativo<br>";
else
echo "El numero es cero <br>";
?>
<br>
<font color="blue"> Calcula el precio de acuerdo a la edad de la persona</font><br>
<?php
$edad=35;
if ($edad<3)
$precio=0;
elseif($edad<=16)
$precio=8;
elseif($edad<65)
$precio=12;
else
$precio=10;
echo "El precio de la entrada es : $precio <br>";
?>
</body>
</html>
Sentencia switch
La sintaxis básicas de la sentencia es :
switch(expresión)
{
case valor1:
Instrucciones 1;
break;
case valor2:
Instrucciones 2;
break;
...
case valorN:
Instrucciones N;
break;
default:
Instrucciones;
}
Esta instrucción evalúa la expresión y sucesivamente compara el valor devuelto con los valores que van
apareciendo en cada una de las clausulas case, cuando el valor coincide ejecuta las instrucciones que van a
continuación hasta llegar al final de la estructura o encontrarse con una sentencia de finalización break.
La clausula default es opcional y permite indicar las sentencias a ejecutar cuando la expresión no toma
ninguno de los valores anteriores.
La expresión que se evalúa y compara en la sentencia switch puede ser cualquier expresión que se evalué a
un tipo simple, es decir, números enteros o de punto flotante y cadenas de caracteres

Ejemplo:
<html>
<head>
<title>Estructuras Condicional Multiple</title>
</head>
<body>
<h1>Sentencia swich</h1>
<hr>
<font color="blue">Reporta el dia que le corresponde de acuerdo un numero</font><br>
<?php
$num=4;
switch($num)
{
case 1: echo "Domingo <br>";
break;
case 2: echo "Lunes <br>";
break;
case 3: echo "Martes <br>";
break;
case 4: echo "Miercoles <br>";
break;
case 5: echo "Jueves <br>";
break;
case 6: echo "Viernes <br>";
break;
case 7: echo "Sabado <br>";
break;
default:
echo "Numero fuera de rango<br>";

}
?>
<br>
<font color="blue">Calculo de precio de acuerdo al dia de la semana <br>
En caso de que la variable $dia no coincida con ninguno de los valores predefinidos<br>
(L,M,X,J,V,S y D) la variable $precio no tendra ningun valor asignado.<br>
</font>

<br>

<?php
$dia="M";
switch($dia)
{
case "L":
$precio=4;
break;
case "M":
$precio=3; break;
case "X": case "J": case "D";
$precio=4.5;
break;
case "V": case "S":
$precio=5;
break;
default:
$precio=0;

}
echo "El precio es : $precio<br>";
?>
<br>

<p><font color="blue">
Calculo del numero de dias que tiene un mes concreto, considerando ademas si el año es bisiesto
o no (un año es bisiesto cuando es multiplo de 4 pero no de 100, o bien cuando es multiplo de
400)

</font></p>

<?php
$mes=2;
$año=2004;
switch($mes)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
$nd=31;
break;
case 4: case 9: case 11:
$nd=30;
break;
case 2:
if(($año%4==0 && $año%100!=0) || $año % 400==0)
$nd=29;
else
$nd=28;
break;
}
echo "el numero de dias del mes es : $nd <br>";
?>

</body>
</html>
Estructuras Repetitivas

1) while (mientras)

while(expresión)
{
Instrucciones
}

Las instrucciones se ejecutan mientras la condición es verdadera. En otras palabras termina cuando la
expresión es falsa.

2) do . . . while (Hacer mientras)

do{
Instrucciones;
}while(condición);

3) for

for(expresion1;expresion2; expresion3)
{
Instrucciones;
}

4) foreach
Permite recorrer todos los elementos de un array de una forma muy simple.
La sintaxis es la siguiente:

foreach( nombre_array as nombre_variable)


{
Sentencias a efectuar para cada elemento del array
}
Como puede apreciarse, debe indicarse el nombre del array en el que están almacenados todos
los datos y el nombre de una variable, En la iteración inicial esta variable contendrá el valor del
primer elemento del array y en las sucesivas iteraciones del bucle esta variable hará referencia
a los siguientes elementos.

Ejemplo:

<html>
<head>
<title>Estructuras Repetitivas</title>
<STYLE type="text/css">
<!--
H1 {text-decoration: underline; text-align:center}
P {font-Family:arial,verdana; color: blue;}

// -->
</STYLE

</head>
<body>
<h1>Estructuras Repetitivas</h1>
<hr>
<p> Reportar los numeros 5, 10, 15, 20, ... 95, 100</p>

<?php

$n=5;
while($n<=100)
{
print "$n ";
$n +=5;
}

?>

<p> Reportar los numeros 40, 50, 60, ... 150</p>

<?php
$c=40;
do{
print "$c ";
$c +=10;
}while($c<=150);
?>

<p> Reportar los numeros 40, 50, 60, ... 150</p>

<?php
$c=40;
do{
print "$c ";
$c +=10;
}while($c<=150);
?>

<p> Calculo del factorial de un numero </p>

<?php
$n=5;
$fact=1;
for($i=1;$i<=$n;$i++)
$fact=$fact * $i;
print "El factorial de $n es : $fact <br>";

?>

<p> Listar los elementos de un arreglo usando foreach</p>

<?php

$lista=array("Juan","Carlos","Pedro","Susana");

foreach($lista as $valor)
print "$valor <br>";
?>

</body>
</html>
Ejercicios
1) Construir en forma aleatoria, una contraseña formada por 8 letras. Se puede utilizar la funcin
rand() para generar un numero aleatorio entre 97 y 122 (códigos ASCII correspondientes a la
letras minusculas) y la función chr() para obtener el carácter asociado a un código ASCII dado.
2) Construir la tabla de multiplicar del 1 al 10 en forma de tabla.

Solución

<html>
<head>
<title>Estructuras Repetitivas</title>
<STYLE type="text/css">
<!--
H1 {text-decoration: underline; text-align:center}
P {font-Family:arial,verdana; color: blue;}

// -->
</STYLE

</head>
<body>
<h1>Estructuras Repetitivas</h1>
<hr>

<p>Construir en forma aleatoria, una contraseña formada por 8 letras.


Se puede utilizar la funcin rand() para generar un numero aleatorio
entre 97 y 122 (códigos ASCII correspondientes a la letras minusculas)
y la función chr() para obtener el carácter asociado a un código ASCII dado.
</p>

<?php
$codigo="";
for($i=1;$i<=8;$i++)
{
$letra=chr(rand(97,122));
$codigo=$codigo.$letra;
}

print("Contraseña asignada es : <b>$codigo</b>");

?>

<p> Construir la tabla de multiplicar desde el 1 al 10 en forma de tabla </p>

<?php
print ("<table border=1>");
// Generacion de la fila de la cabecera

print "<tr align='center'> <th> * </th>";

for($i=1;$i<=10;$i++)
print "<th> $i </th>";
print "<tr>";

for($i=1; $i<=10; $i++)


{
print "<tr align='CENTER'><th>$i</th>";
for($j=1;$j<=10;$j++)
print "<td>". $i*$j . "</td>";
print "</tr>";
}
print "<table>";
?>

</body>
</html>
Sentencias break y continue
Las sentencias break y continue permiten alterar la ejecución prevista de una estructura iterativa; la
primera de ellas permite cancelar completamente la ejecución del bucle y la segunda permite cancelar una
de las iteraciones y pasar directamente a la siguiente.
La sentencia break, además de permitir abandonar una estructura iterativa se utiliza también dentro de
la estructura switch para terminar cuando se cumple una condición.

FUNCIONES EN PHP

PHP permite al programador la creación de sus propias funciones, ahorrando tiempo y esfuerzo y
facilitando un mejor diseño de los programas implementados.
La sintaxis que debe adoptarse a la hora de definir una función en PHP es:

function NombreFuncion(argumentos)
{
Instrucciones
return valorDevuelto;
}

Como puede apreciarse, toda definición de función comienza con la palabra reservada function seguida del
nombre asignado, la lista de argumentos y el bloque de definición de la función.

En los nombres de las funciones no se distingue entre mayúsculas y minúsculas aunque siempre es
aconsejable efectuar la llamada a una función tal y como ha sido definida.
Respecto a los argumentos estos son parámetros formales que vienen representados por variables.
Recordar que en PHP no se declaran tipos para las variables, por tanto en los argumentos de la función
tampoco es necesario indicar tipo alguno. Es posible definir funciones sin argumentos, en este caso, a
continuación del nombre deberían colocarse los paréntesis vacios.
function nombreFuncion()
La sentencia return permite que la función devuelva un valor de retorno. Una vez ejecutada esa sentencia
se abandona la función, sin ejecutar cualquier sentencia posterior que se encuentre en el cuerpo de la
misma. El valor devuelto puede ser una cadena de caracteres , un valor numérico, un valor booleano, un
array….
Debe destacarse que a la hora de definir una función no es indispensable que esta devuelva valores; en
este sentido en PHP no hay distinción sintáctica entre lo que en otros lenguajes son funciones y
procedimientos.

Ejemplos:

<?php

function mayor($x,$y,$z)
{
$may=$x;
if($y>$may)
$may=$y;
if($z>$may)
$may=$z;
return $may;
}

function factorial($n)
{
if($n<0)
return "Solo se admiten valores positivos";
elseif($n==0)
return 1;
else
{
$f=1;
for($i=1;$i<=$n;$i++)
$f=$f * $i;
return $f;
}
}

function saluda()
{
print "Bienvenido<br>";
print "¿Como estas?<br>";
}

function generaArray($vi,$vf)
{
$x=array();
for($valor=$vi;$valor<=$vf;$valor++)
$x[]=$valor;
return $x;
}

?>

<html>
<head>
<title>Funciones en PHP</title>
<STYLE type="text/css">
<!--
H1 {text-decoration: underline; text-align:center}
P {font-Family:arial,verdana; color: blue;}

// -->
</STYLE

</head>
<body>
<h1>Funciones en PHP</h1>
<hr>

<p>Calcular el mayor de 3 numeros</p>

<?php
$a=12;
$b=15;
$c=4;
$m=mayor($a,$b,$c);
print "el mayor de $a, $b y $c es: $m <br>";
?>

<p>Calcular el factorial de un numero </p>

<?php
$num=6;
$r=factorial($num);
print "el factorial de $num es : $r <br>";
?>
<p> Funcion que permite saludar, no tiene parametros </p>

<?php

print saluda();

?>

<p> Funcion que permite generar un array a partir de dos valores numericos dados
un valor inicial y un valor final </p>

<?php

$x=generaArray(5,30);
print_r($x);

?>
</body>
</html>
Llamadas a las funciones

Se debe tener en cuenta lo siguiente


- La función debe encontrarse definida antes del lugar en el que se efectuará la llamada. No
obstante es práctica habitual y recomendable definir las funciones incluso antes de cualquier
código HTML, por ejemplo, colocar los scripts que definen las funciones antes del comando
<HTML> o dentro del encabezado del documento.
- En la llamada los parámetros, en el caso de que existan, deben ser pasados en el mismo orden en
el que aparecen en la definición. Como parámetros pueden pasarse variables, valores o
expresiones. Los valores numéricos pueden ser escritos directamente o entrecomillados. En el
caso de las funciones que tienen parámetros, en la llamada deben colocarse los paréntesis vacios.
- Si se pasan menos parámetros que los que tiene la función, los últimos parámetros se asumirán
como nulos, la función ejecutará las instrucciones pero se generaran mensajes de aviso
(warnings)
- Si la función devuelve un valor, este puede ser asignado a una variable en la llamada o utilizando
directamente en otra expresión.

PARAMETROS DE UNA FUNCION

PARAMETROS OPCIONALES
En php todos los parámetros de las funciones pueden ser considerados opcionales de manera que a la hora
de realizar la llamada a una función, pueden pasarse un numero de argumentos distinto del que acepta la
función. Si se pasan menos argumentos de los esperados, los últimos se asumirán que tienen valor nulo. En
el caso de pasarse más argumentos de los esperados, los que sobran pueden ser ignorados.
Al ejecutar la función se generan unos mensajes de aviso notificando el hecho de recibir menos
parámetros de los previstos.

<?php

function suma($a,$b,$c)
{
return $a+$b+$c;
}
?>
<html>
<head>
<title>Funciones con parametros opcioneles en PHP</title>
<STYLE type="text/css">
<!--
H1 {text-decoration: underline; text-align:center}
P {font-Family:arial,verdana; color: blue;}

// -->
</STYLE

</head>
<body>
<h1> Funciones con parametros opcionales en PHP </h1>
<hr>

<?php
print "La suma es : " .suma() . "<br>";
print "La suma es : " .suma(6) . "<br>";
print "La suma es : " .suma(6,15) . "<br>";
print "La suma es : " .suma(6,15,4) . "<br>";
?>
</body>
</html>

Ejemplo:
Considere una función que reciba el valor de 3 números y retorne la suma de ellos.

PARAMETROS CON VALORES POR DEFECTO

Al definir funciones pueden darse valores por defecto para los parámetros , de tal forma que si un
parámetro no está presente en la llamada, se le asigna ese valor por defecto en lugar de tomar el valor
nulo. Para indicar un valor por defecto basta asignar dicho valor con el signo “=” en la lista de argumentos
de la cabecera de la función. Si la función tiene argumentos que no llevan valor por defecto y otros que si
lo llevan, estos últimos deben estar situados al final en la lista de argumentos de la función.
Ejemplo:

<?php
function suma($a=6,$b=15,$c=4)
{
return $a+$b+$c;
}
?>
<html>
<head>
<title>Funciones con parametros con valores por defecto en PHP</title>
<STYLE type="text/css">
<!--
H1 {text-decoration: underline; text-align:center}
P {font-Family:arial,verdana; color: blue;}
// -->
</STYLE
</head>
<body>
<h1> Funciones con parametros con valores por defecto en PHP </h1>
<hr>
<?php
print "La suma es : " .suma() . "<br>";
print "La suma es : " .suma(8) . "<br>";
print "La suma es : " .suma(8,20) . "<br>";
print "La suma es : " .suma(8,20,32) . "<br>";
?>
</body>
</html>

LISTA DE PARAMETROS DE LONGITUD VARIABLE


Las funciones definidas por el usuario pueden recibir lista de argumentos de longitud variable. En este
caso a la hora de definir la función se puede dejar la lista de argumentos vacía y utilizar una serie de
funciones predefinidas para recuperar los argumentos que realmente han sido pasados a la hora de

efectuar la llamada a la función.


La primera de las funciones que puede ser utilizada es : func_num_args() que devuelve el numero de
parámetros que efectivamente han sido pasados.
Una vez que se sabe cuantos parámetros han sido pasados, es necesario también disponer de algún
mecanismo para recuperar los valores de los mismos. La siguiente función permite recuperar el valor del
argumento numero n: func_get_arg(n), debe tenerse en cuenta que la numeración de los argumentos
comienza en 0.
Si lo que se desea es recuperar todos los valores de los argumentos en una estructura de datos y en una
sola operación, puede usarse la función func_get_args() que devuelve un array con todos los valores de
los argumentos.
Ejemplo:
A continuación definimos una función que calcula la suma de los valores de todos los argumentos.
<?php

function suma()
{
$n=func_num_args();
$aux=0;
for($i=0;$i<$n;$i++)
$aux = $aux+ func_get_arg($i);
return $aux;
}
?>

<html>
<head>
<title>Funciones con parametros de longitud variable en PHP</title>
<STYLE type="text/css">
<!--
H1 {text-decoration: underline; text-align:center}
P {font-Family:arial,verdana; color: blue;}

// -->
</STYLE

</head>
<body>
<h1> Funciones con parametros de longitud variable </h1>
<hr>

<?php
print "La suma es : " .suma(2,5,8) . "<br>";
print "La suma es : " .suma(1,2) . "<br>";
?>
</body>
</html>
PASO DE PARAMETROS POR VALOR O POR REFERENCIA
A la hora de efectuar la llamada a una función, los argumentos pueden ser pasados por valor o por
referencia. En el primer caso, lo que se pasa es realmente es una copia del correspondiente valor para que
la función lo reciba y realice con él las correspondientes operaciones.
En el segundo caso, en cambio, cuando se pasa una variable como argumento, no se pasa a la función una
copia de su valor sino la dirección de memoria donde se encuentra dicha variable. De esta forma la
función puede acceder directamente a esa zona de memoria y leer o modificar el valor de la variable.
Para indicar que es un parámetro por referencia se debe preceder el símbolo & a la variable.

<?php
function fValor($x)
{
$x= $x + 2;
}
function fReferencia(&$x)
{
$x= $x + 2;
}
?>

<html>
<head>
<title>Funciones con parametros con valores por defecto en PHP</title>
<STYLE type="text/css">
<!--
H1 {text-decoration: underline; text-align:center}
P {font-Family:arial,verdana; color: blue;}

// -->
</STYLE

</head>
<body>
<h1> Funciones con parametros por valor y referencia </h1>
<hr>

<?php
print "Llamando a la funcion con parametro por valor <br>";
$a=12;
fValor($a);
print "El valor de a es : $a <br>";
print "Llamando a la funcion con parametro por referencia<br>";
$a=12;
fReferencia($a);
print "El valor de a es : $a <br>";
?>
</body>
</html>
AMBITO DE LAS VARIABLES

VARIABLES LOCALES
Toda variable definida dentro de una función tiene un ámbito local a la misma; es decir, únicamente podrá
ser utilizada dentro de la propia función.

VARIABLES GLOBALES
Una variable declarada fuera de una función tiene un ámbito global, y no puede ser utilizada dentro de
una función, a no ser que se declare explícitamente su globalidad.
Ejemplo:

$director=”Amenábar”;
function prueba()
{
global $director;
print $director;
}

VARIABLES ESTATICAS
Otro aspecto importante relacionado con el ámbito de las variables es la posibilidad de definir variables
estáticas. Una variable estática tiene un ámbito local a la función en la que se define pero no pierde su
valor cuando se termina la ejecución de la misma. Es decir conserva el valor entre llamadas sucesivas a la
función; en contra de lo que ocurre con las variables locales, que pierden su valor una vez que la ejecución
de la función ha finalizado.
Ejemplo:
La siguiente función declara una variable estatica, con valor inicial 0, y en cada llamada se incrementa una
unidad y escribe su nuevo valor.
<?php
function pruebaEstatica()
{
static $n=0;
$n++;
print "$n ";
}
?>
<html>
<head>
<title>Variables estaticas en PHP</title>
<STYLE type="text/css">
<!--
H1 {text-decoration: underline; text-align:center}
P {font-Family:arial,verdana; color: blue;}
// -->
</STYLE

</head>
<body>
<h1> variables estaticas en php </h1>
<hr>

<?php
for($i=1;$i<=10;$i++)
pruebaEstatica();
?>
</body>
</html>

CLAUSULAS INCLUDE Y REQUIRE


Al programar es bastante frecuente que unas mismas líneas de código o conjunto de funciones se
necesiten en varios documentos. Puede tratarse por ejemplo de:

- Funciones de validación de datos


- Funciones para mostrar cabeceras o pies de paginas
- Código de configuración para acceso a una base de datos
- Definición de determinados parámetros del programa.
En lugar de copiar el código, se puede optar por escribir el código correspondiente en ficheros externos
e incluirlos tantas veces como se quiera en otros ficheros diferentes. Las clausulas include y require
permiten incluir y ejecutar el contenido del fichero indicado en aquel que contiene la clausula. De esta
forma pueden escribirse completas librerías de funciones y facilitar la portabilidad y reusabilidad.
La sintaxis de las dos sentencias de inclusión es idéntica:
include(“fichero.php”);
require(“fichero.php”);
La inclusión puede realizarse en cualquier punto del programa, incluso puede depender del flujo de
ejecución, por ejemplo, una inclusión dentro de un bloque if.
La única diferencia entre include y require es que, en caso de no localizar el fichero a incluir, require
produce un “Error Fatal” y no ejecuta el resto del programa ni continúa con la carga de la pagina. En
cambio con include, si el fichero no se encuentra se genera un aviso pero se sigue con la ejecución del
resto del programa y carga de la pagina.

Ejemplo
A continuación se muestra el uso de la clausula require para incluir en un programa las asignaciones
realizadas en el fichero de nombre definiciones.php

Fichero: definiciones.php

<?php

$titulo="Los increibles";
$director="Brad Bird";
$genero="aventuras";
?>

Si otro documento quiere incluir estas definiciones, deberá hacerlo de la siguiente manera:
<html>
<head>
<title>Include y Require </title>
</head>
<body>

<?php
require("definiciones.php");
print "Nuestro proximo extreno : $titulo<br>";
print "pelicula de genero : $genero<br> ";
print "dirigida por : $director<br>";
?>
</body>
</html>

ARRAYS

Un array o matriz es un conjunto de datos que se almacena bajo un nombre común y a los que se puede
acceder utilizando uno o mas índices. En PHP los datos que componen el array pueden ser de diferente
tipo, de manera que en un único array pueden almacenarse indistintamente cadenas de caracteres, valores
numéricos, otros arrays,.. Una de las particularidades que distinguen a PHP de otros lenguajes de
programación surge a la hora de crear el array: no es necesario determinar la dimensión antes de
inicializarlo. Esto dota de una gran flexibilidad a los programas pues permite la modificación posterior del
array, suprimiendo o añadiendo nuevos elementos cuando sea necesario.

Construccion de Arrays

Los elementos que componen un array, como cualquier otro elemento, son almacenados en una variable,
para indicar que dicha variable contiene un array se utilizan los caracteres [], situando entre ellos un
índice numérico que permitirá identificar a cada uno de los elementos individuales.

Ejemplo:
$x[0]=12;
$x[1]=”Hola”;
$x[2]=25.8;
$x[]=”Ultimo”;

A la hora de añadir un ultimo elemento no es necesario indicar el índice correspondiente. En este ejemplo,
automáticamente se asigna a la posición 3. Además, puede observarse como el array puede contener datos
de tipos diferentes, en este caso dos valores numéricos y dos cadenas de caracteres.

Otra manera de crear arreglos es con ayuda de la función array()

$x = array(12,”Hola”,25.8,”Ultimo”);

En este caso no se han considerado índices y se consideran por defecto los valores 0,1,2,….

Arrays Asociativos
Supóngase que se desea almacenar los años de un conjunto de películas. Se puede construir un array de
elementos numéricos (los años) indexados mediante una cadena de caracteres (el titulo de la película
correspondiente)

$peliculasAño[“La costilla de Adan”]=1949;


$peliculasAño[“La gran Ilusion”]=1937;
$peliculasAño[“Roma, la ciudad Abierta”]=1944;
$peliculasAño[“Sabrina”]=1954;
$peliculasAño[“Vive como quieras”]=1938;

Otra manera de generar este arreglo seria con la función array()

$peliculasAño = array(“La Costilla de Adan” => 1949, “La gran Ilusion”, => 1937, “Roma, la ciudad Abierta”
=> 1944,
“Sabrina” => 1954, “Vive como quieras” => 1938);

En este caso, al construir el array debe indicarse tanto la palabra clave que actua de índice como el valor
asociado a ese elemento del array. Aunque el array se haya construido con la función array, en cualquier
momento se puede añadir un nuevo elemento
$peliculasAño[“West Side Story”] = 1961;

Arrays Multidimensionales
El lenguaje PHP permite la creación de arrays ultimensionales, es decir, arrays cuyos elementos son
nuevos arrays. La sintaxis es similar al caso de una dimensión, siendo necesario indicar los dos índices por
separado.
Ejemplo:
A continuación creamos un array de nombre $M y de dos dimensiones.

$M[0][0] = 5;
$M[0][1] = 3;
$M[1][0] = -2;
$M[1][1] = 7;

La definición equivalente usando la función array() seria:


$M = array( array(5,3), array(-2,7));

Es posible definir arrays asociativos multidimensionales, e incluso combinar índices numéricos y


alfabéticos.

$pelicula[“George Lucas”][1949]= “La costilla de Adan”;


$pelicula[“Jean Renoir”][1937]= “La gran Ilusion”;
$pelicula[“Roberto Rosselini”][1944] = “Roma, Ciudad Abierta”;
$pelicula[“Billy Wilder”][1954] = “Sabrina”;
$pelicula[“Frank Capra”][1938] = “Vive como quieras”;

Tambien es posible indexar los elementos de un array multidimensional

$pelicula = array(
“La costilla de Adan” => array(“Director” =>”G. Cukor”, “Año” => 1949),
“La gran Ilusion” => array(“Director” =>”Jean Renoir”, “Año” => 1937),
“Roma, Ciudad Abierta” => array(“Director” =>”Roberto Rosselini”, “Año” => 1944),
“Sabrina” => array(“Director” =>”Billy Wilder”, “Año” => 1954),
“Vive como quieras” => array(“Director” =>”Frank Capra”, “Año” => 1938)
)

Recorrido de todos los elementos de un array


Una vez creado e inicializado un array unidimensional o multidimensional, pude que se esté interesado en
mostrar o manipular todos sus elementos. Para mostrar todos los elementos de un array, una primera
opción es el uso de la función print_r(), que aplicada sobre un array muestra en la pagina la estructura del
mismo de acuerdo al siguiente esquema:
( [índice] => elemento1
[índice] => elemento2
...
[índice] => elementon)

Para la manipulación de los elementos de arrays se dispone de estructuras iterativas que simplifican la
tarea en particular, es de destacar una sentencia especifica para recorrer todos los elementos de un
array:
foreach( array as valor)

Ejemplo: El siguiente código recorre todos los elementos de un arreglo y los muestra en la pagina

$actores = array(“Marlon Brando”,”Gary Cooper”,”Cary Grant”,”James Stewart”);

foreach( $actores as $nombre)


echo “ $nombre <br>”;

Si además de recuperar los elementos del array, se desea también conocer el índice, tanto en el caso de
índices numéricos como en array asociativos, se puede una sintaxis alternativa del bucle foreach

foreach(array as índice => valor)


Ejemplo:
Si tenemos el arreglo y queremos reportarlo
$peliculasAño = array (“La Costilla de Adan” => 1949, “La gran Ilusion”, => 1937, “Roma, la ciudad Abierta”
=> 1944,
“Sabrina” => 1954, “Vive como quieras” => 1938);
foreach($peliculasAño as $indice => $valor)
echo “<i>$indice,</i> ($valor) <br>”;

Tambien es posible utilizar estas estructuras iterativas anidadas para recorrer arrays
multidimensionales.

Ejemplo:
$peliculas = array(
“La costilla de Adan” => array(“Director” =>”G. Cukor”, “Año” => 1949),
“La gran Ilusion” => array(“Director” =>”Jean Renoir”, “Año” => 1937),
“Roma, Ciudad Abierta” => array(“Director” =>”Roberto Rosselini”, “Año” => 1944),
“Sabrina” => array(“Director” =>”Billy Wilder”, “Año” => 1954),
“Vive como quieras” => array(“Director” =>”Frank Capra”, “Año” => 1938)
);

foreach($peliculas as $indice => $titulo)


{
echo “Datos de $indice : <br>”;
foreach($titulo as $indice =>$valor)
echo ”&nbsp&nbsp $indice; $valor <br>”;
}

Ejercicio1: Crear y mostrar los arreglos unidimensionales anteriores


<html>
<head>
<title>Arreglos</title>
</head>
<body>
<h1>Arreglos</h1>
<hr>
<font color="blue">Mostrar los elementos de un arreglo</font><br>
<?php

$x[0]=12;
$x[1]="Hola";
$x[2]=25.8;
$x[]="Ultimo";

for($i=0;$i<count($x);$i++)
print " elemento $i : $x[$i]<br>";

?>
<br>
<font color="blue">Mostrar un arreglo de nombres creado con array </font><br>
<?php
$actores = array("Marlon Brando","Gary Cooper","Cary Grant","James Stewart");
foreach($actores as $nombre)
echo " $nombre <br>";
?>
<br>
<font color="blue">Mostrar un arreglo asociativo </font><br>
<?php
$peliculasAño=array("La Costilla de Adan" => 1949, "La gran Ilusion" => 1937, "Roma, la ciudad
Abierta" => 1944,"Sabrina" => 1954, "Vive como quieras" => 1938);
foreach($peliculasAño as $indice => $valor)
echo "<i>$indice,</i> ($valor) <br>\n";
?>
</body>
</html>

Ejercicio2: Crear y mostrar las matrices de los ejemplos.

<html>
<head>
<title>Matrices</title>
</head>
<body>
<h1>Matrices</h1>
<hr>

<font color="blue">Mostrar los elementos de una matriz</font><br>


<?php
$M[0][0] = 5;
$M[0][1] = 3;
$M[1][0] = -2;
$M[1][1] = 7;

for($i=0;$i<2;$i++)
{
for($j=0;$j<2;$j++)
print $M[$i][$j]." ";
print "<br>";
}

?>
<br>
<font color="blue">Mostrar un arreglo asociativo multidimensional </font><br>
<?php
$peliculas = array("La costilla de Adan" => array("Director" =>"G. Cukor", "Año" => 1949),"La
gran Ilusion" => array("Director" =>"Jean Renoir", "Año" => 1937),
"Roma, Ciudad Abierta" => array("Director" =>"Roberto Rosselini", "Año" => 1944),
"Sabrina" => array("Director" =>"Billy Wilder", "Año" => 1954),
"Vive como quieras" => array("Director" =>"Frank Capra", "Año" => 1938)
);
foreach($peliculas as $indice => $titulo)
{
echo "Datos de : $indice : <br>";
foreach($titulo as $indice =>$valor)
echo "&nbsp&nbsp $indice : $valor <br>";
}
?>
</body>
</html>
PROGRAMACION ORIENTADA A OBJETOS

Crear una clase Rectángulo con atributos base y altura y mostrar el área, perímetro y diagonal

<?php
class Rectangulo{
private $largo,$ancho;

public function __construct($l,$a)


{
$this->largo=$l;
$this->ancho=$a;
}

public function setLargo($l)


{
$this->largo=$l;
}
public function setAncho($a)
{
$this->ancho=$a;
}

public function getLargo()


{
return $this->largo;
}

public function getAncho()


{
return $this->ancho;
}

public function area()


{
return $this->largo*$this->ancho;
}

public function perimetro()


{
return 2*($this->largo + $this->ancho);
}

public function diagonal()


{
return sqrt(pow($this->largo,2) + pow($this->ancho,2));
}
}

class Caja extends Rectangulo{


private $altura;

public function __construct($l,$a,$h)


{
parent::__construct($l,$a);
$this->altura=$h;
}

public function setAltura($h)


{
$this->altura=altura;
}

public function getAltura()


{
return $this->altura;
}
public function volumen()
{
return parent::area()*$this->altura;
}
}

?>

<html>
<head>
<title>Programacion Orientada a Objetos en PHP</title>
</head>
<body>
<h1>Programacion Orientada a Objetos</h1>
<hr>

<font color="blue">Crear un Objeto Rectangulo y mostrar area, perimetro, diagonal</font><br>


<?php

$r= new Rectangulo(3,4);


echo "Rectangulo <br>";
echo " Largo: ".$r->getLargo() . "<br>";
echo " Ancho: ".$r->getAncho() . "<br>";
echo " Area: ".$r->area() . "<br>";
echo " Perimetro : ".$r->perimetro() . "<br>";
echo " Diagonal : ".$r->diagonal() . "<br>";

echo "<br>";

?>
<font color="blue">Nuevos valores de atributos</font><br>

<?php
$r->setLargo(5);
$r->setAncho(12);
echo " Largo : ".$r->getLargo() . "<br>";
echo " Ancho : ".$r->getAncho() . "<br>";
echo " Area: ".$r->area() . "<br>";
echo " Perimetro : ".$r->perimetro() . "<br>";
echo " Diagonal : ".$r->diagonal() . "<br>";
?>

<font color="blue">Creacion del Objeto caja</font><br>


<?php

$c= new Caja(6,9,10);

echo "Largo : ". $c->getLargo() . "<br>";


echo "Ancho : ". $c->getAncho() . "<br>";
echo "Altura : ". $c->getAltura(). "<br>";
echo "Volumen : ". $c->volumen() . "<br>";

?>

</body>
</html>

Problema: Implementar una clase con atributos una lista de direcciones y una lista de títulos y muestre
una lista de hipervínculos en forma horizontal (básicamente un menú de opciones)
Lo primero que debemos pensar es que valores almacenará la clase, en este caso debemos cargar una lista
de direcciones web y los títulos de los enlaces. Podemos definir dos vectores paralelos que almacenen las
direcciones y los títulos respectivamente.
Definiremos dos métodos: cargarOpcion y mostrar.

<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
class Menu {
private $enlaces=array();
private $titulos=array();
public function cargarOpcion($en,$tit)
{
$this->enlaces[]=$en;
$this->titulos[]=$tit;
}
public function mostrar()
{
for($f=0;$f<count($this->enlaces);$f++)
{
echo '<a href="'.$this->enlaces[$f].'">'.$this->titulos[$f].'</a>';
echo "-";
}
}
}

$menu1=new Menu();
$menu1->cargarOpcion('http://www.google.com','Google');
$menu1->cargarOpcion('http://www.yahoo.com','Yhahoo');
$menu1->cargarOpcion('http://www.msn.com','MSN');
$menu1->mostrar();
?>
</body>
</html>
Problema: Confeccionar una clase Tabla que permita indicarle en el constructor la cantidad de filas y
columnas. Definir otra responsabilidad que podamos cargar un dato en una determinada fila y columna.
Finalmente debe mostrar los datos en una tabla HTML.

<html>
<head>
<title>Pruebas</title>
</head>
<body>

<?php
class Tabla {
private $mat=array();
private $cantFilas;
private $cantColumnas;

public function __construct($fi,$co)


{
$this->cantFilas=$fi;
$this->cantColumnas=$co;
}

public function cargar($fila,$columna,$valor)


{
$this->mat[$fila][$columna]=$valor;
}

public function inicioTabla()


{
echo '<table border="1">';
}

public function inicioFila()


{
echo '<tr>';
}

public function mostrar($fi,$co)


{
echo '<td>'.$this->mat[$fi][$co].'</td>';
}

public function finFila()


{
echo '</tr>';
}

public function finTabla()


{
echo '</table>';
}

public function graficar()


{
$this->inicioTabla();
for($f=1;$f<=$this->cantFilas;$f++)
{
$this->inicioFila();
for($c=1;$c<=$this->cantColumnas;$c++)
{
$this->mostrar($f,$c);
}
$this->finFila();
}
$this->finTabla();
}
}

$tabla1=new Tabla(2,3);
$tabla1->cargar(1,1,"1");
$tabla1->cargar(1,2,"2");
$tabla1->cargar(1,3,"3");
$tabla1->cargar(2,1,"4");
$tabla1->cargar(2,2,"5");
$tabla1->cargar(2,3,"6");
$tabla1->graficar();
?>
</body>
</html>

Problema: Una página web es común que contenga una cabecera, un cuerpo y un pié de página. Estas tres
secciones podemos perfectamente identificarlas como clases. También podemos identificar otra clase
página. Ahora bien cómo podemos relacionar estas cuatro clases (pagina, cabecera, cuerpo, pie), como
podemos imaginar la cabecera, cuerpo y pie son partes de la pagina. Luego podemos plantear una clase
pagina que contenga tres atributos de tipo objeto
<html>
<head>
<title>Pruebas</title>
</head>
<body>
<?php
class Cabecera {
private $titulo;
public function __construct($tit)
{
$this->titulo=$tit;
}

public function graficar()


{
echo '<h1 style="text-align:center">'.$this->titulo.'</h1>';
}
}

class Cuerpo {
private $lineas=array();
public function insertarParrafo($li)
{
$this->lineas[]=$li;
}
public function graficar()
{
for($f=0;$f<count($this->lineas);$f++)
{
echo '<p>'.$this->lineas[$f].'</p>';
}
}
}

class Pie {
private $titulo;
public function __construct($tit)
{
$this->titulo=$tit;
}
public function graficar()
{
echo '<h4 style="text-align:left">'.$this->titulo.'</h4>';
}
}

class Pagina {
private $cabecera;
private $cuerpo;
private $pie;
public function __construct($texto1,$texto2)
{
$this->cabecera=new Cabecera($texto1);
$this->cuerpo=new Cuerpo();
$this->pie=new Pie($texto2);
}
public function insertarCuerpo($texto)
{
$this->cuerpo->insertarParrafo($texto);
}
public function graficar()
{
$this->cabecera->graficar();
$this->cuerpo->graficar();
$this->pie->graficar();
}
}

$pagina1=new Pagina('Título de la Página','Pie de la página');


$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 1');
$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 2');
$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 3');
$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 4');
$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 5');
$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 6');
$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 7');
$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 8');
$pagina1->insertarCuerpo('Esto es una prueba que debe aparecer dentro del cuerpo de la página 9');
$pagina1->graficar();
?>
</body>
</html>
Base de datos con PHP y MYSQL

Apertura de la conexión
El primer paso para conseguir acceder a los datos de una base de datos MySQL es establecer la conexión
con el servidor de base de datos. Desde PHP esta conexión se realiza con la función.

mysql_connect(servidor,usuario,contraseña);

Los tres parámetros anteriores permiten identificar el servidor sobre el que está instalado MySQL, y el
nombre de usuario y contraseña necesarios para conectarse. Por supuesto, estos dos últimos datos deben
coincidir con los de un usuario registrado en MySQL
La función mysql_connect() devuelve un valor entero que se utilizara como identificador de la conexión en
las operaciones posteriores. Si se produce un error en la conexión, el valor devuelto por la función será 9.

Cierre de la Conexión
La conexión realizada se cierra automáticamente al terminar la ejecución del script en el que se ha
establecido, o bien explícitamente con la función mysql_close(). Esta función recibe como único
argumento el identificador de la conexión.

mysql_close(identificador);

El identificador de la conexión en la función mysql_close() es opcional, en caso de que no se indique se


cerrara la ultima conexión abierta.
La función mysql_close() devuelve un valor entero que será nulo en el caso de que se produzca algún error
en el proceso.
De esta manera, el esquema general de un programa que realiza conectividad con MySQL seria:

$c = mysql_connect(“localhost”,”root”,””);
if(!$c)
die(“Lo siento, error en la conexion”);
else
print “Conexión establecida correctamente”;
...
...

mysql_close();

Selección de la Base de Datos


Una vez abierta la conexión con el servidor MySQL, el siguiente paso será la selección de una base de
datos disponibles para la realización de las operaciones posteriores sobre ella. La función que permite
seleccionar una base de datos es :

mysql_select_db(nombreBaseDeDatos,identificadorConexion);

El primer parámetro será el nombre de la base de datos a seleccionar y el segundo el identificador de la


conexión.
De nuevo, como en todas las funciones de conexión, si se produce un error, por ejemplo, porque la base de
datos no existe, la función mysql_select_db() devolverá el valor 0.

$c=mysql_connect(“localhost”,”root”,””);
$bd = mysql_select_db(“bdejemplo”,$c);
if( !$c )
die(“Base de datos no existente”);

Ejecución de sentencias SQL sobre la base de datos seleccionada


La selección mysql_query() permite ejecutar cualquier sentencia SQL sobre la base de datos activa. Esta
función admite dos argumentos, el primero es una cadena de caracteres con el código SQL de la consulta
a realizar; el segundo argumento será el identificador de la conexión.

mysql_query(sentencia, identificadorDeConexion);

Esta función devuelve 0 si se produce algún error o un numero entero positivo en caso de ejecución
correcta.
En las sentencias de selección, este valor devuelto se utilizará posteriormente para acceder el resultado
de la consulta. En el caso de sentencias de creación, inserción, eliminación o actualización, este valor
devuelto únicamente sirve para comprobar si la sentencia se ejecuto correctamente.

Ejemplo:

$c = mysql_connect(“localhost”, “root”, “”);


if(!$c)
die(“conexion fallida”);
$ok = mysql_select_db(“bdejemplo”, $c);
if(!$ok)
die(“error en la seleccion de la base de datos”);
$consulta = “alter table producto add tipo varchar(20) not null”;
$resultado=mysql_query($consulta, $c);
if($resultado)
print(“Tabla actualizada”);
else
printt(“No se ha podido actualizar la tabla”);
mysql_close($c);

Funciones usadas en el manejo de base de datos


- mysql_num_rows() : Devuelve el numero de filas de un resultado.
Ejemplo:
$resultado= mysql_query($consulta, $c);
if(mysql_num_rows($resultado))
{
...
}

- die(mensaje): La función die() se encarga de imprimir un mensaje, pero además detiene hasta ese
punto la ejecución del script.
- mysql_fetch_array(id_resultado): Extrae la fila de resultado como un array asociativo.
Devuelve una matriz que corresponde a la sentencia extraida, o falso si no quedan más filas_

Ejemplo:
<?php
$c= mysql_connect($host,$user,$password);
$ok= mysql_select_db(“bdejemplo”, $c);

$consulta=”select * from producto”;


$resultado = mysql_query($consulta, $c);
while($row = mysql_fetch_array($resultado)) {
echo $row["idproducto"];
echo $row["nombreproducto"];
}
mysql_free_result($resultado);
?>

- mysql_fetch_object ( id_resultado ) : Extrae una fila de resultado como un objeto.


Devuelve un objeto con las propiedades que corresponden a la última fila extraída, o FALSE si no
quedan más filas.
mysql_fetch_object() es similar a mysql_fetch_array(), con la diferencia que un objeto es
devuelto en lugar de un array asociativo. Indirectamente, quiere decir que solo se puede aceder
a los datos por el nombre del campo, y no por su posición.
Nota: Los nombres de campos retornados por esta función diferencian entre mayúsculas y
minúsculas.

Ejemplo:
<?php
$c = mysql_connect("hostname", "user", "password");
$ok=mysql_select_db("mydb");
$result = mysql_query("select * from mytable", $c);
while ($row = mysql_fetch_object($result)) {
echo $row->user_id;
echo $row->fullname;
}
mysql_free_result($result);
?>

- mysql_fetch_row(id_resultado); Devuelve una fila de resultado como matriz.


Devuelve: Una matriz que corresponde a la fila selecionada, o FALSE si no quedan más filas.

mysql_fetch_row() seleciona una fila de datos del resultado asociado al identificador de


resultado especificado. La fila es devuelta como una matriz. Cada columna del resultdo es
guardada en un offset de la matriz, empezando por el offset 0.
La llamada a mysql_fetch_row() deberá devolver la proxima fila del resultado, o FALSE si no
quedan mas filas.

Ejemplo:

<?php
$c = mysql_connect("hostname", "user", "password");
$ok=mysql_select_db("mydb");
$result = mysql_query("select * from mytable", $c);
while ($row = mysql_fetch_row($result)) {
echo $row[0];
echo $row[1];
}
Ejercicio

Crear una base de datos llamada empresa, y luego una tabla llamada producto con los siguientes atributos;
idproducto, descripción, precio y stock.
Luego hacer un menú de opciones con los siguiente:
Registrar Productos
Mostrar Productos
Consultar Producto
Eliminar Producto
Modificar Producto

formularioRegistro.html

<html >
<head>
<title>Registro de Productos</title>
</head>
<body>
<h1>Registro de Productos</h1>
<hr color="#CC0000"/>
<form action ="insertaproducto.php" method="post">
idproducto <input type="text" name="idproducto"><br>
descripcion <input type="text" name="descripcion"><br>
precio <input type="text" name="precio"><br>
stock <input type="text" name="stock"><br>
<input type="submit" value="registrar">
<input type="reset" value="borrar">
</form>
<p>&nbsp;</p>
</body>
</html>

insertaproducto.php

<html>
<head>
<title>registro de nuevo producto</title>
</head>
<body>
<?php
// Comprobacion de la recepcion de las variables

$idproducto=$_POST["idproducto"];
$descripcion=$_POST["descripcion"];
$precio=$_POST["precio"];
$stock = $_POST["stock"];

if(isset($idproducto,$descripcion,$precio,$stock))
{
$host="localhost";
$usuario="root";
$password="";
$db="empresa";
$c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error());
mysql_select_db($db,$c) or die("Error ". mysql_error());
$consulta="INSERT INTO producto(idproducto,descripcion,precio,stock)
VALUES ('$idproducto','$descripcion','$precio','$stock')";
// Ejecucion de la consulta
if(mysql_query($consulta,$c))
print("<center><h2> PRODUCTO REGISTRADO</h2></center>");
}
else
print("No se han definido las variables");
?>
</body>
</html>

mostrarProductos.php

<html >
<head>
<title>Lista de Productos </title>
</head>
<body>
<h1 align="center"><font color="#CC0000">Lista de Productos Disponibles</font></h1>
<hr color="#0066CC" />

<?PHP
$host="localhost";
$usuario="root";
$password="";
$db="empresa";
$c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error());
mysql_select_db($db,$c) or die("Error ". mysql_error());

$consulta="SELECT * FROM producto";


$resultado = mysql_query($consulta,$c);

if($resultado)
{
echo "<table border width=100%>
<tr>
<th>numero</th>
<th>idproducto</th>
<th>descripcion</th>
<th>precio</th>
<th>stock</th>
</tr> ";
$cont=0;
while($registro=mysql_fetch_array($resultado))
{
$cont++;
echo "<tr align=center>
<td>$cont</td>
<td>$registro[0]</td>
<td>$registro[1]</td>
<td>$registro[2]</td>
<td>$registro[3]</td>
</tr>";
}
echo "</table>";
}
mysql_close($c);

?>
</body>
</html>

formularioConsultaProducto.html

<html>
<head>
<title>ConsultaProducto</title>
</head>
<body>
<div align="center">
<h1>Consulta de Productos
</h1>
</div>
<hr color="#0066FF"/>
<form action="consultaproducto.php" method="post">
idproducto : <input type="text" size="8" name="idproducto" ><br />
<input type="submit" value="enviar" />
<input type="reset" value="borrar" />
</form>
</body>
</html>

consultaproducto.php
<html>
<head>
<title>mostrar Producto </title>
</head>
<body>
<h1>Datos del Producto </h1>
<hr color="#CC0000"/>

<?php
$host="localhost";
$usuario="root";
$password="";
$db="empresa";
$c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error());
mysql_select_db($db,$c) or die("Error ". mysql_error());

$idproducto=$_POST["idproducto"];

$consulta="SELECT * FROM producto WHERE idproducto='$idproducto'";

$resultado=mysql_query($consulta,$c);
// comprobacion de la existencia de algun registro resultado

if(mysql_num_rows($resultado))
{
// se recupera el registro resultado en array
$registro=mysql_fetch_row($resultado);
echo "
<P align=center>
<table border=1 width=40% bgcolor=##99CCFF>
<tr>
<td>idproducto </td>
<td>$registro[0]</td>
</tr>
<tr>
<td>descripcion </td>
<td>$registro[1]</td>
</tr>
<tr>
<td>precio </td>
<td>$registro[2]</td>
</tr>
<tr>
<td>stock </td>
<td>$registro[3]</td>
</tr>
<table>
</p>
<br>
<A HREF=\"formularioConsultaProducto.html\"> Volver a Consultar Producto</A>";
}
else
echo("EL ID DEL PRODUCTO NO EXISTE");
?>
</body>
</html>

formularioEliminaProducto.html

<html >
<head>
<title>elimina productos </title>
</head>
<body>
<div align="center">
<h1>Eliminacion de Productos
</h1>
</div>
<hr color="#FF0000"/>
<form action="eliminaproducto.php" method="post">
idproducto : <input type="text" size="8" name="idproducto" ><br />
<input type="submit" value="enviar" />
<input type="reset" value="borrar" />
</form>
</body>
</html>

eliminaproducto.php

<html >
<head><title>elimina producto </title>
</head>

<body>

<?php
$host="localhost";
$usuario="root";
$password="";
$db="empresa";
$c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error());
mysql_select_db($db,$c) or die("Error ". mysql_error());
$idproducto=$_POST["idproducto"];

$consulta="select * from producto where idproducto='$idproducto'";

$resultado=mysql_query($consulta,$c);

if(mysql_num_rows($resultado))
{
$consulta = "DELETE FROM producto where idproducto='$idproducto'";
$resultado=mysql_query($consulta,$c);
if($resultado)
echo "<center><I> registro eliminado </I><center>";
}
else
echo "<center><I> no existe el id del producto </I><center>";
mysql_close($c);
?>

<hr>
<div align="justify"><a href="formularioEliminaProducto.html"> Volver a eliminar </a>
</div>
</body>
</html>

formularioModificaProducto.html

<html >
<head> <title> Modificar Producto</title></head>
<body>
<body>
<div align="center">
<h1>Modificacion de Productos
</h1>
</div>
<hr color="#0066FF"/>
<form action="modificaproducto.php" method="post">
idproducto : <input type="text" size="8" name="idproducto" ><br />
<input type="submit" value="enviar" />
<input type="reset" value="borrar" />
</form>
</body>
</html>

modificaproducto.php

<html>
<head>
<title> Modificacion de datos de un Producto</title>
</head>
<body>
<?php
$host="localhost";
$usuario="root";
$password="";
$db="empresa";
$c=mysql_connect($host,$usuario,$password) or die("Error:" . mysql_error());
mysql_select_db($db,$c) or die("Error ". mysql_error());

$idproducto=$_POST["idproducto"];

if(isset($_POST["modificar"]))
{
$descripcion=$_POST["descripcion"];
$precio=$_POST["precio"];
$stock = $_POST["stock"];
$consulta = "UPDATE producto SET descripcion='$descripcion', precio=$precio,
stock=$stock where idproducto='$idproducto' ";

$resultado=mysql_query($consulta,$c);
if($resultado)
echo "<center><I> Datos actualizados </I><center>";
}
else
{
$consulta="select * from producto where idproducto='$idproducto'";
$resultado=mysql_query($consulta,$c);

// comprobacion de la existencia de algun registro resultado

if(mysql_num_rows($resultado))
{
// se recupera el registro resultado en array
$registro=mysql_fetch_row($resultado);

mostrarpagina($registro);
}
else
echo "<h2 align=center> Contraseña incorrecta</h2>";
}
mysql_close($c);
?>

<?php
function mostrarpagina($datos)
{
echo "<form action=modificaproducto.php method=post>";
echo "<table width=80% border bgcolor=##99CCFF>
<tr>
<th bgcolor=cyan>idProducto</th>
<td> $datos[0] </td>
</tr>
<tr>
<th bgcolor=cyan>descripcion</th>
<td> <input type=text size=50 name=descripcion value='$datos[1]'></td>
</tr>
<tr>
<th bgcolor=cyan>precio</th>
<td> <input type=text size=50 name=precio value=$datos[2]></td>
</tr>
<tr>
<th bgcolor=cyan>stock</th>
<td> <input type=text size=50 name=stock value=$datos[3]></td>
</tr>
</table>";
echo " <input type=hidden name=modificar value=1>
<input type=hidden name=idproducto value=$datos[0]>
<br><input type=submit value=Actualizar>
</form> ";
}
?>

<hr>
<div align="justify"><a href="formularioModificaProducto.html"> Volver a modificar </a>
</div>
</body>
</html>

You might also like