Вы находитесь на странице: 1из 30

1

Acceso a bases de datos MySQL desde la Web con PHP


PARTE 1 El lenguaje de programacin PHP
Introduccin
PHP (PHP Hypertext Pre-processor) es en lenguaje interpretado que se ejecuta del lado
del servidor, y est diseado especficamente para la WEB. Junto con una pgina HTML,
se puede incrustar cdigo PHP el cual se ejecutar cada vez que la pgina sea visitada.
El cdigo PHP que se ejecuta del lado del servidor genera una salida HTML o de algn
otro tipo, la cual es la que ve el usuario como resultado.
PHP es un proyecto Open Source, lo que significa que se tiene acceso al cdigo fuente
y se puede usar, modificar y redistribuir sin costo.
PHP tiene conexiones nativas disponibles para muchos sistemas de bases de datos.
Adems de MySQL, se puede conectar directamente a PostgreSQL, Oracle, dBm,
FilePro, DB2, Hyperwave, Informix, InterBase, y las bases de datos de Sybase entre
otros.
Debido a que PHP fue diseado para su uso en la Web, es que tiene muchas funciones
integradas para realizar ciertas tareas. Por ejemplo, se pude conectarse a servicios web
y otros servicios de red, se pueden realizar anlisis sintcticos de archivos XML, enviar
correo electrnico, trabajar con cookies o generar documentos PDF.

Son tres los elementos necesarios para programar y tener acceso a la base de datos
desde la Web.

Manejador de base de datos


Lenguaje de programacin
Servidor web

Una forma prctica de trabajar las bases de datos utilizando el concepto del lado del
servidor, es utilizar un paquete que contenga los tres programas necesarios en la
computadora con la que se programarn tanto las bases de datos, como el servidor
web. En ste manual se trabaja con el software wamp. wamp contiene al manejador
de bases de datos MySQL, las extensiones PHP y al servidor web Apache.

ISC ISRAEL ESTRADA CORTS

2
Tambin es recomendable tener instalado un editor de texto, que sea capaz de
reconocer cdigo PHP y HTML para simplificar la codificacin de los programas, en este
caso se utiliza el editor Notepad++, el cual nos sirve para escribir, tanto el cdigo
HTML como el cdigo PHP.
Una vez que se tiene instalado el software necesario, para la creacin de las pginas
web con cdigo PHP, se debe primero iniciar el programa wamp, si el servidor se
ejecuta sin problemas, en la barra de tareas se mostrar el icono de wamp en color
verde.

Tambin debemos elegir en donde se almacenarn las pginas web que vamos a
mostrar con apache, si utilizamos wamp, debemos guardar las paginas creadas en la
ruta por defecto, en una instalacin tpica la ruta es C:\wamp\www dentro de esta
carpeta podemos organizar a travs de subcarpetas todos los proyectos que vamos
creando.
Programa Hola Mundo
El cdigo PHP debe estar incrustado en el cdigo HTML. Para crear nuestro primer
programa, usamos el editor de texto para ingresar el siguiente cdigo:

Guardamos el archivo con el nombre hola_mundo.php. El cdigo PHP se encuentra


dentro de las etiquetas <?php ?>
En
el
navegador
abrimos
la
ubicacin
localhost\cursophp\ejercicio1\hola_mundo.php

Variables y comentarios

ISC ISRAEL ESTRADA CORTS

del

archivo,

en

este

caso:

3
Ahora vamos a crear otro archivo en una carpeta llamada ejercicio2, el nombre del
archivo va a ser index.php. Es l escribimos el siguiente cdigo.

La salida en el navegador es:

Debido a que el archivo PHP tiene el nombre index, no es necesario escribirlo en la


barra de direcciones, ya que el navegador buscar y ejecutar el archivo llamado index
en caso de existir.

Flujo de ejecucin
En principio los lenguajes interpretados como PHP se ejecutan lnea a lnea de arriba
abajo. Ese es el flujo normal de ejecucin, es importante conocer que este flujo de
ejecucin puede modificarse para diversos propsitos. Algunas instrucciones tales
como los condicionales o las funciones, alteran el flujo de ejecucin. A continuacin
vamos a crear un archivo llamado flujo_ejecucion.php para mostrar lo anterior.

ISC ISRAEL ESTRADA CORTS

Tambin es posible apartar el cdigo de una funcin y tenerlo en su propio bloque de


instrucciones PHP en el mismo archivo o en un archivo separado. Si se desea tener el
cdigo de la funcin en un bloque separado en el mismo archivo se podra reescribir el
programa anterior de la siguiente manera.

Si se quiere tener al cdigo de la funcin en un archivo separado, se debe crear un


archivo PHP que contenga el cdigo de la funcin e incluirlo en el programa principal.
En este caso creamos un archivo llamado escribir.php

ISC ISRAEL ESTRADA CORTS

Ahora desde el programa principal lo incluimos.

En cualquiera de los casos la salida del archivo es el mismo.

mbito de las variables


Es importante conocer el mbito que tiene las variables al programar en PHP, ya que
como vimos en el ejemplo anterior, es posible incluir cdigo PHP que se encuentra en
otro archivo separado, y se puede dar el caso en que en ambos archivos se tengan
variables con el mismo nombre y realicen acciones diferentes.
Vamos a crear un archivo PHP llamado variables.php y en l escribimos el siguiente
cdigo.

Al ejecutar el programa en el navegador, aparece la palabra pedro, es decir, PHP ha


mantenido el valor de la variable a pesar de que antes se ha llamado la funcin en

ISC ISRAEL ESTRADA CORTS

6
donde se reasigna el valor. Esto sucede, porque PHP
variables existen: local, global y sper global.

tiene tres mbitos en los que las

En el cdigo anterior, la variable $nombre es local al archivo variables.php y la variable


$nombre que est dentro de la funcin no tiene nada que ver con la variable $nombre
que est fuera de la funcin. PHP trata a las variables como diferentes.
Vamos a modificar el cdigo del programa de la manera siguiente.

Si ejecutamos el archivo en el navegador, nos marcar un error, ya que desde dentro


de una funcin, no se pueden acceder a datos que se encuentran fuera de la funcin.
Se puede cambiar el mbito de la variable y convertirla en global con el fin de poder
acceder desde dentro de una funcin a datos que estn fuera de la funcin.

Variables estticas

ISC ISRAEL ESTRADA CORTS

7
Vamos a realizar un ejemplo para conocer cmo es que funcionan las variables de tipo
esttico. Creamos un archivo PHP llamado var_estaticas.php con el siguiente cdigo.

Sabemos que el navegador escribe varias veces el nmero 1 principalmente porque


cada vez que llamamos a la funcin, se vuelve a asignar el valor 0. Un aspecto
importante en PHP es que una vez que la funcin termina, los datos de sus variables
locales se destruyen. Si queremos, por ejemplo que en el cdigo anterior, la variable
$contador conserve su valor, solamente debemos declararla como esttica.

Cadenas
Vamos a ver cmo se pueden manipular las variables que contienen cadenas. Creamos
un archivo llamado cadenas.php con el siguiente cdigo.

ISC ISRAEL ESTRADA CORTS

Operadores de comparacin
Vamos a ver cmo se pueden comparar datos que el usuario introduce, y realizar
alguna accin con los mismos. Para esto creamos un nuevo archivo PHP llamado
comparaciones.php y escribimos en siguiente cdigo.

ISC ISRAEL ESTRADA CORTS

<html>
<head>
<meta charset="utf-8">
<title>Comparaciones</title>
<style>
h1{
text-align:center;
}
table{

background-color:#FFC;
padding:5px;
border:#666 5px solid;

</style>
</head>
<body>
<h1>OPERADORES DE COMPARACIN</h1>
<form action="validacion.php" method="post" name="datos_usuario" id="datos_usuario">
<table width="15%" align="center">
<tr>
<td>Nombre:</td>
<td><label for="nombre_usuario"></label>
<input type="text" name="nombre_usuario" id="nombre_usuario"></td>
</tr>
<tr>
<td>Edad:</td>
<td><label for="edad_usuario"></label>
<input type="text" name="edad_usuario" id="edad_usuario"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="enviando" id="enviando"
value="Enviar"></td>
</tr>
</table>
</form>
</body>
</html>

Al ejecutar el cdigo en el navegador, obtenemos un formulario en el cual el usuario


introduce datos antes de presionar el botn enviar.

ISC ISRAEL ESTRADA CORTS

10
El cdigo captura el nombre y la edad que el usuario escribe y lo enva a procesar en
un archivo PHP separado. Vamos a crear el segundo archivo PHP llamado
validacin.php y escribimos el siguiente cdigo.
<style>

</style>

.no_validado
{
font-size:18px;
color:#F00;
font-weight:bold;
}
.validado
{
font-size:18px;
color:#0C3;
font-weight:bold;
}

<?php
if (isset($_POST["enviando"]))
{
$usuario=$_POST["nombre_usuario"];
$edad=$_POST["edad_usuario"];
if($usuario == "israel" && $edad==25)
{
echo "<p class = \"validado\" > Puedes entrar</p>";
}
else
{
echo "<p class = \"no_validado\" > No Puedes entrar</p>";
}
}
?>

Operadores aritmticos
Vamos a realizar un ejercicio para conocer los operadores aritmticos en php, primero
creamos un archivo PHP llamado ejemplo_operadores.php.
Dentro de l escribimos el siguiente cdigo:

ISC ISRAEL ESTRADA CORTS

11

<html>
<head>
<meta charset="utf-8">
<title>Documento sin ttulo</title>
</head>
<body>
<p>&nbsp;</p>
<form name="form1" method="post" action="">
<p>
<label for="num1"></label>
<input type="text" name="num1" id="num1">
<label for="num2"></label>
<input type="text" name="num2" id="num2">
<label for="operacion"></label>
<select name="operacion" id="operacion">
<option>Suma</option>
<option>Resta</option>
<option>Multiplicacin</option>
<option>Divisin</option>
<option>Mdulo</option>
</select>
</p>
<p>
<input type="submit" name="button" id="button" value="Enviar" onClick="prueba">
</p>
</form>
<p>&nbsp;</p>
<?php
if(isset($_POST["button"])) //si el usuario ha presionado el boton se ejecuta lo que est dentro de las llaves
{
$numero1=$_POST["num1"];
$numero2=$_POST["num2"];
$operacion=$_POST["operacion"];
if(!strcmp("Suma", $operacion))
{
echo "El resultado es : " . ($numero1+$numero2);
}
if(!strcmp("Resta", $operacion))
{
echo "El resultado es : " . ($numero1-$numero2);
}
if(!strcmp("Multiplicacin", $operacion))
{
echo "El resultado es : " . ($numero1*$numero2);
}
if(!strcmp("Divisin", $operacion))
{
echo "El resultado es : " . ($numero1/$numero2);
}
if(!strcmp("Mdulo", $operacion))
{
echo "El resultado es : " . ($numero1%$numero2);
}
}
?>
</body>
</html>

ISC ISRAEL ESTRADA CORTS

12
Ahora vamos a dividir la aplicacin el dos archivos, un archivo html que contenga el
formulario y otro archivo PHP que sea el encargado de realizar las operaciones. Para
realizarlo vamos a utilizar una funcin con paso de parmetros.
Vamos a crear un nuevo archivo, ahora llamado calculadora.php, del archivo
ejemplo_operadores.php cortamos el cdigo PHP. Pegamos ese cdigo en el archivo
calculadora.php.
Ahora debemos renombrar el archivo ejemplo_operadores.php y lo renombramos
como ejemplo_operadores.html, ya que no contiene cdigo PHP.
Tendremos entonces dos archivos, ejemplo_operadores.html y calculadora.php.

ejemplo_operadores.html
<html>
<head>
<meta charset="utf-8">
<title>Documento sin ttulo</title>
</head>
<body>
<p>&nbsp;</p>
<form name="form1" method="post" action="calculadora.php">
<p>
<label for="num1"></label>
<input type="text" name="num1" id="num1">
<label for="num2"></label>
<input type="text" name="num2" id="num2">
<label for="operacion"></label>
<select name="operacion" id="operacion">
<option>Suma</option>
<option>Resta</option>
<option>Multiplicacin</option>
<option>Divisin</option>
<option>Mdulo</option>
</select>
</p>
<p>
<input type="submit" name="button" id="button" value="Enviar" onClick="prueba">
</p>
</form>
<p>&nbsp;</p>
</body>
</html>

Calculadora.php
<?php
if(isset($_POST["button"])) //si el usuario ha presionado el botn se ejecuta lo que est dentro de las llaves
{
$numero1=$_POST["num1"];
$numero2=$_POST["num2"];
$operacion=$_POST["operacion"];
calcular($operacion);
}
function calcular($calculo)
{

ISC ISRAEL ESTRADA CORTS

13
if(!strcmp("Suma", $calculo))
{
global $numero1;
global $numero2;
echo "El resultado es : " . ($numero1+$numero2);
}
if(!strcmp("Resta", $calculo))
{
global $numero1;
global $numero2;
echo "El resultado es : " . ($numero1-$numero2);
}
if(!strcmp("Multiplicacin", $calculo))
{
global $numero1;
global $numero2;
echo "El resultado es : " . ($numero1*$numero2);
}
if(!strcmp("Divisin", $calculo))
{
global $numero1;
global $numero2;
echo "El resultado es : " . ($numero1/$numero2);
}
if(!strcmp("Mdulo", $calculo))
{
global $numero1;
global $numero2;
echo "El resultado es : " . ($numero1%$numero2);
}
}
?>

Funciones matemticas y casting


<html>
<head>
<meta charset="utf-8">
<title>Casting</title>
<body>
<?php
$numero=rand();
echo "El numero aleatorio es :" . $numero;
print"<br>";
$numero=rand(1,50);
echo "El numero aleatorio entre 1 y 50 es :" . $numero;
print"<br>";
$numero=pow(5,3);
echo "El numero elevado es :" . $numero;
print"<br>";
$numero=$numero=3.141592654;
echo "El numero redondeado es :" . round($numero,2);
print"<br>";
// el casting en php es implicito

ISC ISRAEL ESTRADA CORTS

14

$num="5";
$num++;
echo "El num es : " . $num;
print"<br>";
// casting explicito
$num2="5";
$resultado=(int)$num2;
echo "el resultado es : " . $resultado;
?>
</body>
</head>
</html>

Operadores condicionales
Estructura IF
Vamos a crear un archivo nuevo en PHP llamado ejemplo_condicionales.php en el
cual escribimos el siguiente cdigo:
<html>
<head>
<meta charset="utf-8">
<title>CONDICIONALES</title>
</head>
<body>
<h1>USANDO CONDICIONALES</h1>
<form action="validacion_condicionales.php" method="post" name="datos_usuario" id="datos_usuario">
<table width="15%" align="center">
<tr>
<td>Nombre:</td>
<td><label for="nombre_usuario"></label>
<input type="text" name="nombre_usuario" id="nombre_usuario"></td>
</tr>
<tr>
<td>Edad:</td>
<td><label for="edad_usuario"></label>
<input type="text" name="edad_usuario" id="edad_usuario"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="enviando" id="enviando"
value="Enviar"></td>
</tr>
</table>
</form>
</body>
</html>

El cdigo anterior necesita de un segundo archivo llamado validacin_condicional.php


con el siguiente cdigo:

<?php

ISC ISRAEL ESTRADA CORTS

15

if(isset($_POST["enviando"]))
{
$edad = $_POST["edad_usuario"];
if($edad <= 18)
{
echo "eres menor de edad";
}
else if ($edad<=40)
{
echo "eres joven";
}
else if($edad<=65)
{
echo "Eres adulto";
}
else
{
echo "adulto mayor";
}
}
?>

EJERCICIO
Realizar los cambios necesarios en los programas anteriores, para que sirva como un
programa que pida un nombre de usuario y un password e indique si puede o no entrar
dependiendo de los datos que ya tenemos almacenados en variables, utilizando IF
Estructura SWITCH CASE

Para mostrar el uso de la estructura switch vamos a crear una programa que autorice o
no el acceso mediante el nombre de un usuario y password. Vamos a crear dos
archivos, el primer llamado ejemplo_switch.php y el segundo llamado
validacin_switch.php
A continuacin se muestra el cdigo de cada una de ellos.
ejemplo_switch.php
<html>
<head>
<meta charset="utf-8">
<title>Uso del switch</title>
<style>
h1{
text-align:center;
}
table{

ISC ISRAEL ESTRADA CORTS

16
background-color:#FFC;
padding:5px;
border:#666 5px solid;
}
.no_validado{
font-size:18px;
color:#F00;
font-weight:bold;
}
.validado{
font-size:18px;
color:#0C3;
font-weight:bold;
}
</style>
</head>
<body>
<h1>USANDO SWITCH</h1>
<form action="validacion_switch.php" method="post" name="datos_usuario" id="datos_usuario">
<table width="15%" align="center">
<tr>
<td>Nombre:</td>
<td><label for="nombre_usuario"></label>
<input type="text" name="nombre_usuario" id="nombre_usuario"></td>
</tr>
<tr>
<td>Passwd:</td>
<td><label for="edad_usuario"></label>
<input type="text" name="passwd" id="passwd"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="enviando" id="enviando"
value="Enviar"></td>
</tr>
</table>
</form>
</body>
</html>

validacin_switch.php
<?php
if(isset($_POST["enviando"]))
{
$password = $_POST["passwd"];
$nombre = $_POST["nombre_usuario"];
switch(true)
{
case $nombre == "israel" && $password == "qwerty":
echo "Usuario autorizado. Hola Israel";
break;

ISC ISRAEL ESTRADA CORTS

17
case $nombre == "maria" && $password == "12345":
echo "Usuario autorizado. Hola maria";
break;
case $nombre == "juan" && $password == "qwerty12345":
echo "Usuario autorizado. Hola Juan";
break;
default:
echo "Acceso denegado";
}

}
?>

CICLOS
Ejemplo de los ciclos WHILE, DO WHILE Y FOR.
Los tres tipos bsicos de ciclos de repeticin en la programacin, son el ciclo while, el
ciclo do while y el ciclo for.
Los tres ciclos sirven para repetir un conjunto de instrucciones, pero lo hacen de tres
maneras distintas. Los ciclos constan de tres partes, primero inicializar una variable
para controlar el ciclo, una condicin para saber si se entra o no al bloque de
instrucciones y por ltimo se debe incrementar o decrementar la variable de control
ara que el ciclo termine en algn momento.
<html>
<head>
<meta charset="utf-8">
<title>Ciclo while</title>
<body>
<?php
$variable=1;
while($variable<6)
{
echo"Dentro del ciclo while<br>";
$variable++;
}
echo "Fuera del ciclo while<br>";
$variable2=1;
do{
echo "Dentro del ciclo do<br>";
$variable2++;
}while ($variable2<6);
echo "Fuera del ciclo do<br>";
for($i=0; $i<10; $i++)
{
echo "dentro del ciclo valor de i: $i<br>";
}
?>
</body>
</head>
</html>

ISC ISRAEL ESTRADA CORTS

18
PASO DE PARMETROS POR VALOR Y POR REFERENCIA
Las funciones son equivalentes a una sub rutina o a un procedimiento. Una funcin
provee y una forma conveniente de encapsular algunos clculos que se pueden
emplear despus. Con funciones diseadas adecuadamente se puede ignorar cmo se
realiza un trabajo, es suficiente saber qu se hace.
Para que las funciones puedan realizar su trabajo pueden requerir que se le enven los
datos con los que va a realizar sus clculos. A esta accin se le llama paso de
parmetros. Los parmetros son los valores con los cuales va a realizar sus clculos,
normalmente se le enva a travs de variables. A este paso de variables o paso de
parmetros puede realizarse de dos formas diferentes.
Paso de parmetros por valor
El paso de parmetros por valor, significa que la funcin que se invoca recibe los
valores de sus argumentos en variables temporales y no en las originales, por lo tanto
la funcin que se invoca no puede alterar directamente una variable de la funcin que
hace la llamada; slo puede modificar su copia privada y temporal.
<html>
<head>
<meta charset="utf-8">
<title>parametros</title>
<body>
<?php
function incrementa($valor1)
{
$valor1++;
return $valor1;
}
echo incrementa(5);
//----------------------------echo"<br>";
$numero=5;
echo incrementa($numero);
echo"<br>";
echo "$numero";
echo"<br>";
?>
</body>
</head>
</html>

Paso de parmetros por referencia


La referencia indica trabajar sobre la direccin de memoria que ocupa el parmetro o
variable original. El argumento de la funcin receptora, presenta el operador unario &
precediendo al nombre de la variable. Esto indica que se tome la direccin del
parmetro hacia el argumento, produciendo un espejo o alias de la variable original, lo
cual significar, que toda alteracin producida sobre el argumento, afectar a la
variable original.
<html>
<head>
<meta charset="utf-8">
<title>parametros</title>
<body>
<?php
//paso de parametros por refencia
echo"----paso de parametros por referencia----<br>";
function incrementa2(&$valor1)

ISC ISRAEL ESTRADA CORTS

19
{
$valor1++;
return $valor1;
}
$numero2=5;
echo incrementa2($numero2);
echo"<br>";
echo "$numero2";
echo"<br>";
?>
</body>
</head>
</html>

Programacin orientada a objetos en PHP

ISC ISRAEL ESTRADA CORTS

20

Objeto
Tiene propiedades (atributos)
Color
Peso
Alto
Ancho
Tiene un comportamiento (Qu es capaz de hacer?)
Arrancar
Frenar
Girar
Acelerar
Clase
Una clase es un modelo en donde se redactan las caractersticas comunes de un grupo
de objetos
Instancia
Ejemplar perteneciente a una clase.
Una clase se define con la palabra reservada class y el nombre de la clase, ejemplo
class Coche{
}

Una instancia se define con la palabra reservada new, ejemplo


$renault= new Coche();

Para asignar propiedades o atributos a una clase se realiza colocando dentro de la


clase con la usando variables y con la palabra reservada var. Ejemplo
class Coche{

var $llantas;
var $color;
var $motor;
}

Para definir un comportamiento (Qu es capaz de hacer?) de un objeto se realiza a


travs de funciones, cuando dentro de una clase se define una funcin, se llama crear
un mtodo. Mtodo y funcin son sinnimos siempre y cuando est definida dentro de
una clase.

function arrancar ()//estos mtodos no son constructores


{
echo "El coche est arrancando<br>";
}
function frenar ()
{
echo "El coche est frenando<br>";
}
function girar ()
{
echo "El coche est girando<br>";

ISC ISRAEL ESTRADA CORTS

21
}

Un objeto siempre tiene un estado inicial, es decir, las caractersticas iniciales del
objeto. Se crea una funcin o mtodo especial llamado mtodo constructor. El
mtodo constructor debe tener el mismo nombre de la clase. Dentro del mtodo
constructor se definen las caractersticas iniciales del objeto con la palabra reservada
this y el smbolo ->
function Coche()//mtodo constructor
{

$this-> llantas=4;
$this->color="";
$this->motor=1600;

Si queremos que una de nuestras instancias realice un comportamiento definido en


un mtodo, por ejemplo que el mazda gire, se debe hacer una llamada a un mtodo:
$mazda-> girar();

Si queremos preguntarle a la instancia Mazda cuantas llantas tiene


echo $mazda-> llantas;

Para comprobar hasta el momento, stos conceptos bsicos de la programacin


orientada a objetos, a continuacin se presenta el cdigo completo:
<html>
<head>
<meta charset="utf-8">
<title>programacion orientada a objetos</title>
<body>
<?php
class Coche{
var $llantas;
var $color;
var $motor;
function Coche()//metodo constructor
{
$this-> llantas=4;//estado inicial del objeto
$this->color=" ";
$this->motor=1600;
}
function arrancar ()//estos metodos no son constructores
{
echo "El coche est arrancando<br>";
}

}
$renault= new Coche();
$mazda=new Coche();
$seat=new Coche();
$mazda-> girar();
echo $mazda-> llantas;
?>
</body>
</head>
</html>

ISC ISRAEL ESTRADA CORTS

function frenar ()
{
echo "El coche est frenando<br>";
}
function girar ()
{
echo "El coche est girando<br>";
}

22
Llamada a mtodos con parmetros
En el ejemplo anterior, el mtodo constructor tiene la propiedad color sin definir, para
poder dar un color a las instancias que vamos creando, podemos crear un mtodo que
reciba un color y que despus asigne ese argumento a la propiedad color. Este mtodo
debe estar dentro de la clase.
function establece_color($color_coche)
{
$this->color=$color_coche;
echo "el color de este coche es: " . $this->color;
}

Llamada a la funcin
$renault->establece_color("rojo");

Podemos pasar dos argumentos a la funcin para saber a qu coche establecimos el


color.
function establece_color($color_coche, $nombre_coche)
{
color=$color_coche $this->;
echo "el color de este coche " . $nombre_coche . " es: " . $this->color . "<br>";
}

Llamada a la funcin
$mazda->establece_color ( "verde", "mazda");

Ahora vamos a reutilizar el cdigo.


Creamos dos archivos separados, el primero lo llamamos vehiculos.php y otro
llamado principal.php
Cdigo del archivo vehculos.php
<?php
//----------------clase coches------------------------------------------class Coche{
var $llantas;
var $color;
var $motor;
function Coche()//metodo constructor
{
$this-> llantas=4;//estado inicial del objeto
$this->color="";
$this->motor=1600;
}
function arrancar ()//estos metodos no son constructores
{
echo "El coche est arrancando<br>";
}
function frenar ()
{
echo "El coche est frenando<br>";
}
function girar ()
{
echo "El coche est girando<br>";
}
function establece_color($color_coche, $nombre_coche)
{
$this->color=$color_coche;
echo "el color de este coche " . $nombre_coche . " es: " . $this->color . "<br>";
}

ISC ISRAEL ESTRADA CORTS

23
}
//----------------------------clase camion----------------------------------class Camion{
var $llantas;
var $color;
var $motor;
function Camion()//metodo constructor
{
$this-> llantas=8;//estado inicial del objeto
$this->color="";
$this->motor=2600;
}
function arrancar ()//estos metodos no son constructores
{
echo "El camion est arrancando<br>";
}
function frenar ()
{
echo "El camion est frenando<br>";
}
function girar ()
{
echo "El camion est girando<br>";
}
function establece_color($color_coche, $nombre_coche)
{
$this->color=$color_coche;
echo "el color de este coche " . $nombre_coche . " es: " . $this->color . "<br>";
}
?>

Cdigo del archivo principal.php


<html>
<head>
<meta charset="utf-8">
<title>programacion orientada a objetos</title>
<body>
<?php
include("vehiculos.php");
$mazda=new Coche();
$dina=new Camion();
echo "El mazda tiene " . $mazda->llantas . " llantas <br>";
echo "El dina tiene " . $dina->llantas . " llantas <br>";
?>
</body>
</head>
</html>

ISC ISRAEL ESTRADA CORTS

24
HERENCIA
La herencia es una caracterstica para reutilizar cdigo. Si tenemos tres clases y queremos aprovechar las
variables y mtodos de la clase1, la clase 2 se puede heredar esas propiedades, y la clase 3 tambin puede
heredar de la clase 2 y a su vez de la clase 3.

Cuando la clase 2 hereda de la clase 1, se dice que la clase 2 es una sub clase y la clase 1 es la sper clase.
La sintaxis en PHP para la herencia es:
Class_1{}
Class_2 extends class_1{}
Class_3 extends class_2{}
Vamos a modificar el archivo vehculos.php, de tal manera que la clase camin quede asi:
class Camion extends Coche{
function Camion()//metodo constructor
{
$this-> llantas=8;//estado inicial del objeto
$this->color="";
$this->motor=2600;
}
}
Ahora, en la clase Camin no tenemos que declarar las variables y los mtodos, ya que stos son heredados
de la Coche. Tambin es posible modificar algunos de los mtodos heredados, con el fin de adaptarlos a la
clase, por ejemplo, vamos a re escribir la funcin o mtodo establece_color.
Aunque al heredar de la clase Coche, la clase Camion ya cuenta con el mtodo establece_color, vamos a
sobrescribirlo para que se comporte adecuadamente.
class Camion extends Coche{
function Camion()//metodo constructor
{
$this-> llantas=8;//estado inicial del objeto
$this->color="";
$this->motor=2600;
}
function establece_color($color_camion, $nombre_camion)
{
echo "El color del camion " . $nombre_camion . " es: " . $color_camion .
"<br>";
}
}

ISC ISRAEL ESTRADA CORTS

25
La sobre escritura de mtodos, permite volver a definir le mtodo de tal forma que el
cdigo detecta el tipo de objeto y puede hacer la llamada adecuada. La llamada desde
el archivo principal es
$dina-> establece_color("rojo","dina");
Tambin es posible agregar ms lneas de cdigo a un mtodo heredado con la
instruccin parent. Esta instruccin manda a ejecutar todas las lneas de cdigo de la
clase padre y una vez que termina regresa a la llamada y contina con las lneas que
pueda haber.
function arrancar ()
{
echo "Estoy arrancando<br>";
}

function arrancar()
{
parent :: arrancar();
echo "El camin est
arrancando";
}

MODIFICADORES DE ACCESO
El cdigo de un programa debe de ser escrito de manera que sea modular, es decir,
separar el cdigo en segmentos los cuales tienen una funcin bien definida, esto evita
tener un cdigo muy complejo y extenso. Estos mdulos deben poder comunicarse
entre ellos para funcionar todos como una sola unidad. Debido a que las diferentes
clases tienen mtodos que pueden o no ser utilizados por otras clases, debe haber una
forma de encapsular los mtodos y tener el control de acceso a los mtodos desde
otras clases.

Para ejemplificar la encapsulacin vamos a revisar el archivo vehculos, en el cual,


definimos el mtodo constructor de la clase Coche y le indicamos que tiene 4 llantas.
Todos los objetos creados de la clase Coche tendrn pues 4 llantas como valor inicial.
Lo normal sera que este valor no cambiara, sin embargo, si no utilizamos la
encapsulacin un programador podra cambiar sta propiedad.

ISC ISRAEL ESTRADA CORTS

26
Si modificamos el archivo principal, y despus de haber creado el objeto Mazda, le
decimos que tiene 7 llantas, el valor si cambia.
<html>
<head>
<meta charset="utf-8">
<title>programacion orientada a objetos</title>
<body>
<?php
include("vehiculos.php");
$mazda=new Coche();
$dina=new Camion();
$mazda->llantas=7;
echo "El mazda tiene " . $mazda->llantas . " llantas <br>";
echo "El dina tiene " . $dina->llantas . " llantas <br>";
$dina-> establece_color("rojo","dina");
$dina-> arrancar();
?>
</body>
</head>
</html>

Aunque en el mtodo constructor de clase Coche definimos la propiedad llantas=4, si


en el archivo principal agregamos la lnea
$mazda->llantas=7; la salida en el
navegador toma ese cambio.
Entonces, debemos encapsular la propiedad llantas de la clase Coche para que no
pueda ser cambiada, para hacerlo debemos agregar la palabra reservada private a la
propiedad llantas en la declaracin de la clase.
private $llantas;
Si despus de utilizar la encapsulacin, queremos acceder a la propiedad privada
llantas desde el archivo principal con la lnea $mazda->llantas=7; el navegador
mostrar un error.

Por lo tanto no debemos tratar de modificar la propiedad llantas desde el archivo


principal.php. Quitando la lnea $mazda->llantas=7; debera de funcionar bien el
cdigo, sin embargo, aunque eliminemos la lnea $mazda->llantas=7; el navegador

ISC ISRAEL ESTRADA CORTS

27
sigue marcando un error, por que el archivo principal.php trata de imprimir la cantidad
de llantas de los objetos con las lneas:
echo "El mazda tiene " . $mazda->llantas . " llantas <br>";
echo "El dina tiene " . $dina->llantas . " llantas <br>";

Pero como ahora la propiedad llantas es privada, no la puede usar ni siquiera para
imprimir.
Para poder acceder a mtodos que estn encapsulados, se utilizan los mtodos getter
y setter. Setter sirve para modificar las propiedades encapsuladas, getter sirve para
poder ver las propiedades encapsuladas.
Por lo tanto las lneas
echo "El mazda tiene " . $mazda->llantas . " llantas <br>";
echo "El dina tiene " . $dina->llantas . " llantas <br>";

del archivo principal.php, ya no funcionan.


Para poder acceder a ellas, debemos crear un mtodo getter en la clase Coche del
archivo vehculos.php despus del mtodo constructor.
function get_llantas()
{
return $this->llantas;
}

Y ahora borramos las lneas


echo "El mazda tiene " . $mazda->llantas . " llantas <br>";
echo "El dina tiene " . $dina->llantas . " llantas <br>";

del archivo principal.php y las sustituimos por:


echo "El mazda tiene " . $mazda->get_llantas() . " llantas <br>";
echo "El dina tiene " . $dina->get_llantas() . " llantas <br>";

Al guardar los cambios y ejecutar en el navegador, obtenemos la salida siguiente:

Aparentemente, est funcionando bien, sin embargo, al querer imprimir el nmero de


llantas del objeto camin, no aparece el valor, ya que, aunque la clase Camion hereda
las propiedades de la clase Coche, el mtodo get_llantas est definido en la clase
Coche. Para solucionarlo, la variable $llantas se debe establecer como protected y no
como private.

ISC ISRAEL ESTRADA CORTS

28
El cdigo completo de los dos archivos se muestra a continuacin:

Principal.php
<html>
<head>
<meta charset="utf-8">
<title>programacion orientada a objetos</title>
<body>
<?php
include("vehiculos.php");
$mazda=new Coche();
$dina=new Camion();
//$mazda->llantas=7;
//echo "El mazda tiene " . $mazda->llantas . " llantas <br>";
//echo "El dina tiene " . $dina->llantas . " llantas <br>";
echo "El mazda tiene " . $mazda->get_llantas() . " llantas <br>";
echo "El dina tiene " . $dina->get_llantas() . " llantas <br>";
$dina-> establece_color("rojo","dina");
$dina-> arrancar();
?>
</body>
</head>
</html>

vehiculos.php
<?php
//----------------clase coches------------------------------------------class Coche{
protected $llantas;
var $color;
var $motor;
function Coche()//metodo constructor
{
$this-> llantas=4;//estado inicial del objeto
$this->color="";
$this->motor=1600;
}
function get_llantas()
{
return $this->llantas;
}
function arrancar ()//estos metodos no son constructores
{
echo "Estoy arrancando<br>";
}
function frenar ()
{
echo "Estoy frenando<br>";
}
function girar ()
{
echo "Estoy girando<br>";
}
function establece_color($color_coche, $nombre_coche)
{
$this->color=$color_coche;
echo "el color de este coche " . $nombre_coche . " es: " . $this->color . "<br>";
}
}
//----------------------------clase camin hereda de la clase coche ----------------------------------class Camion extends Coche{
function Camion()//metodo constructor
{
$this-> llantas=8;//estado inicial del objeto
$this->color="";
$this->motor=2600;

ISC ISRAEL ESTRADA CORTS

29
}
function establece_color($color_camion, $nombre_camion)
{
echo "El color del camion " . $nombre_camion . " es: " . $color_camion . "<br>";
}
function arrancar()
{
parent :: arrancar();
echo "El camin est arrancando";
}
} ?>

PARTE 2 ACCESO A BASES DE DATOS


El acceso a una base de datos MySQL desde el lenguaje PHP se necesitan 4 datos:

Direccin de la base de datos


Usuario de la base de datos
Contrasea del usuario
Nombre de la base de datos

Al trabajar de manera local con wamp server, los datos de conexin por ejemplo, son:

Direccin de la base de datos:


Usuario de la base de datos:
Contrasea del usuario
:
Nombre de la base de datos:

localhost
root
hola
proveedor

Existen dos formas de conectarse a la base de datos para obtener informacin de las
tablas.

Si se utiliza programacin orientada a objetos, se debe usar la clase Mysqli con todas
sus funciones y procedimientos. Si se utiliza el mtodo por procedimientos, se deben
usar la funcin mysqli_connect.
CONEXIN A LA BASE DE DATOS
Creamos un archivo nuevo llamado conexion.php, en donde almacenamos en
variables los 4 datos necesarios para la conexin y una variable para mandar llamar la
funcin de conexin a la base de datos, a esa funcin le mandamos las variables antes
creadas.
Es importante que al mandarle las variables para la conexin, lo hagamos siguiendo el
orden: (Direccin de la base de datos, Usuario de la base de datos,
Contrasea del usuario la base de datos, Nombre de la base de datos).
Para este primer ejemplo vamos a utilizar cuatro variables ms:

ISC ISRAEL ESTRADA CORTS

30

$conexion: se utiliza para mandarle los parmetros de conexin a la funcin:


mysqli_connect
$consulta: Se utiliza para escribir la consulta SQL
$resultado: Es un conjunto de resultados (recordset) una tabla virtual que
contiene en memoria, lo que devuelve la consulta.
$tupla: Se utiliza para mirar dentro del recordset. $tupla es realmente un
arreglo.

<html>
<head>
< m e t a c h a r s e t = " u t f- 8 " >
<title>Conexion a la base de datos</title>
<body>
<?php
//datos de conexion
$db_host="localhost";
$db_usuario="root";
$db_passwd=" ";
$db_nombre="proveedor";
// variable para la conexion
$conexion=mysqli_connect($db_host,$db_usuario,$db_passwd,$db_nombre);
// variable para la consulta
$consulta="SELECT * FROM proveedor";
//variable para los resultados
$resultado=mysqli_query($conexion,$consulta);
//en este caso $tupla es un arreglo
$tupla=mysqli_fetch_row($resultado);
echo $tupla[0] . " ";
echo $tupla[1] . " ";
echo $tupla[2] . " ";
echo $tupla[3] . " ";
echo $tupla[4] . " ";
echo $tupla[5] . " ";
?>
</body>
</head>
</html>

ISC ISRAEL ESTRADA CORTS

Вам также может понравиться