340 likes | 445 Views
PHP II PARTE. Presentado por: Laura Patricia Pinto Prieto. BASE DE DATOS (MYSQL) Uno de los empleos principales de php es el acceso a una base de datos en el servidor. las operaciones básicas se hacen empleando como lenguaje el SQL.
E N D
PHP II PARTE Presentado por: Laura Patricia Pinto Prieto
BASE DE DATOS (MYSQL) Uno de los empleos principales de php es el acceso a una base de datos en el servidor. las operaciones básicas se hacen empleando como lenguaje el SQL. Php implementa distintas funciones según la base de datos a emplear. Existen funciones actualmente para acceder a las siguientes servidores de bases de datos: - Mysql- Microsoft sql server- Oracle - Entre otros
El más empleado en la actualidad en la Web es el gestor de base de datos MySQL. (debido que cuando se lo emplea sin fines de lucro se puede emplear el software en forma gratuita). Como ejemplo supongamos que se ha creado una base de datos llamada phpfacil ,también una tabla llamada alumnos cuya estructura se muestra a continuación
CREATE TABLE alumnos ( codigo int(11) NOT NULL auto_increment, nombre varchar(40) default NULL, mail varchar(50) default NULL, codigocurso int(11) default NULL, PRIMARY KEY (`codigo`) )
INSERT( Agregar registros a una tabla) Necesitamos dos páginas para este proceso, una será el formulario de carga de datos y la siguiente será la que efectúe la inserción en la tabla.El paso más importante es la codificación del comando SQL insert: mysql_query("insert into alumnos(nombre,mail,codigocurso) values ('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[codigocurso])", $conexion) or die("Problemas en el select".mysql_error());
FORMULARIO DE CARGA DE DATOS <head><title>Problema</title></head> <body> <h1>Registro de Alumnos</h1> <form action="pagina2.php" method="post"> Ingrese nombre: <input type="text" name="nombre"><br> Ingrese mail: <input type="text" name="mail"><br> Seleccione el curso: <select name="codigocurso"> <option value="1">PHP</option> <option value="2">ASP</option> <option value="3">JSP</option> </select> <br> <input type="submit" value="Registrar"> </form> </body>
Ahora veremos como realizar el registro de los datos cargados en el formulario, en la tabla alumnos de la base de datos phpfacil <html> <head> <title>Problema</title> </head> <body> <?php $conexion=mysql_connect("localhost","root","z80") or die("Problemas en la conexion"); mysql_select_db("phpfacil",$conexion) or die("Problemas en la seleccion de la base de datos"); mysql_query("insert into alumnos(nombre,mail,codigocurso) values ('$_REQUEST[nombre]','$_REQUEST[mail]',$_REQUEST[codigocurso])", $conexion) or die("Problemas en el select".mysql_error()); mysql_close($conexion); echo "El alumno fue dado de alta."; ?> </body> </html>
Veamos los pasos para efectuar el registro en la tabla alumnos: $conexion=mysql_connect("localhost","root","z80") or die("Problemas en la conexion"); La función mysql_connect se conecta a una base de datos de tipo MySql, el primer parámetro es la dirección donde se encuentra el gestor de base de datos (en este caso en el mismo servidor por lo que indicamos esto con "localhost), el segundo parámetro es el nombre de usuario de la base de datos ("root" en nuestro caso, que es el usuario por defecto que crea MySql para el administrador) y por último la clave del usuariol definída como clave la cadena "z80"). En caso de hacer algún error en la llamada a la función la misma retorna false por lo que se ejecuta la instrucción seguida del operador or, en nuestro caso llamamos a la función die que detiene la ejecución del programa y muestra el mensaje por pantalla.Paso seguido se selecciona una base de datos (ya que el gestor de base de datos puede administrar varias bases de datos):
mysql_select_db("phpfacil",$conexion) or die("Problemas en la seleccion de la base de datos"); A esta función le indicamos como primer parámetro el nombre de la base de datos con la que trabajaremos y como segundo parámetro la referencia que retornó la función mysql_connect.
mysql_close($conexion); echo "El alumno fue registrado.“ Por último cerramos la conexion con la base de datos y mostramos un mensaje indicando que la carga se efectuó en forma correcta.Tener en cuenta que el campo código se generó en forma automática.
LISTADO (SELECCIÓN DE REGISTROS DE UNA TABLA) <?php $conexion=mysql_connect("localhost","root","z80") or die("Problemas en la conexion"); mysql_select_db("phpfacil",$conexion) or die("Problemas en la selección de la base de datos"); $registros=mysql_query("select codigo,nombre, mail, codigocurso from alumnos",$conexion) or die("Problemas en el select:".mysql_error()); while ($reg=mysql_fetch_array($registros)) { echo "Codigo:".$reg['codigo']."<br>"; echo "Nombre:".$reg['nombre']."<br>"; echo "Mail:".$reg['mail']."<br>"; echo "Curso:"; switch ($reg['codigocurso']) { case 1:echo "PHP"; break; case 2:echo "ASP"; break; case 3:echo "JSP"; break; } echo "<br>"; echo "<hr>";} mysql_close($conexion); ?>
El comando SQL que nos permite recuperar datos de tablas se llama SELECT. Indicamos los campos a rescatar de la tabla y luego de la palabra clave from indicamos el nombre de la tabla: $registros=mysql_query("select codigo,nombre, mail, codigocurso from alumnos",$conexion) or die("Problemas en el select:".mysql_error()); En caso de haber codificado incorrectamente, el comando SQL select la función mysql_query retorna false, por lo que se ejecuta el comando siguiente al operador or, es decir la función die.Si el comando SQL es correcto, en la variable $registros se almacena una referencia a los datos rescatados de la tabla alumnos. Ahora debemos ir mostrando registro a registro los datos extraidos: while ($reg=mysql_fetch_array($registros))
while ($reg=mysql_fetch_array($registros)) Para rescatar registro a registro los datos obtenidos por el select debemos llamar a la función mysql_fetch_array. Esta función retorna un vector asociativo con los datos del registro rescatado, o false en caso de no haber más registros
Es decir que si retorna un registro se almacena en el vector $reg y la condición del while se valida como verdadero y pasa a ejecutarse el bloque del while: { echo "Codigo:".$reg['codigo']."<br>"; echo "Nombre:".$reg['nombre']."<br>"; echo "Mail:".$reg['mail']."<br>"; echo "Curso:"; switch ($reg['codigocurso']) { case 1:echo "PHP"; break; case 2:echo "ASP"; break; case 3:echo "JSP"; break; } echo "<br>"; echo "<hr>"; }
El bloque del while muestra el contenido del registro rescatado por la función mysql_fetch_array. Como vemos, para rescatar cada campo accedemos mediante el vector asociativo $reg indicando como subíndice un campo indicado en el select:$reg['codigo']Cada vez que llamamos a la función mysql_fetch_array nos retorna el siguiente registro. Cuando debemos mostrar el curso mediante la instrucción switch, analizamos si tiene un 1,2 ó 3 y procedemos a mostrar el nombre del curso.Para separar cada alumno en la página HTML llamamos disponemos la marca "<hr>"
Programación Lineal: Es cuando desarrollamos todo el código disponiendo instrucciones PHP alternando con el HTML de la página. • Programación Estructurada: Planteamos funciones que agrupan actividades a desarrollar y luego dentro de la página llamamos a dichas funciones que pueden estar dentro del mismo archivo o en una librería separada. • Programación Orientada a Objetos: Es cuando planteamos clases y definimos objetos de las mismas.
¿Qué es una clase? • Una clase es un molde del que luego se pueden crear múltiples objetos, con similares características. • La clase define los atributos (variables) y métodos (funciones) comunes a los objetos de ese tipo, pero luego, cada objeto tendrá sus propios valores y compartirán las mismas funciones.
Objetos Son instancias de clases. Durante la ejecución de la aplicación se producirá la instanciación de esta clase, es decir, la creación de los objetos que representan cada uno de los individuos con sus características propias, es decir, valores específicos para sus atributos
Encapsulamiento • Miembros públicos (+). Sin ningún tipo de protección especial • Miembros privados (-). Inaccesibles desde el exterior de la clase • Miembros protegidos (#). Similares a los privados aunque se permite su acceso desde las clases descendientes El principio de ocultación de información se plasma en los lenguajes OO en diversos mecanismos de protección de los miembros de la clase:
Ejemplo de métodos y atributos <?php class CabeceraPagina { private $titulo; private $ubicacion; public function inicializar($tit,$ubi) {$this->titulo=$tit; $this->ubicacion=$ubi; } public function graficar() {echo '<div style="font-size:40px;text-align:'.$this->ubicacion.'">'; echo $this->titulo; echo '</div>'; } } cabecera=new CabeceraPagina(); $cabecera->inicializar('El blog del programador','center'); $cabecera->graficar(); ?>
Método constructor de una clase • El constructor es un método especial de una clase. El objetivo fundamental del constructor es inicializar los atributos del objeto que creamos. • Básicamente el constructor remplaza al método inicializar que habíamos hecho en el concepto anterior.
Las ventajas de implementar un constructor en lugar del método inicializar son: • El constructor es el primer método que se ejecuta cuando se crea un objeto y no puede ser llamado nuevamente. • El constructor se llama automáticamente. Es decir es imposible de olvidarse llamarlo ya que se llamará automáticamente. • Un constructor no puede retornar dato.
Ejemplo constructor <?php class CabeceraPagina { private $titulo; private $ubicacion; public function __construct($tit,$ubi) { $this->titulo=$tit; $this->ubicacion=$ubi; } public function graficar() { echo '<div style="font-size:40px;text-align:'.$this->ubicacion.'">'; echo $this->titulo; echo '</div>'; } } $cabecera=new CabeceraPagina('El blog del programador','center'); $cabecera->graficar(); ?>
Llamada de métodos dentro de la clase. Para llamar un método desde donde creamos el objeto utilizamos la sintaxis: [nombre del objeto]->[nombre del método] Es decir antecedemos al nombre del método el nombre del objeto y el operador -> Ahora bien que pasa si queremos llamar dentro de la clase a otro método que pertenece a la misma clase, la sintaxis es la siguiente: $this->[nombre del método] Es importante tener en cuenta que esto solo se puede hacer cuando estamos dentro de la misma clase.
Modificadores de acceso a atributos y métodos (public - private) • Veíamos hasta ahora que todos los métodos planteados de la clase han sido públicos. Pero en muchas situaciones conviene que haya métodos privados (private). • Un método privado (private) solo puede ser llamado desde otro método de la clase. No podemos llamar a un método privados desde donde definimos un objeto. • Con la definición de métodos privados se elimina la posibilidad de llamar a métodos por error
Colaboración de objetos Cuando dentro de una clase definimos un atributo o una variable de otra clase decimos que esta segunda clase colabora con la primera. class Cabecera { [atributos y métodos] } class Cuerpo { [atributos y métodos] } class Pie { [atributos y métodos] } class Pagina { private $cabecera; private $cuerpo; private $pie; [métodos] } $pag=new Pagina(); El constructor de la clase pagna: public function __construct($texto1,$texto2) { $this->cabecera=new Cabecera($texto1); $this->cuerpo=new Cuerpo(); $this->pie=new Pie($texto2); }
Herencia • Otra requisito que tiene que tener un lenguaje para considerarse orientado a objetos es la HERENCIA. • La herencia significa que se pueden crear nuevas clases partiendo de clases existentes, que tendrá todas los atributos y los métodos de su 'superclase' o 'clase padre' y además se le podrán añadir otros atributos y métodos propios. • En PHP, a diferencia de otros lenguajes orientados a objetos (C++), una clase sólo puede derivar de una única clase, es decir, PHP no permite herencia múltiple.
Superclase o clase padre Clase de la que desciende o deriva una clase. Las clases hijas (descendientes) heredan (incorporan) automáticamente los atributos y métodos de la la clase padre. Subclase Clase desciendiente de otra. Hereda automáticamente los atributos y métodos de su superclase. Es una especialización de otra clase. Admiten la definición de nuevos atributos y métodos para aumentar la especialización de la clase.
Ejemplo Siempre hacia abajo en la jerarquía hay una especialización (las subclases añaden nuevos atributos y métodos
¿Cuándo hay herencia? • Cuando la relación entre dos clases es del tipo "...tiene un..." o "...es parte de...", no debemos implementar herencia. Estamos frente a una relación de colaboración de clases no de herencia. • Luego si vemos que dos clase responden a la pregunta ClaseA "..es un.." ClaseB es posible que haya una relación de herencia.Por ejemplo: Auto "es un" VehiculoCirculo "es una" FiguraMouse "es un" DispositivoEntradaSuma "es una" Operacion
Ejemplo Herencia <?php class Operacion { protected $valor1; protected $valor2; protected $resultado; public function cargar1($v) { $this->valor1=$v; } public function cargar2($v) { $this->valor2=$v; } public function imprimirResultado() { echo $this->resultado.'<br>'; } }
class Suma extends Operacion { public function operar() { $this->resultado=$this->valor1+$this->valor2; } } class Resta extends Operación { public function operar() { $this->resultado=$this->valor1-$this->valor2; } }
$suma=new Suma(); $suma->cargar1(10); $suma->cargar2(10); $suma->operar(); echo 'El resultado de la suma de 10+10 es:'; $suma->imprimirResultado(); $resta=new Resta(); $resta->cargar1(10); $resta->cargar2(5); $resta->operar(); echo 'El resultado de la diferencia de 10-5 es:'; $resta->imprimirResultado(); ?>