1

Acceso a bases de datos MySQL desde la Web con PHP
PARTE 1 El lenguaje de programación PHP
Introducción
PHP (PHP Hypertext Pre-processor) es en lenguaje interpretado que se ejecuta del lado
del servidor, y está diseñado específicamente para la WEB. Junto con una página HTML,
se puede incrustar código PHP el cual se ejecutará cada vez que la página sea visitada.
El código PHP que se ejecuta del lado del servidor genera una salida HTML o de algún
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 código fuente
y se puede usar, modificar y redistribuir sin costo.
PHP tiene conexiones nativas disponibles para muchos sistemas de bases de datos.
Además 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 diseñado 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 análisis sintácticos de archivos XML, enviar
correo electrónico, 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 programación
Servidor web

Una forma práctica 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 programarán 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 CORTÉS

2
También es recomendable tener instalado un editor de texto, que sea capaz de
reconocer código PHP y HTML para simplificar la codificación de los programas, en este
caso se utiliza el editor Notepad++, el cual nos sirve para escribir, tanto el código
HTML como el código PHP.
Una vez que se tiene instalado el software necesario, para la creación de las páginas
web con código 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.

También debemos elegir en donde se almacenarán las páginas web que vamos a
mostrar con apache, si utilizamos wamp, debemos guardar las paginas creadas en la
ruta por defecto, en una instalación típica la ruta es C:\wamp\www dentro de esta
carpeta podemos organizar a través de subcarpetas todos los proyectos que vamos
creando.
Programa Hola Mundo
El código PHP debe estar incrustado en el código HTML. Para crear nuestro primer
programa, usamos el editor de texto para ingresar el siguiente código:

Guardamos el archivo con el nombre hola_mundo.php. El código PHP se encuentra
dentro de las etiquetas <?php … ?>
En
el
navegador
abrimos
la
ubicación
localhost\cursophp\ejercicio1\hola_mundo.php

Variables y comentarios

ISC ISRAEL ESTRADA CORTÉS

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 código.

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 ejecución
En principio los lenguajes interpretados como PHP se ejecutan línea a línea de arriba
abajo. Ese es el flujo normal de ejecución, es importante conocer que este flujo de
ejecución puede modificarse para diversos propósitos. Algunas instrucciones tales
como los condicionales o las funciones, alteran el flujo de ejecución. A continuación
vamos a crear un archivo llamado flujo_ejecucion.php para mostrar lo anterior.

ISC ISRAEL ESTRADA CORTÉS

php ISC ISRAEL ESTRADA CORTÉS . Si se desea tener el código de la función en un bloque separado en el mismo archivo se podría reescribir el programa anterior de la siguiente manera. Si se quiere tener al código de la función en un archivo separado.4 También es posible apartar el código de una función y tenerlo en su propio bloque de instrucciones PHP en el mismo archivo o en un archivo separado. En este caso creamos un archivo llamado escribir. se debe crear un archivo PHP que contenga el código de la función e incluirlo en el programa principal.

y se puede dar el caso en que en ambos archivos se tengan variables con el mismo nombre y realicen acciones diferentes. PHP ha mantenido el valor de la variable a pesar de que antes se ha llamado la función en ISC ISRAEL ESTRADA CORTÉS . Al ejecutar el programa en el navegador. aparece la palabra pedro. es decir.5 Ahora desde el programa principal lo incluimos.php y en él escribimos el siguiente código. Vamos a crear un archivo PHP llamado variables. es posible incluir código PHP que se encuentra en otro archivo separado. ya que como vimos en el ejemplo anterior. 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.

porque PHP variables existen: local. Vamos a modificar el código del programa de la manera siguiente. nos marcará un error. Se puede cambiar el ámbito de la variable y convertirla en global con el fin de poder acceder desde dentro de una función a datos que están fuera de la función. la variable $nombre es local al archivo variables. tiene tres ámbitos en los que las En el código anterior. ya que desde dentro de una función. Esto sucede. global y súper global. Si ejecutamos el archivo en el navegador. Variables estáticas ISC ISRAEL ESTRADA CORTÉS .php y la variable $nombre que está dentro de la función no tiene nada que ver con la variable $nombre que está fuera de la función. PHP trata a las variables como diferentes. no se pueden acceder a datos que se encuentran fuera de la función.6 donde se reasigna el valor.

Cadenas Vamos a ver cómo se pueden manipular las variables que contienen cadenas. los datos de sus variables locales se destruyen.php con el siguiente código. la variable $contador conserve su valor. Creamos un archivo llamado cadenas. Un aspecto importante en PHP es que una vez que la función termina. Creamos un archivo PHP llamado var_estaticas.php con el siguiente código.7 Vamos a realizar un ejemplo para conocer cómo es que funcionan las variables de tipo estático. por ejemplo que en el código anterior. solamente debemos declararla como estática. Sabemos que el navegador escribe varias veces el número 1 principalmente porque cada vez que llamamos a la función. ISC ISRAEL ESTRADA CORTÉS . Si queremos. se vuelve a asignar el valor 0.

y realizar alguna acción con los mismos. ISC ISRAEL ESTRADA CORTÉS . Para esto creamos un nuevo archivo PHP llamado comparaciones.php y escribimos en siguiente código.8 Operadores de comparación Vamos a ver cómo se pueden comparar datos que el usuario introduce.

} table{ background-color:#FFC. obtenemos un formulario en el cual el usuario introduce datos antes de presionar el botón enviar.9 <html> <head> <meta charset="utf-8"> <title>Comparaciones</title> <style> h1{ text-align:center. padding:5px.</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 código en el navegador. border:#666 5px solid.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. </style> </head> <body> <h1>OPERADORES DE COMPARACIÓN</h1> <form action="validacion. ISC ISRAEL ESTRADA CORTÉS .

} else { echo "<p class = ###BOT_TEXT###quot;no_validado###BOT_TEXT###quot; > No Puedes entrar</p>". if($usuario == "israel" && $edad==25) { echo "<p class = ###BOT_TEXT###quot;validado###BOT_TEXT###quot; > Puedes entrar</p>".php. color:#F00.validado { font-size:18px. } } ?> Operadores aritméticos Vamos a realizar un ejercicio para conocer los operadores aritméticos en php. $edad=$_POST["edad_usuario"]. Vamos a crear el segundo archivo PHP llamado validación. color:#0C3. } . font-weight:bold.php y escribimos el siguiente código. font-weight:bold. <style> </style> .no_validado { font-size:18px. Dentro de él escribimos el siguiente código: ISC ISRAEL ESTRADA CORTÉS .10 El código captura el nombre y la edad que el usuario escribe y lo envía a procesar en un archivo PHP separado. } <?php if (isset($_POST["enviando"])) { $usuario=$_POST["nombre_usuario"]. primero creamos un archivo PHP llamado ejemplo_operadores.

($numero1*$numero2). $operacion)) { echo "El resultado es : " . ($numero1+$numero2). ($numero1/$numero2).11 <html> <head> <meta charset="utf-8"> <title>Documento sin título</title> </head> <body> <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"]. } if(!strcmp("División". } if(!strcmp("Resta". } if(!strcmp("Módulo". $operacion)) { echo "El resultado es : " . ($numero1%$numero2). $operacion)) { echo "El resultado es : " . } if(!strcmp("Multiplicación". } } ?> </body> </html> ISC ISRAEL ESTRADA CORTÉS . $operacion)) { echo "El resultado es : " .</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>Multiplicación</option> <option>División</option> <option>Módulo</option> </select> </p> <p> <input type="submit" name="button" id="button" value="Enviar" onClick="prueba"> </p> </form> <p>&nbsp. if(!strcmp("Suma". ($numero1-$numero2). $operacion=$_POST["operacion"]. $operacion)) { echo "El resultado es : " . $numero2=$_POST["num2"].

ejemplo_operadores. Ahora debemos renombrar el archivo ejemplo_operadores.php.php <?php if(isset($_POST["button"])) //si el usuario ha presionado el botón se ejecuta lo que está dentro de las llaves { $numero1=$_POST["num1"].php cortamos el código PHP.</p> </body> </html> Calculadora. Tendremos entonces dos archivos. } function calcular($calculo) { ISC ISRAEL ESTRADA CORTÉS . calcular($operacion). Pegamos ese código en el archivo calculadora.</p> <form name="form1" method="post" action="calculadora. ya que no contiene código PHP. del archivo ejemplo_operadores. ejemplo_operadores.php y lo renombramos como ejemplo_operadores.html y calculadora. ahora llamado calculadora. $operacion=$_POST["operacion"].php. Para realizarlo vamos a utilizar una función con paso de parámetros.html.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>Multiplicación</option> <option>División</option> <option>Módulo</option> </select> </p> <p> <input type="submit" name="button" id="button" value="Enviar" onClick="prueba"> </p> </form> <p>&nbsp. Vamos a crear un nuevo archivo. un archivo html que contenga el formulario y otro archivo PHP que sea el encargado de realizar las operaciones. $numero2=$_POST["num2"].12 Ahora vamos a dividir la aplicación el dos archivos.html <html> <head> <meta charset="utf-8"> <title>Documento sin título</title> </head> <body> <p>&nbsp.php.

50). global $numero2. $numero=pow(5. ($numero1*$numero2). $calculo)) { global $numero1. echo "El resultado es : " .2). ($numero1/$numero2). echo "El numero aleatorio es :" . ($numero1-$numero2). ($numero1+$numero2). global $numero2. } } ?> Funciones matemáticas y casting <html> <head> <meta charset="utf-8"> <title>Casting</title> <body> <?php $numero=rand(). } if(!strcmp("División". $calculo)) { global $numero1. echo "El numero aleatorio entre 1 y 50 es :" . echo "El numero elevado es :" . $calculo)) { global $numero1. ($numero1%$numero2). echo "El resultado es : " . echo "El resultado es : " . print"<br>". $calculo)) { global $numero1. // el casting en php es implicito ISC ISRAEL ESTRADA CORTÉS . $numero=$numero=3. $numero. $calculo)) { global $numero1. echo "El numero redondeado es :" . global $numero2.13 if(!strcmp("Suma".3). } if(!strcmp("Multiplicación". } if(!strcmp("Resta". round($numero. echo "El resultado es : " . print"<br>". global $numero2. $numero=rand(1. $numero. } if(!strcmp("Módulo".141592654. $numero. print"<br>". echo "El resultado es : " . global $numero2. print"<br>".

?> </body> </head> </html> Operadores condicionales Estructura IF Vamos a crear un archivo nuevo en PHP llamado ejemplo_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. $num.</td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="enviando" id="enviando" value="Enviar"></td> </tr> </table> </form> </body> </html> El código anterior necesita de un segundo archivo llamado validación_condicional. $resultado=(int)$num2.php en el cual escribimos el siguiente código: <html> <head> <meta charset="utf-8"> <title>CONDICIONALES</title> </head> <body> <h1>USANDO CONDICIONALES</h1> <form action="validacion_condicionales.php con el siguiente código: <?php ISC ISRAEL ESTRADA CORTÉS . $resultado. // casting explicito $num2="5". $num++.14 $num="5". echo "el resultado es : " . print"<br>". echo "El num es : " .</td> <td>&nbsp.

el primer llamado ejemplo_switch.php y el segundo llamado validación_switch.15 if(isset($_POST["enviando"])) { $edad = $_POST["edad_usuario"]. Vamos a crear dos archivos. 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. } else { echo "adulto mayor". } } ?> EJERCICIO Realizar los cambios necesarios en los programas anteriores. ejemplo_switch. } else if($edad<=65) { echo "Eres adulto". } table{ ISC ISRAEL ESTRADA CORTÉS . } else if ($edad<=40) { echo "eres joven". 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.php <html> <head> <meta charset="utf-8"> <title>Uso del switch</title> <style> h1{ text-align:center.php A continuación se muestra el código de cada una de ellos. if($edad <= 18) { echo "eres menor de edad".

} </style> </head> <body> <h1>USANDO SWITCH</h1> <form action="validacion_switch.16 background-color:#FFC.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. ISC ISRAEL ESTRADA CORTÉS .no_validado{ font-size:18px. padding:5px. break. border:#666 5px solid. font-weight:bold. Hola Israel". color:#F00. color:#0C3.validado{ font-size:18px. font-weight:bold.php <?php if(isset($_POST["enviando"])) { $password = $_POST["passwd"].</td> <td>&nbsp. } . switch(true) { case $nombre == "israel" && $password == "qwerty": echo "Usuario autorizado. } .</td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="enviando" id="enviando" value="Enviar"></td> </tr> </table> </form> </body> </html> validación_switch. $nombre = $_POST["nombre_usuario"].

default: echo "Acceso denegado". el ciclo do while y el ciclo for. } echo "Fuera del ciclo while<br>". $variable++. $i++) { echo "dentro del ciclo valor de i: $i<br>". echo "Fuera del ciclo do<br>". <html> <head> <meta charset="utf-8"> <title>Ciclo while</title> <body> <?php $variable=1. break. do{ echo "Dentro del ciclo do<br>". Los ciclos constan de tres partes. Los tres tipos básicos de ciclos de repetición en la programación. $i<10. }while ($variable2<6). case $nombre == "juan" && $password == "qwerty12345": echo "Usuario autorizado. son el ciclo while.17 case $nombre == "maria" && $password == "12345": echo "Usuario autorizado. while($variable<6) { echo"Dentro del ciclo while<br>". $variable2++. break. } } ?> CICLOS Ejemplo de los ciclos WHILE. } ?> </body> </head> </html> ISC ISRAEL ESTRADA CORTÉS . DO WHILE Y FOR. primero inicializar una variable para controlar el ciclo. Hola maria". pero lo hacen de tres maneras distintas. Los tres ciclos sirven para repetir un conjunto de instrucciones. $variable2=1. for($i=0. Hola Juan". una condición 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 algún momento.

echo"<br>". A este paso de variables o paso de parámetros puede realizarse de dos formas diferentes. sólo puede modificar su copia privada y temporal. Los parámetros son los valores con los cuales va a realizar sus cálculos. <html> <head> <meta charset="utf-8"> <title>parametros</title> <body> <?php function incrementa($valor1) { $valor1++. echo incrementa($numero). <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 CORTÉS . return $valor1.18 PASO DE PARÁMETROS POR VALOR Y POR REFERENCIA Las funciones son equivalentes a una sub rutina o a un procedimiento. afectará a la variable original. presenta el operador unario & precediendo al nombre de la variable. ?> </body> </head> </html> Paso de parámetros por referencia La referencia indica trabajar sobre la dirección de memoria que ocupa el parámetro o variable original. A esta acción se le llama paso de parámetros. $numero=5. Para que las funciones puedan realizar su trabajo pueden requerir que se le envíen los datos con los que va a realizar sus cálculos. //----------------------------echo"<br>". } echo incrementa(5). Con funciones diseñadas adecuadamente se puede ignorar cómo se realiza un trabajo. Paso de parámetros por valor El paso de parámetros por valor. echo"<br>". echo "$numero". El argumento de la función receptora. Esto indica que se tome la dirección del parámetro hacia el argumento. significa que la función que se invoca recibe los valores de sus argumentos en variables temporales y no en las originales. produciendo un espejo o alias de la variable original. lo cual significará. Una función provee y una forma conveniente de encapsular algunos cálculos que se pueden emplear después. que toda alteración producida sobre el argumento. normalmente se le envía a través de variables. es suficiente saber qué se hace. por lo tanto la función que se invoca no puede alterar directamente una variable de la función que hace la llamada.

echo "$numero2". echo"<br>". } $numero2=5.19 { $valor1++. return $valor1. echo incrementa2($numero2). ?> </body> </head> </html> Programación orientada a objetos en PHP ISC ISRAEL ESTRADA CORTÉS . echo"<br>".

function arrancar ()//estos métodos no son constructores { echo "El coche está arrancando<br>". } function girar () { echo "El coche está girando<br>". var $color.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 características comunes de un grupo de objetos Instancia Ejemplar perteneciente a una clase. } Para definir un comportamiento (¿Qué es capaz de hacer?) de un objeto se realiza a través de funciones. var $motor. se llama crear un método. Ejemplo class Coche{ var $llantas. ISC ISRAEL ESTRADA CORTÉS . 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. Una clase se define con la palabra reservada class y el nombre de la clase. cuando dentro de una clase se define una función. ejemplo class Coche{ } Una instancia se define con la palabra reservada new. ejemplo $renault= new Coche(). } function frenar () { echo "El coche está frenando<br>". Método y función son sinónimos siempre y cuando esté definida dentro de una clase.

éstos conceptos básicos de la programación orientada a objetos. Se crea una función o método especial llamado método constructor. } } $renault= new Coche(). $this->motor=1600. $seat=new Coche(). Si queremos que una de nuestras instancias realice un comportamiento definido en un método. $this->motor=1600. es decir. ?> </body> </head> </html> ISC ISRAEL ESTRADA CORTÉS function frenar () { echo "El coche está frenando<br>". El método constructor debe tener el mismo nombre de la clase. var $color.21 } Un objeto siempre tiene un estado inicial. se debe hacer una llamada a un método: $mazda-> girar(). $this->color="". } . las características iniciales del objeto. Para comprobar hasta el momento. } function arrancar ()//estos metodos no son constructores { echo "El coche está arrancando<br>". por ejemplo que el mazda gire. echo $mazda-> llantas. $mazda-> girar(). Si queremos preguntarle a la instancia Mazda cuantas llantas tiene echo $mazda-> llantas. var $motor. a continuación se presenta el código completo: <html> <head> <meta charset="utf-8"> <title>programacion orientada a objetos</title> <body> <?php class Coche{ var $llantas. function Coche()//metodo constructor { $this-> llantas=4. Dentro del método constructor se definen las características iniciales del objeto con la palabra reservada this y el símbolo -> function Coche()//método constructor { } $this-> llantas=4. $mazda=new Coche(). } function girar () { echo "El coche está girando<br>".//estado inicial del objeto $this->color=" ".

var $motor. $this->color . Creamos dos archivos separados. " es: " . } ISC ISRAEL ESTRADA CORTÉS . $nombre_coche) { $this->color=$color_coche. para poder dar un color a las instancias que vamos creando. } Llamada a la función $mazda->establece_color ( "verde". $nombre_coche . $this->motor=1600. " es: " .php y otro llamado principal. var $color. echo "el color de este coche " . echo "el color de este coche es: " . Podemos pasar dos argumentos a la función para saber a qué coche establecimos el color. $nombre_coche . function establece_color($color_coche.php Código del archivo vehículos. } Llamada a la función $renault->establece_color("rojo"). $this->color.//estado inicial del objeto $this->color="". echo "el color de este coche " . "<br>".22 Llamada a métodos con parámetros En el ejemplo anterior. } function establece_color($color_coche. function Coche()//metodo constructor { $this-> llantas=4. el primero lo llamamos vehiculos.php <?php //----------------clase coches------------------------------------------class Coche{ var $llantas. Ahora vamos a reutilizar el código. } function frenar () { echo "El coche está frenando<br>". function establece_color($color_coche) { $this->color=$color_coche. "<br>". Este método debe estar dentro de la clase. } function arrancar ()//estos metodos no son constructores { echo "El coche está arrancando<br>". "mazda"). } function girar () { echo "El coche está girando<br>". $nombre_coche) { color=$color_coche $this->. $this->color . podemos crear un método que reciba un color y que después asigne ese argumento a la propiedad color. el método constructor tiene la propiedad color sin definir.

} function arrancar ()//estos metodos no son constructores { echo "El camion está arrancando<br>".23 } //----------------------------clase camion----------------------------------class Camion{ var $llantas. } function frenar () { echo "El camion está frenando<br>". echo "El mazda tiene " . var $motor. var $color. echo "El dina tiene " . $mazda=new Coche().php"). $nombre_coche) { $this->color=$color_coche. " llantas <br>". function Camion()//metodo constructor { $this-> llantas=8. } function establece_color($color_coche.php <html> <head> <meta charset="utf-8"> <title>programacion orientada a objetos</title> <body> <?php include("vehiculos. } ?> } Código del archivo principal. $mazda->llantas . " es: " . echo "el color de este coche " .//estado inicial del objeto $this->color="". $this->color . $dina->llantas . $dina=new Camion(). " llantas <br>". $this->motor=2600. } function girar () { echo "El camion está girando<br>". $nombre_coche . "<br>". ?> </body> </head> </html> ISC ISRAEL ESTRADA CORTÉS .

Aunque al heredar de la clase Coche.//estado inicial del objeto $this->color="". } } ISC ISRAEL ESTRADA CORTÉS . se dice que la clase 2 es una sub clase y la clase 1 es la súper clase.//estado inicial del objeto $this->color="". $color_camion . $nombre_camion . 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 vehículos. } } Ahora. ya que éstos son heredados de la Coche. Si tenemos tres clases y queremos aprovechar las variables y métodos de la clase1. Cuando la clase 2 hereda de la clase 1. class Camion extends Coche{ function Camion()//metodo constructor { $this-> llantas=8. en la clase Camión no tenemos que declarar las variables y los métodos. $this->motor=2600. " es: " .24 HERENCIA La herencia es una característica para reutilizar código. $nombre_camion) { echo "El color del camion " . "<br>". la clase 2 se puede heredar esas propiedades. la clase Camion ya cuenta con el método establece_color. con el fin de adaptarlos a la clase.php. vamos a sobrescribirlo para que se comporte adecuadamente. } function establece_color($color_camion. También es posible modificar algunos de los métodos heredados. de tal manera que la clase camión quede asi: class Camion extends Coche{ function Camion()//metodo constructor { $this-> llantas=8. vamos a re escribir la función o método establece_color. por ejemplo. y la clase 3 también puede heredar de la clase 2 y a su vez de la clase 3. $this->motor=2600.

definimos el método constructor de la clase Coche y le indicamos que tiene 4 llantas. Debido a que las diferentes clases tienen métodos que pueden o no ser utilizados por otras clases. Todos los objetos creados de la clase Coche tendrán pues 4 llantas como valor inicial.25 La sobre escritura de métodos. es decir. debe haber una forma de encapsular los métodos y tener el control de acceso a los métodos desde otras clases. ISC ISRAEL ESTRADA CORTÉS . Para ejemplificar la encapsulación vamos a revisar el archivo vehículos. } function arrancar() { parent :: arrancar(). echo "El camión está arrancando". esto evita tener un código muy complejo y extenso. Estos módulos deben poder comunicarse entre ellos para funcionar todos como una sola unidad. separar el código en segmentos los cuales tienen una función bien definida."dina"). También es posible agregar más líneas de código a un método heredado con la instrucción parent. Lo normal sería que este valor no cambiara. } MODIFICADORES DE ACCESO El código de un programa debe de ser escrito de manera que sea modular. permite volver a definir le método de tal forma que el código detecta el tipo de objeto y puede hacer la llamada adecuada. en el cual. function arrancar () { echo "Estoy arrancando<br>". sin embargo. Esta instrucción manda a ejecutar todas las líneas de código de la clase padre y una vez que termina regresa a la llamada y continúa con las líneas que pueda haber. si no utilizamos la encapsulación un programador podría cambiar ésta propiedad. La llamada desde el archivo principal es $dina-> establece_color("rojo".

el navegador mostrará un error. " llantas <br>". debemos encapsular la propiedad llantas de la clase Coche para que no pueda ser cambiada. ?> </body> </head> </html> Aunque en el método constructor de clase Coche definimos la propiedad llantas=4. $dina->llantas .php. para hacerlo debemos agregar la palabra reservada private a la propiedad llantas en la declaración de la clase. la salida en el navegador toma ese cambio. y después de haber creado el objeto Mazda.php"). <html> <head> <meta charset="utf-8"> <title>programacion orientada a objetos</title> <body> <?php include("vehiculos. echo "El dina tiene " .26 Si modificamos el archivo principal. $dina-> establece_color("rojo". $mazda=new Coche(). le decimos que tiene 7 llantas. Por lo tanto no debemos tratar de modificar la propiedad llantas desde el archivo principal. $dina-> arrancar(). $mazda->llantas=7. si en el archivo principal agregamos la línea $mazda->llantas=7. $mazda->llantas . el valor si cambia."dina"). queremos acceder a la propiedad privada llantas desde el archivo principal con la línea $mazda->llantas=7. Si después de utilizar la encapsulación. $dina=new Camion(). " llantas <br>". echo "El mazda tiene " . debería de funcionar bien el código. sin embargo. el navegador ISC ISRAEL ESTRADA CORTÉS . private $llantas. Quitando la línea $mazda->llantas=7. aunque eliminemos la línea $mazda->llantas=7. Entonces.

sin embargo. Para poder acceder a ellas.php trata de imprimir la cantidad de llantas de los objetos con las líneas: echo "El mazda tiene " . debemos crear un método getter en la clase Coche del archivo vehículos. al querer imprimir el número de llantas del objeto camión. echo "El dina tiene " . $dina->llantas . } Y ahora borramos las líneas echo "El mazda tiene " . " llantas <br>". Para solucionarlo. se utilizan los métodos getter y setter. ISC ISRAEL ESTRADA CORTÉS . está funcionando bien. del archivo principal. $dina->get_llantas() . Para poder acceder a métodos que están encapsulados. Por lo tanto las líneas echo "El mazda tiene " . la variable $llantas se debe establecer como protected y no como private. " llantas <br>". echo "El dina tiene " . Pero como ahora la propiedad llantas es privada. echo "El dina tiene " . function get_llantas() { return $this->llantas. getter sirve para poder ver las propiedades encapsuladas. $mazda->get_llantas() . $dina->llantas . Setter sirve para modificar las propiedades encapsuladas. " llantas <br>". no la puede usar ni siquiera para imprimir. $dina->llantas . del archivo principal. aunque la clase Camion hereda las propiedades de la clase Coche. " llantas <br>". $mazda->llantas .php. Al guardar los cambios y ejecutar en el navegador.php y las sustituimos por: echo "El mazda tiene " . por que el archivo principal. ya no funcionan.27 sigue marcando un error. ya que. no aparece el valor. " llantas <br>". echo "El dina tiene " . " llantas <br>". $mazda->llantas . obtenemos la salida siguiente: Aparentemente. " llantas <br>". el método get_llantas está definido en la clase Coche.php después del método constructor. " llantas <br>". $mazda->llantas .

//estado inicial del objeto $this->color="". } function frenar () { echo "Estoy frenando<br>". } function girar () { echo "Estoy girando<br>". } function get_llantas() { return $this->llantas. echo "El mazda tiene " . ISC ISRAEL ESTRADA CORTÉS . " llantas <br>". var $color. " llantas <br>". $mazda->get_llantas() . $this->color . $dina-> arrancar().php <html> <head> <meta charset="utf-8"> <title>programacion orientada a objetos</title> <body> <?php include("vehiculos. } function arrancar ()//estos metodos no son constructores { echo "Estoy arrancando<br>". } } //----------------------------clase camión hereda de la clase coche ----------------------------------class Camion extends Coche{ function Camion()//metodo constructor { $this-> llantas=8. $mazda=new Coche()."dina"). $dina=new Camion(). $this->motor=2600. $this->motor=1600. "<br>". " llantas <br>". ?> </body> </head> </html> vehiculos. " es: " . $nombre_coche) { $this->color=$color_coche. var $motor.28 El código completo de los dos archivos se muestra a continuación: Principal.//estado inicial del objeto $this->color="". $mazda->llantas . " llantas <br>". $nombre_coche . echo "El dina tiene " . //echo "El mazda tiene " . //$mazda->llantas=7. $dina->get_llantas() . } function establece_color($color_coche. $dina->llantas . echo "el color de este coche " . //echo "El dina tiene " .php <?php //----------------clase coches------------------------------------------class Coche{ protected $llantas. $dina-> establece_color("rojo".php"). function Coche()//metodo constructor { $this-> llantas=4.

$color_camion . Si se utiliza programación orientada a objetos. Nombre de la base de datos). " es: " . echo "El camión está arrancando".php. $nombre_camion) { echo "El color del camion " . en donde almacenamos en variables los 4 datos necesarios para la conexión y una variable para mandar llamar la función de conexión a la base de datos. } } ?> PARTE 2 ACCESO A BASES DE DATOS El acceso a una base de datos MySQL desde el lenguaje PHP se necesitan 4 datos:     Dirección de la base de datos Usuario de la base de datos Contraseña del usuario Nombre de la base de datos Al trabajar de manera local con wamp server. se debe usar la clase Mysqli con todas sus funciones y procedimientos. Para este primer ejemplo vamos a utilizar cuatro variables más: ISC ISRAEL ESTRADA CORTÉS . Si se utiliza el método por procedimientos. Usuario de la base de datos. los datos de conexión por ejemplo. lo hagamos siguiendo el orden: (Dirección de la base de datos. son:     Dirección de la base de datos: Usuario de la base de datos: Contraseña del usuario : Nombre de la base de datos: localhost root hola proveedor Existen dos formas de conectarse a la base de datos para obtener información de las tablas. $nombre_camion . } function arrancar() { parent :: arrancar(). "<br>". a esa función le mandamos las variables antes creadas. se deben usar la función mysqli_connect. CONEXIÓN A LA BASE DE DATOS Creamos un archivo nuevo llamado conexion.29 } function establece_color($color_camion. Es importante que al mandarle las variables para la conexión. Contraseña del usuario la base de datos.

" ". // variable para la conexion $conexion=mysqli_connect($db_host. echo $tupla[1] . " ".$db_usuario. $db_nombre="proveedor". ?> </body> </head> </html> ISC ISRAEL ESTRADA CORTÉS .30     $conexion: se utiliza para mandarle los parámetros de conexión a la función: mysqli_connect $consulta: Se utiliza para escribir la consulta SQL $resultado: Es un conjunto de resultados (recordset) una tabla virtual que contiene en memoria. $db_passwd=" ". <html> <head> < m e t a c h a r s e t = " u t f. $tupla: Se utiliza para “mirar” dentro del recordset. echo $tupla[4] . lo que devuelve la consulta.8 " > <title>Conexion a la base de datos</title> <body> <?php //datos de conexion $db_host="localhost". // variable para la consulta $consulta="SELECT * FROM proveedor". echo $tupla[5] . $db_usuario="root". " ". echo $tupla[3] . //en este caso $tupla es un arreglo $tupla=mysqli_fetch_row($resultado). echo $tupla[2] . " ". //variable para los resultados $resultado=mysqli_query($conexion. " ". $tupla es realmente un arreglo.$consulta).$db_passwd. echo $tupla[0] . " ".$db_nombre).