14/05/2013
1
Acceso a Bases de Datos usando PHP
Unidad 7
Objetivos de Aprendizaje
• Describir cómo se trabaja con bases de datos en PHP
• Utilizar ODBC para acceder a bases de datos
• Explicar cómo conectarse y desconectarse a una base de datos
• Explicar cómo recuperar, insertar, eliminar, y actualizar registros
• Utilizar la extensión de PHP para acceder bases de datos en MySQL
Acceso a Bases de Datos con PHP
• Una Base de Datos Relacional es un conjunto de tablas que mantienen relaciones unas con otras entre sí, permitiendo almacenar información en forma íntegra y consistente.
• Entre las bases de datos relacionales que maneja PHP podemos mencionar MySQL, MS SQLServer, Oracle y también se usa IBM UDB/DB2.
Acceso a Bases de Datos con PHP … 2
• Para trabajar las bases de datos es necesario manejar un conjunto de comandos que nos van a permitir realizar operaciones como:
• Conexión y desconexión a la base de datos.
• Crear y eliminar tablas.
• Sentencias SQL para insertar, borrar y actualizar registros.
• Sentencias SQL para recuperar registros de las tablas.
• En PHP, dichas operaciones se realizan mediante funciones.
14/05/2013
2
Extensiones para uso de Bases de Datos • PHP posee extensiones para manipular diferentes
bases de datos.
• Las funciones para trabajar con cada base de datos en particular están disponibles en su respectiva extensión.
• Las funciones de manejo de bases de datos poseen como prefijo el nombre del manejador de base de datos que se va utilizar.
Por ejemplo, si se trata de MySQL:
• mysql_connect(): Conectarse a la base de datos.
• mysql_db_query(): Ejecución de sentencias SQL.
Extensiones para uso de Bases de Datos • En PHP también se puede lograr el acceso a Bases
de Datos usando ODBC.
• El módulo de extensión para ODBC, viene incorporado (built-in) en PHP, por lo tanto no se requiere cargar una extensión específica para poder utilizarlo.
• Las funciones relativas a ODBC en PHP tienen el prefijo odbc.
Por ejemplo:
• odbc_connect(): Conectarse a la base de datos.
• odbc_do(): Ejecutar las consultas SQL.
ODBC (Open Database Connectivity) • ODBC es un estándar ampliamente aceptado por
Microsoft, que permite a las aplicaciones conectarse a varias bases de datos relacionales como IBM DB2 Universal Database, Oracle, etc.
• Proporciona un conjunto de APIs para acceder a datos en bases de datos relacionales.
• Este conjunto de APIs es uniforme entre las bases de datos relacionales.
Arquitectura de Aplicación ODBC
14/05/2013
3
Conexión a una Base de Datos con ODBC
• odbc_connect (dsn, userid, password)
• odbc_pconnect (dsn, userid, password)
<?
$id_conn=odbc_connect("SAMPLEDSN","db2admin","db2admin");
if ($id_conn == 0) {
echo "Falló la conexión a la base de datos!";
$sqlerror = odbc_errormsg($id_conn);
echo "$sqlerror";
} else
echo "La conexión a la base de datos fue satisfactoria!";
?>
Cerrar una conexión a Base de Datos • odbc_close(id_conn)
<?
$id_conn=odbc_connect(“SAMPLEDSN”,”db2admin”,”password.1”);
if ($id_conn == 0) {
echo "Falló la Conexión a Base de Datos!";
$sqlerror = odbc_errormsg($id_conn);
echo"$sqlerror";
}
else {
odbc_close($id_conn); //Cerrando la conexión }
?>
Ejecutar Sentencias SQL
• Sentencias Insert
• Sentencias Delete
• Sentencias Update
• Sentencias Select
Ejecutar Sentencias SQL ... 2 • Para ejecutar una sentencia SQL se utilizan las
funciones:
• odbc_do (id_conn,sentencia_SQL)
• odbc_exec(id_conn,sentencia_SQL)
• Alternativamente, se pueden utilizar las funciones:
• odbc_prepare (id_conn, sentencia_SQL)
• odbc_execute (id_conn [, parametros])
• Para poder utilizar la función odbc_execute antes se debe utilizar la función odbc_prepare
14/05/2013
4
Ejecutar Sentencias SQL ... 3 <?
// Seleccionar Registros de una Tabla:
$strsql = “SELECT * FROM PRODUCTOS;";
$id_stmt = odbc_do($id_conn,$strsql);
// Es equivalente:
$id_stmt = odbc_exec($id_conn,$strsql);
// También puede realizar lo siguiente:
$id_stmt = odbc_prepare($id_conn, $strsql);
odbc_execute($id_stmt);
?>
Crear una tabla <?
// Crear una tabla de productos
$strsql = "CREATE TABLE PRODUCTOS(
PROD_COD INTEGER NOT NULL,
PROD_NOMBRE VARCHAR(20),
PROD_PRECIO INTEGER);";
$id_stmt = odbc_do($id_conn,$strsql);
?>
Insertar Registros <?
// Insertar registros a una tabla
$strsql = "INSERT INTO PRODUCTOS
VALUES(10,'TV',60000);";
$id_stmt = odbc_exec($id_conn,$strsql);
?>
Actualizar Registros <?
// Actualizar registros de una tabla
$strsql = "UPDATE PRODUCTOS SET PROD_PRECIO = 45000 WHERE PROD_COD = 10;";
$id_stmt=odbc_prepare($id_conn, $strsql);
odbc_execute($id_stmt);
?>
14/05/2013
5
Eliminar Registros <?
// Eliminar registros de una tabla
$strsql = "DELETE FROM PRODUCTOS WHERE PROD_COD = 10; ";
$id_stmt=odbc_prepare($id_conn, $strsql);
odbc_execute($id_stmt);
?>
Seleccionar Registros <?
// Seleccionar registros de una tabla
$strsql = "SELECT PROD_NOMBRE, PROD_PRECIO
FROM PRODUCTOS WHERE PROD_PRECIO >=30000; ";
$id_stmt = odbc_exec($id_conn,$strsql);
?>
Recuperar Registros Seleccionados
<table border="1">
<tr><th>NOMBRE PRODUCTO</th><th>PRECIOS</th></tr>
<?
while (odbc_fetch_row($id_stmt)) {
echo"<tr><td>",odbc_result($id_stmt,1),"</td><td>",odbc_result($id_stmt,2),"</td></tr>";
}?>
</table>
• Para recuperar registros ya seleccionados se utiliza la función odbc_fetch_row.Para acceder un campo se usa la función odbc_result
Mostrar mensajes de error
<?
$id_conn = odbc_connect(“SAMPLEDSN”,”db2admin”,”password.1”)
if ($id_conn == 0) {
$sqlerror = odbc_errormsg($id_conn);
echo "$sqlerror";
} ?>
• La función odbc_errormsg([id_conn]), retorna una cadena que contiene el mensaje de error ODBC o una cadena vacia si no hay error.
14/05/2013
6
Acceso a Bases de Datos con la extensión MySQL
• Para que desde un script PHP se pueda trabajar con una base de datos utilizando una extensión ésta debe estar disponible.
Incoporar la extensión de forma automática o por defecto
• Se debe modificar el archivo de configuración php.ini. Para Windows, se agrega la sentencia:
extension=”ext/php_mysql.dll”
Acceso a Bases de Datos con la extensión MySQL
Incoporar la extensión dinámicamente
• Se hace directamente en el script PHP, utilizando la funcion dl().
• La extensión se carga en tiempo de ejecución y estará disponible sólo para el script actual.
<?php
dl(‘ext/php_mysql.dll’);
. . .
?>
Abrir una conexión al Servidor MySQL • mysql_connect(‘host:numpuerto’,$userid, $password)
• mysql_pconnect(‘host:numpuerto’,$userid,$password)
<?php
$idConn =
mysql_connect('localhost:3306','root','mysql');
if (!$idConn) {
die(“Error de conexión: ". mysql_error());
}
echo "Conexión satisfactoria";
?>
Cerrar una conexión al Servidor MySQL • mysql_close($idConn)
<?php
$idConn =
mysql_connect('localhost:3306','root','mysql');
if (!$idConn) {
die(“Error de conexión: ". mysql_error());
}
echo "Conexión satisfactoria";
mysql_close($idConn);
?>
14/05/2013
7
Seleccionar una Base de Datos en MySQL • mysql_select_db($BD,$idConexion)
<?php
$idConn =
mysql_connect('localhost:3307','root','mysql');
$dbSelect = mysql_select_db('SAMPLE', $idConn);
if (!$dbSelect) {
die ('Error en la selección:' . mysql_error());
}
?>
Crear una Base de Datos en MySQL • mysql_create_db($BD,$idConexion)
<?php
$idConn =
mysql_connect('localhost:3306',root','mysql');
if (mysql_create_db('BD_productos',$idConn)) {
echo "La base de datos se creo correctamente";
} else {
echo 'Error al crear la BD:' . mysql_error();
}
?>
Eliminar una Base de Datos en MySQL • mysql_drop_db($BD,$idConexion)
<?php
if (mysql_drop_db('BD_productos', $idConn)) {
echo "La base de datos ha sido eliminada";
} else {
echo 'Error al eliminar la BD:'.mysql_error();
}
?>
Ejecutar Sentencias SQL usando funciones MySQL
• La función mysql_query() permite ejecutar cualquier sentencia SQL
mysql_query (“sentenciaSQL”,$idConn)
• mysql_query() envía una consulta (“sentenciaSQL”) a la base de datos que está activa en el servidor asociado con el identificador de conexión $idConn.
• Si se ejecuta una sentencia SQL del tipo: UPDATE, DELETE, DROP o INSERT, CREATE, retorna TRUE en caso de éxito y FALSE en caso contrario.
• Si se ejecuta una sentencia SQL del tipo SELECT, SHOW o DESCRIBE, retorna un resource en caso de exito o FALSE en caso de error.
14/05/2013
8
Crear una Tabla <?php
$strsql = "CREATE TABLE EMPLEADOS(
EMP_COD INTEGER NOT NULL,
EMP_NOMBRE VARCHAR(20),
EMP_PRECIO VARCHAR(20));";
$result = mysql_query($strsql,$idConn);
if (!$result) {
die('Sentencia no ejecutada:'. mysql_error());
}
?>
Insertar Registros en una Tabla <?php
$strsql = "INSERT INTO EMPLEADOS
VALUES(10,'PEDRO PEREZ', ‘PROGRAMADOR’);";
$result = mysql_query($strsql,$idConn);
if (!$result) {
die('Sentencia no ejecutada:'. mysql_error());
}
?>
Actualizar Registros en una Tabla <?php
$strsql = "UPDATE EMPLEADOS SET EMP_CARGO =
‘DISEÑADOR’ WHERE EMP_COD = 10;";
$result = mysql_query($strsql,$idConn);
if (!$result) {
die('Sentencia no ejecutada:'. mysql_error());
}
?>
Eliminar Registros en una Tabla <?php
$strsql="DELETE FROM EMPLEADOS WHERE EMP_COD=10;"
$result = mysql_query($strsql,$idConn);
if (!$result) {
die('Sentencia no ejecutada:'. mysql_error());
}
?>
14/05/2013
9
Eliminar una Tabla <?php
$strsql="DROP TABLE EMPLEADOS";
$result = mysql_query($strsql,$idConn);
if (!$result) {
die('Sentencia no ejecutada:'. mysql_error());
}
?>
Seleccionar Registros de una Tabla <?php
$strsql="SELECT EMP_NOMBRE, EMP_CARGO
FROM EMPLEADOS WHERE EMP_CARGO = ‘DISEÑADOR’;"
$result = mysql_query($strsql,$idConn);
if (!$result) {
die('Sentencia no ejecutada:'. mysql_error());
}
?>
Recuperar Registros seleccionados .. 1 <?php
$strsql="SELECT EMP_COD, EMP_NOMBRE FROM EMPLEADOS WHERE
EMP_CARGO = ‘PROGRAMADOR’;"
$result = mysql_query($strsql);
if ($result) {
$fila = mysql_fetch_row($result);
echo $fila[0]; // El EMP_COD del primer registro retornado
echo $fila[1]; //El EMP_NOMBRE del primer registro retornado
}
?>
Recuperar Registros seleccionados .. 2 <?php
$strsql="SELECT EMP_COD, EMP_NOMBRE FROM EMPLEADOS WHERE
EMP_CARGO = ‘PROGRAMADOR’;"
$result = mysql_query($strsql);
if ($result) {
$fila = mysql_fetch_array($result);
echo $fila[0]; // Equivalente a:
// $fila[“EMP_COD”]
echo $fila[1]; // Equivalente a:
// $fila[“EMP_NOMBRE”]
}
?>
14/05/2013
10
Recuperar Registros seleccionados .. 3 <?php
$strsql="SELECT EMP_COD, EMP_NOMBRE FROM EMPLEADOS WHERE
EMP_CARGO = ‘PROGRAMADOR’;"
$result = mysql_query($strsql);
if ($result) {
$fila = mysql_fetch_assoc($result);
echo $fila[“EMP_COD”];
echo $fila[“EMP_NOMBRE”];
}
?>
Recuperar Registros seleccionados .. 4 <?php
$strsql="SELECT EMP_COD, EMP_NOMBRE FROM EMPLEADOS WHERE
EMP_CARGO = ‘PROGRAMADOR’;"
$result = mysql_query($strsql);
if ($result) {
$objfila = mysql_fetch_object($result);
echo $objfila->EMP_COD;
echo $objfila->EMP_NOMBRE;
}
?>
Recuperar Registros seleccionados .. 5 <?php
$result = mysql_query("select * from EMPLEADO");
while ($fila = mysql_fetch_array($result)) {
echo $fila[“EMP_COD”];
echo $fila[“EMP_NOMBRE”];
echo $fila[“EMP_CARGO”];
}
mysql_free_result($result);
?>
Otras funciones útiles de la extensión de MySQL
• mysql_error($idConexion)
• mysql_errno($idConexion)
• mysql_ping($idConexion)
• mysql_info($idConexion)
• mysql_field_name($resultado,$indiceCampo)
• mysql_field_type($resultado,$indiceCampo)
• mysql_num_fields($resultado)
• mysql_num_rows($resultado)
• mysql_list_tables($BD,$idConexion)
• mysql_list_dbs($idConexion)
• mysql_free_result($resultado)
14/05/2013
11
Resumen • Se describió cómo se trabaja con bases de datos
en PHP
• Se utilizó ODBC para acceder a bases de datos
• Se explicó cómo conectarse y desconectarse a una base de datos
• Se explicó cómo recuperar, insertar, eliminar, y actualizar registros
• Se utilizó la extensión de PHP para acceder bases de datos en MySQL
Laboratorio: Acceso a Bases de Datos usando PHP
Unidad 8
Introducción a la Programación Orientada a Objetos con PHP
Unidad 9
Objetivos de Aprendizaje • Crear Clases y Objetos en PHP
• Describir la Herencia en PHP
• Conocer cómo se implementa el Polimorfismo en PHP
• Crear Clases Abstractas e Interfaces
• Discutir como se realiza la clonación de objetos
14/05/2013
12
Definición de Clases • La definición de una clase comienza con la palabra
"class", luego se coloca el nombre de la clase. La definición del los atributos y métodos miembros se hace dentro de llaves.
<?php
class ClaseA { // * atributos
public $var1;
private $var2 = 'Valor por defecto';
// * método
function mostrarVar() {
echo $this->var2;
}
}
?>
Definición de Objetos • Para crear una instancia de una clase, se crea
un nuevo objeto y éste es asignado a una variable.
<?php
$obj1 = new ClaseA();
$obj2 = $obj1;
/* $obj2 hace referencia a la misma instancia */
?>
Acceder a atributos y métodos • Para acceder a los atributos y métodos de un
objeto utilizamos el operador flecha “->”, como se muestra a continuación:
<?php
/*
$objeto->nombre_atributo;
$objeto->nombre_metodo;
*/
$obj1 = new ClaseA();
echo $obj1->var1; // A la variable se le
quita el ‘$’
$obj1->mostrarVar();
?>
Acceder a atributos y métodos … 2 • Para acceder a un miembro dentro de la misma
definición de la clase, se utiliza la variable $this, que hace referencia a la instancia actual.
<?php
class ClaseB
{
private $var1=“Hola!”;
private $var2=“Adios!”;
public function mostrarVar1() {
echo $this->var1;
}
public function mostrarVar2() {
$this->mostrarVar1();
echo $this->var2;
}
}
?>
14/05/2013
13
Visibilidad de atributos y métodos • Pública: Los elementos pueden ser accedidos
desde cualquier lugar dentro del programa.
• Protegida: Los elementos limitan el acceso sólo a la clase que los define y a las clases que heredan de ésta.
• Privada: Los elementos limitan la visibilidad sólo a la clase que los define.
• La visibilidad de un atributo o método puede ser definida al anteponerle a la declaración las palabras:
• public
• protected
• private
Visibilidad de atributos y métodos … 2 <?php
class ClaseB
{
private $var1=“Hola!”;
protected $var2=“Adios!”;
public function mostrarVar1() {
echo $this->var1;
}
public function mostrarVar2() {
echo $this->var2;
}
}
?>
Constructor de una clase • El método constructor se invoca cada vez que se
crea un nuevo objeto. Un constructor de clase se define con la función __construct().
<?php
class ClaseA {
private $var1;
function __construct($arg1){
$this->var1=$arg1; }
}
$objA = new ClaseA("Valor1");
// Se ejecuta el constructor
?>
Destructor de una clase • El método destructor de una clase, si está
definido, se invoca cuando todas las referencias a un objeto en particular sean removidas o cuando el objeto sea explícitamente destruido.
• Un destructor de clase se define con la función __destruct().
14/05/2013
14
Destructor de una clase … 2 <?php
class ClaseA {
public $var1;
function __construct($arg1) {
$this->var1=$arg1; }
function __destruct() {
print "Se destruye el objeto!"; }
}
$objA = new ClaseA("Valor 1");
/* Al terminar de usar el objeto o al finalizar el script se destruye el objeto */
?>
Definir métodos “getter” y “setter” <?php
class ClaseA {
private $var1;
function __construct($arg1) {
$this->var1=$arg1; }
function set_var1($valor) {
$this->var1=$valor; }
function get_var1() {
return $this->var1; }
}
$objA = new ClaseA("Valor 1");
$objA->set_var1("Nuevo valor");
echo $objA->get_var1();
?>
Constantes de una clase • Dentro de una clase se pueden definir constantes.
Se nombran sin utilizar el signo ‘$’.
• Los valores constantes no pueden ser accedidos desde una instancia.
• Las constantes definidas dentro de una clase sólo se pueden acceder a través del nombre de la clase o a través de un método que las retorne o muestre.
• No se puede utilizar el operador flecha (->) para accederlas.
Constantes de una clase … 2 <?php
class claseA {
const miConstante = 'Valor constante!';
function get_miConstante() {
return self::miConstante;
// No está pemitido: $this->miConstante
}
}
$objetoA = new ClaseA();
$var1=$objetoA->get_miConstante();
echo ClaseA::miConstante; // Se muestra la constante
echo $objetoA->miConstante; // Error!
echo $objetoA::miConstante; // Error!
?>
14/05/2013
15
El Operador de resolución :: • El operador de resolución, dobles dos puntos
(::), es un símbolo que permite acceder a los atributos o métodos estáticos y las constantes de una clase.
• El operador de resolución también se utiliza cuando se necesita tener acceso desde una clase hija a los atributos o métodos de su clase padre.
• self: Hace referencia a la clase actual, a la clase que define al método.
• parent: Hace referencia a la clase padre.
El Operador de resolución :: … 2 <?php
class ClaseA {
const CONST_A = 'A';
}
class ClaseB extends ClaseA {
const CONST_B = ‘B’;
public static $estaticaB = 'Variable estática';
public static function mostrarConstantes() {
echo parent::CONST_A;
echo self::CONST_B; }
public static function mostrarEstaticas() {
echo self::$estaticaB; }
}
?>
El Operador de resolución :: … 3 <?php
echo ClaseA::CONST_A;
echo ClaseB::estaticaB;
ClaseB::mostrarEstaticas();
?>
El Operador de resolución :: … 4 <?php
class ClasePadre {
private $varPriv;
protected $varProt;
function __construct($valor) {
$this->$varPriv=$valor;
$this->$varProt=$valor;
}
protected function miFuncion() {
echo "Funcion del padre";
}
}
?>
14/05/2013
16
El Operador de resolución :: … 5 <?php
class ClaseHijo extends ClasePadre
{
function __construct() {
parent::__construct("Inicializada desde el padre");
$this->$varProtected="Inicializada desde el hijo";
}
public function miFuncion() {
parent::miFuncion();
echo "Función del hijo";
}
}
?>
El Operador de resolución :: • El operador de resolución, dobles dos puntos
(::), es un símbolo que permite acceder a los atributos o métodos estáticos y las constantes de una clase.
• El operador de resolución también se utiliza cuando se necesita tener acceso desde una clase hija a los atributos o métodos de su clase padre.
• self: Hace referencia a la clase actual, a la clase que define al método.
• parent: Hace referencia a la clase padre.
Resumen • Se crearon Clases y Objetos en PHP
• Se describió la Herencia en PHP
• Se conoció cómo se implementa el Polimorfismo en PHP
• Se crearon Clases Abstractas e Interfaces
• Se discutió como se realiza la clonación de objetos
Laboratorio: Introducción a la Programación Orientada a Objetos
Unidad 10
14/05/2013
17
Extensiones en PHP
Unidad 11
Objetivos de Aprendizaje • Conocer en que consiste XML
• Utilizar la extensión DOM de PHP para trabajar con documentos XML
• Crear scripts PHP que puedan manipular documentos XML
• Conocer en qué consiste la librería estándar de PHP
Estructura de un archivo XML • Al igual que HTML, un documento XML es un archivo
de texto plano en los que se utilizan etiquetas para delimitar los elementos del documento.
• Sin embargo, XML define estas etiquetas en función del tipo de datos que está describiendo y no de la apariencia que tendrán en la página.
• Además de permite crear nuevas etiquetas y ampliar las existentes.
Ejemplo de un archivo XML • Para crear una instancia de una clase, se crea
un nuevo objeto y éste es asignado a una variable.
<?xml version="1.0" encoding="ISO-8859-1"?>
<ResumenNotas>
<Materia>Matemáticas</Materia>
<Calificacion>A</Calificacion>
<Materia>Física</Materia>
<Calificacion>B</Calificacion>
<Materia>Química</Materia>
<Calificacion>B</Calificacion>
</ResumenNotas>
14/05/2013
18
Extensión de PHP para trabajar con XML • La extensión para soporte a XML ha sido re-
estructurada a partir de PHP 4.3.0. Antes se necesitaba incorporar la extensión ‘domxml’ para poder manipular los documentos XML.
• Ahora se puede utilizar las funciones DOM (Document Object Model), que ya vienen incorporadas en PHP.
• No se necesita ninguna instalación para usar estas funciones, son parte del núcleo de PHP. Utilizaremos las funciones de la extensión DOM para manipular documentos XML.
Cargar un documento XML load(“nombre_archivo.xml”)
• Carga un documento XML desde un archivo y lo deja en un objeto del tipo DOMDocument.
<?php
/* Se crea un objeto del tipo DOMDocument, que es el contenedor del documento xml */
$docXml = new DOMDocument();
/* Se carga el documento XML en el objeto $docXml */
$docXml->load('NotasMaterias.xml');
/* La funcion saveXML() captura el documento XML cargado en el objeto $docXml y retorna el contenido en un string */
echo $docXml->saveXML(); // Se imprime el contenido
?>
Cargar un documento XML … 2 loadXML(“codigoXml”)
• Carga un documento XML a partir de un string y lo deja en un objeto del tipo DOMDocument.
<?php
/* Se crea un objeto del tipo DOMDocument, que es el contenedor del documento xml */
$docXml = new DOMDocument();
$strXml="<Materias><Materia>Quimica<Materia></Materias>";
/* Se carga el documento XML en el objeto $docXml */
$docXml->loadXML($strXml);
echo $docXml->saveXML(); // Se imprime el contenido
?>
Capturar un documento XML saveXML()
• Captura el documento XML que esté contenido en un objeto DOMDocument y lo retorna en un string. Esta función generalmente se llama despues de cargar un documento XML.
<?php
$docXml = new DOMDocument();
/* Se carga el documento XML en el objeto $docXml */
$docXml->load('NotasMaterias.xml');
$codXML = $docXml->saveXML(); // Captura el documento XML
echo $codXML; // Se imprime el contenido
?>
14/05/2013
19
Capturar un documento XML ... 2 save($archivo)
• Captura el documento XML que esté contenido en un objeto DOMDocument y lo almacena en un archivo. Esta función generalmente se llama después de crear un documento XML.
<?php
$strXml="<Materias><Materia>Quimica</Materia></Materias>";
$docXml = DOMDocument::loadXML($strXml);
// Se guarda el contenido en un archivo
$docXml->save("materias.xml");
?>
Crear Elementos XML CreateElement($nombreElemento,$valor)
• Crea una nueva instancia de la clase DOMElement.
• Este elemento no formará parte del documento a menos que sea agregado con la función DOMNode->appendChild().
• El parámetro $nombreElemento es el nombre del elemento que se va a crear y $valor el contenido de ese elemento. Si no se especifica $valor, se crea un elemento vacío.
Crear Elementos XML … 2 CreateAttribute($nombreAtributo)
• Crea una nueva instancia de la clase DOMAttr.
• Este atributo no será parte del documento a menos que sea agregado con la función DOMNode->appendChild().
• Recibe como parámetro el nombre del atributo.
Crear Elementos XML … 3 CreateTextNode($contenido)
• Crea una nueva instancia de la clase DOMText.
• Este texto no será parte del documento a menos que sea agregado con la función DOMNode->appendChild().
• Recibe como parámetros el contenido de texto para el elemento.
setAttribute($nombreAtr,$valor)
• Asigna un valor a un atributo. Si el atributo no existe se crea. Recibe como parámetros el nombre del atributo y su valor.
14/05/2013
20
Crear Elementos XML … 4 appendChild($nodo)
• Agrega un nodo a una lista de nodos. Estos nodos pueden ser atributos, elementos o nodos de texto.
• El nodo puede ser creado utilizando las funciones:
DOMDocument-> createElement()
DOMDocument->createTextNode()
DOMDocument-> createAttribute()
Obtener Elementos XML getElementByTagName($nombreElemento)
• Retorna una nueva instancia de la clase DOMNodeList con todos los elementos que tengan el nombre dado, siguiendo el orden como han sido encontrados en el documento.
• Recibe como parámetro el nombre del(los) elemento(s) que se quiere obtener. Si se coloca como parámetro el asterisco (*), retorna todos los elementos del documento.
• Esta función retorna una lista de elementos del tipo DOMNodeList con todos los elementos seleccionados.
Obtener Elementos XML … 2 getElementById($IdElemento)
• Retorna una nueva instancia de la clase DOMNodeList con todos los elementos que posean un atributo “ID” con el valor dado ($IdElemento), siguiendo el orden como han sido encontrados en el documento. Recibe como parámetro el id del (los) elemento(s) que se quiere obtener.
• Esta función retorna una lista de elementos del tipo DOMNodeList con todos los elementos seleccionados.
Obtener Elementos XML … 3 getAttribute($nombreAtributo)
• Retorna el valor del atributo con el nombre dado, para el nodo actual:
$valor = $nodo->getAttribute(“id”)
14/05/2013
21
Eliminar Elementos XML removeChild($nodo)
• Elimina un nodo de la lista de nodos hijos de un elemento especificado.
• Recibe como parámetro el nodo que se quiere eliminar.
removeAttribute($nombreAtributo)
• Elimina el atributo especificado de un nodo.
• Recibe como parámetro el nombre del atributo que se desea eliminar del elemento.
Resumen • Se conoció en qué consiste XML
• Se utilizó la extensión DOM de PHP para trabajar con documentos XML
• Se crearon scripts PHP que puedan manipular documentos XML
• Se conoció en qué consiste la librería estándar de PHP
Laboratorio: Extensiones PHP
Top Related