Está en la página 1de 22

001 TALLER 1 PHP - PDO

A. Ubique el grupo que le corresponde

B. Realicen un documento donde teniendo como base PHP 7 y el concepto de MVC


explique CON SUS PALABRAS

1. Sobre ob_start();

a. ¿Qué es?

Activar el almacenamiento en búfer de salida.

b. ¿Para qué se usa?

Mientras dicho almacenamiento esté activo, no se enviará ninguna salida desde el script
(aparte de cabeceras), en su lugar la salida se almacenará en un búfer interno.

c. ¿Cuándo debemos usarlo?

El contenido de este búfer interno se puede copiar a una variable de tipo string
usando ob_get_contents(). Para producir la salida de lo almacenado en el búfer interno
se ha de usar ob_end_flush(). De forma alternativa, ob_end_clean() desechará de manera
silenciosa el contenido del búfer.

2. Sobre ob_flush();

a. ¿Qué es?

Vaciar (enviar) el búfer de salida.

b. ¿Para qué se usa?

Esta función enviará el contenido del búfer de salida (si existe).

c. ¿Cuándo debemos usarlo?

Si fuera necesario continuar procesando el contenido del búfer, se ha de llamar


a ob_get_contents() antes que a ob_flush(), ya que el contenido del búfer es descartado
después de llamar a ob_flush().
Esta función no destruye el búfer de salida, como lo hace ob_end_flush().
3. Sobre session_start ();

a. ¿Qué es?

Iniciar una nueva sesión o reanudar la existente

b. ¿Para qué se usa?

Crea una sesión o reanuda la actual basada en un identificador de sesión pasado


mediante una petición GET o POST, o pasado mediante una cookie.

c. ¿Cuándo debemos usarlo?

Cuando session_start() es llamada o cuando se autoinicia una sesión, PHP llamará a los
gestores de almacenamiento de sesiones open y read. Éstos serán un gestor de
almacenamiento proporcionado por omisión o por extensiones de PHP (como SQLite o
Memcached); o pueden ser un gestor personalizado como está definido
en session_set_save_handler(). La llamada de retorno read recuperará cualquier
información se de sesión existente (almacenada en un formato serializado especial) y
será deserializada y usada para rellenar automáticamente la variable superglobal
$_SESSION cuando la llamada de retorno read devuelva la información de sesión
guardada a la gestión de sesiones de PHP.

4. Sobre header();

a. ¿Qué es?

Enviar encabezado sin formato HTTP

b. ¿Para qué se usa?

Es usado para enviar encabezados HTTP sin formato.

c. ¿Cuándo debemos usarlo?

header(); debe ser llamado antes de mostrar nada por pantalla, etiquetas HTML, líneas
en blanco desde un fichero o desde PHP. Es un error muy común leer código con
funciones como include o require, u otro tipo de funciones de acceso de ficheros que
incluyen espacios o líneas en blanco que se muestran antes de llamar a la
función header(). Sucede el mismo problema cuando se utiliza un solo fichero
PHP/HTML.

d. 1 ejemplo

<html>
<?php
/* Esto producirá un error. Fíjese en el html
* que se muestra antes que la llamada a header() */
header('Location: http://www.example.com/');
exit;
?>

5. Sobre exit();

a. ¿Qué es?

Imprime un mensaje y termina el script actual.

b. ¿Para qué se usa?

Finaliza la ejecución del script.

c. ¿Cuándo debemos usarlo?

Para finalizar la ejecución del script. Funciones shutdown y Objectos


destructores siempre serán ejecutados incluso si se llama a la función exit.

6. Sobre PDO();

a. ¿Qué es?

Representa una conexión entre PHP y un servidor de bases de datos.

b. ¿Para qué se usa?

Para establecer conexiones creando instancias de la clase base PDO. No importa el


controlador que se utilice; siempre se usará el nombre de la clase PDO.
c. ¿Cuándo debemos usarlo?

Cuando se requieran conexiones durante el desarrollo, el constructor aceptará


parámetros para especificar el origen de la base de datos (conocido como DSN) y,
opcionalmente, el nombre de usuario y la contraseña (si la hubiera).

d. ¿Por qué debemos usarlo?

PDO proporciona una capa de abstracción de acceso a datos, lo que significa que,
independientemente de la base de datos que se esté utilizando, se emplean las mismas
funciones para realizar consultas y obtener datos. PDO no proporciona una abstracción
de bases de datos; no reescribe SQL ni emula características ausentes. Se debería usar
una capa de abstracción totalmente desarrollada si fuera necesaria tal capacidad.

7. Sobre PDO();

a. ¿Qué es?

La extensión Objetos de Datos de PHP (PDO por sus siglas en inglés) define una interfaz
ligera para poder acceder a bases de datos en PHP. b. ¿Para qué se usa?

c. ¿Cuándo debemos usarlo?

Cada controlador de bases de datos que implemente la interfaz PDO puede exponer
características específicas de la base de datos, como las funciones habituales de la
extensión. Se ha de observar que no se puede realizar ninguna de las funciones de las
bases de datos utilizando la extensión PDO por sí misma; se debe utilizar un controlador
de PDO específico de la base de datos para tener acceso a un servidor de bases de datos.

d. ¿Por qué debemos usarlo?

PDO proporciona una capa de abstracción de acceso a datos, lo que significa que,
independientemente de la base de datos que se esté utilizando, se emplean las mismas
funciones para realizar consultas y obtener datos. PDO no proporciona una abstracción
de bases de datos; no reescribe SQL ni emula características ausentes. Se debería usar
una capa de abstracción totalmente desarrollada si fuera necesaria tal capacidad.

8. Sobre exec();
a. ¿Qué es?

Es un método que nos permite ejecutar un comando y guardar el resultado en una


variable. (Ejecutar un programa externo)

b. ¿Para qué se usa?

Para ejecutar el comando dado.

c. 1 ejemplo

exec ( string $command [, array &$output [, int &$return_var ]] )


: string

9. Sobre execute() ;

a. ¿Qué es?

PDOStatement::execute — Ejecuta una sentencia preparada

b. ¿Para qué se usa?

Ejecuta la sentencia preparada. Si ésta incluía marcadores de parámetros, se debe:

-Llamar a PDOStatement::bindParam() y/o PDOStatement::bindValue() para vincular


variables o valores (respectivamente) a los marcadores de parámetros. Las variables
vinculadas pasan su valor como entrada y reciben el valor de salida, si lo hubiera, de sus
marcadores de parámetros asociados

-Pasar un array de valores de parámetros de sólo entrada.

e. 1 ejemplo

<?php
/* Ejecutar una sentencia preparada vinculando una variable y un
valor */
$calorías = 150;
$color = 'gre';
$gsent = $gbd->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calorías AND colour LIKE :color');
$gsent->bindParam(':calories', $calorías, PDO::PARAM_INT);
$sth->bindValue(':colour', "%{$color}%");
$gsent->execute();
?>

10. Sobre prepare();

a. ¿Qué es?

PDOStatement::fetch — Obtiene la siguiente fila de un conjunto de resultados

b. ¿Para qué se usa?

Obtiene una fila de un conjunto de resultados asociado al objeto PDOStatement. El


parámetro fetch_style determina cómo PDO devuelve la fila.

c. 1 ejemplo

<?php
$gsent = $gbd->prepare("SELECT name, colour FROM fruit");
$gsent->execute();

/* Prueba de tipos de PDOStatement::fetch */


print("PDO::FETCH_ASSOC: ");
print("Devolver la siguiente fila como un array indexado por nom
bre de colunmna\n");
$result = $gsent->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");

print("PDO::FETCH_BOTH: ");
print("Devolver la siguiente fila como un array indexado por nom
bre y número de columna\n");
$result = $gsent->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");

print("PDO::FETCH_LAZY: ");
print("Devolver la siguiente fila como un objeto anónimo con nom
bres de columna como propiedades\n");
$result = $gsent->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");

print("PDO::FETCH_OBJ: ");
print("Devolver la siguiente fila como un objeto anónimo con nom
bres de columna como propiedades\n");
$result = $gsent->fetch(PDO::FETCH_OBJ);
print $result->name;
print("\n");
?>

11. Sobre fetchAll ();

a. ¿Qué es?

b. ¿Para qué se usa?

c. ¿Cuándo debemos usarlo?

d. Puede dibujar o ejemplificar que es lo que hace este método

12. Sobre bindParam ();

a. ¿Qué es?

PDOStatement::bindParam — Vincula un parámetro al nombre de variable especificado

b. ¿Para qué se usa?

Vincula una variable de PHP a un parámetro de sustitución con nombre o de signo de


interrogación correspondiente de la sentencia SQL que fue usada para preparar la
sentencia. A diferencia de PDOStatement::bindValue(), la variable es vinculada como una
referencia y solamente será evaluada en el momento en el que se llame
a PDOStatement::execute().

c. 1 ejemplo

<?php
/* Ejecutar una sentencia preparada vinculando varialbes de PHP
*/
$calorías = 150;
$color = 'red';
$gsent = $gbd->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$gsent->bindParam(':calories', $calorías, PDO::PARAM_INT);
$gsent->bindParam(':colour', $color, PDO::PARAM_STR, 12);
$gsent->execute();
?>

13. Sobre close ();

a. ¿Qué es?

mysqli::close -- mysqli_close — Cierra una conexión previamente abierta a una base de


datos.

b. ¿Para qué se usa?

Para cerrar una conexión abierta previamente a base de datos.

c. ¿Cuándo debemos usarlo?

Por tanto, aunque el cierre explícito de conexiones abiertas y la liberación de conjuntos


de resultados sean opcionales, se recomienda hacerlos. Así, se devolverán
inmediatamente los recursos a PHP y a MySQL, lo que puede mejorar el rendimiento.
Para información detalla.

d. ¿Por qué debemos usarlo?

Las conexiones de MySQL no persistentes y los conjuntos de resultados son


automáticamente destruidos cuando un script de PHP finaliza su ejecución.

14. Sobre la variable $_SESSION

a. ¿Qué es?

Es una sesión sencilla del lenguaje PHP.

b. ¿Para qué se usa?

Se usa para almacenar datos para usuarios de manera individual usando un ID de sesión
único.

c. ¿Cuándo debemos usarla?


Cuando una sesión se inicia, PHP recuperará una sesión existente usando el ID pasado
(normalmente desde una cookie de sesión) o, si no se pasa una sesión, se creará una
sesión nueva. PHP rellenará la variable superglobal $_SESSION con cualesquiera datos
de la sesión iniciada. Cuando PHP se cierra, automáticamente toma el contenido de la
variable superglobal $_SESSION, la serializa, y la envía para almacenarla usando el gestor
de almacenamiento de sesiones.

d. ¿Que ámbito tiene?

Tiene ámbito global, cuyos nombres son compartidos con las variables de sesión.

e. De 1 ejemplo

<?php
session_start();
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>

15. Investigue un ejemplo de CRUD con PDO

EL uso de sistemas CRUD es muy requerido en el mundo de los sistemas web y/o
sistemas de escritorio. Sin embargo, apoyados de una estructura PDO PHP es muy
recomendable su implementación por estar en la vanguardia de la tecnología y
evitándonos ataques tipo inyección SQL.

Creación BD

CREATE TABLE IF NOT EXISTS `empleados` (

`idEmp` int(11) NOT NULL,

`Nombres` varchar(100) DEFAULT NULL,

`Apellidos` varchar(100) DEFAULT NULL,

`Telefono` text,

`Carrera` varchar(100) DEFAULT NULL,

`Pais` varchar(100) DEFAULT NULL


) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
COMMENT='Tabla Empleados';

INSERT INTO `empleados` (`idEmp`, `Nombres`, `Apellidos`,


`Telefono`, `Carrera`, `Pais`) VALUES

(1, 'Luis', 'Morales', '784521589', 'Modelamiento', 'Mexico'),

(2, 'Katrina', 'Cespedes', '215489653', 'Psicologia', 'Panama'),

(3, 'Antonio', 'Castelino', '025412569', 'Administracion',


'Adminsitrador '),

(4, 'German', 'Molina', '745845214', 'Ing. Sistemas',


'Argentina'),

(6, 'Marcial', 'Cancares', '545678903', 'Ing. Produccion',


'Colombia');

ALTER TABLE `empleados`

ADD PRIMARY KEY (`idEmp`);

ALTER TABLE `empleados`

MODIFY `idEmp` int(11) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=7;

Creación conexión

<?php

// Creamos la clase Connection

Class Connection{

// Declaramos los accesos al servidor de datos


private $server =
"mysql:host=localhost;dbname=php_crudbootstrap";

private $username = "root";

private $password = "";

private $options = array(PDO::ATTR_ERRMODE =>


PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE =>
PDO::FETCH_ASSOC,);

protected $conn;

public function open(){

try{

$this->conn = new PDO($this->server, $this-


>username, $this->password, $this->options);

return $this->conn;

catch (PDOException $e){

// Muestra un mensaje si falla la conexión

echo "Hubo un problema con la conexión: " . $e-


>getMessage();

public function close(){

$this->conn = null;

}
}

?>

Visualización de datos

<div class="row">

<div class="col-sm-8 col-sm-offset-2">

<a href="#addnew" class="btn btn-primary" data-


toggle="modal"><span class="glyphicon glyphicon-plus"></span>
Nuevo Registro</a>

<?php

session_start();

if(isset($_SESSION['message'])){

?>

<div class="alert alert-info text-center"


style="margin-top:20px;">

<?php echo $_SESSION['message']; ?>

</div>

<?php

unset($_SESSION['message']);

?>

<table class="table table-bordered table-striped" style="margin-


top:20px;">

<thead>
<th>ID</th>

<th>Nombres</th>

<th>Apellidos</th>

<th>Telefono</th>

<th>Carrera</th>

<th>Pais</th>

<th>Acción</th>

</thead>

<tbody>

<?php

//incluimos el fichero de conexion

include_once('dbconect.php');

$database = new Connection();

$db = $database->open();

try{

$sql = 'SELECT * FROM empleados';

foreach ($db->query($sql) as $row) {

?>

<tr>

<td><?php echo $row['idEmp'];


?></td>

<td><?php echo $row['Nombres'];


?></td>

<td><?php echo $row['Apellidos'];


?></td>
<td><?php echo $row['Telefono'];
?></td>

<td><?php echo $row['Carrera'];


?></td>

<td><?php echo $row['Pais'];


?></td>

<td>

<a href="#edit_<?php echo


$row['idEmp']; ?>" class="btn btn-success btn-sm" data-
toggle="modal"><span class="glyphicon glyphicon-edit"></span>
Editar</a>

<a href="#delete_<?php echo


$row['idEmp']; ?>" class="btn btn-danger btn-sm" data-
toggle="modal"><span class="glyphicon glyphicon-trash"></span>
Borrar</a>

</td>

<?php
include('BorrarEditarModal.php'); ?>

</tr>

<?php

catch(PDOException $e){

echo "Hubo un problema en la conexión: " .


$e->getMessage();

//Cerrar la Conexion

$database->close();
?>

</tbody>

</table>

</div>

</div>

</div>

Agregar Registros

<!-- Agregar Nuevos Registros -->

<div class="modal fade" id="addnew" tabindex="-1" role="dialog"


aria-labelledby="myModalLabel" aria-hidden="true">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" data-


dismiss="modal" aria-hidden="true">&times;</button>

<center><h4 class="modal-title"
id="myModalLabel">Agregar Nuevo Registro</h4></center>

</div>

<div class="modal-body">

<div class="container-fluid">

<form method="POST" action="AgregarNuevo.php">

<div class="row form-group">

<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Nombres:</label>
</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="nombres">

</div>

</div>

<div class="row form-group">

<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Apellidos:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="apellidos">

</div>

</div>

<div class="row form-group">

<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Telefono:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="telefono">

</div>

</div>

<div class="row form-group">


<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Carrera:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="carrera">

</div>

</div>

<div class="row form-group">

<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Pais:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="pais">

</div>

</div>

</div>

</div>

<div class="modal-footer">

<button type="button" class="btn btn-default"


data-dismiss="modal"><span class="glyphicon glyphicon-
remove"></span> Cancelar</button>

<button type="submit" name="agregar" class="btn


btn-primary"><span class="glyphicon glyphicon-floppy-
disk"></span> Guardar Registro</button>
</form>

</div>

</div>

</div>

</div>

Editar Registros

<!-- Ventana Editar Registros CRUD -->

<div class="modal fade" id="edit_<?php echo $row['idEmp']; ?>"


tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-
hidden="true">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" data-


dismiss="modal" aria-hidden="true">&times;</button>

<center><h4 class="modal-title"
id="myModalLabel">Editar Empleado</h4></center>

</div>

<div class="modal-body">

<div class="container-fluid">

<form method="POST"
action="EditarRegistro.php?id=<?php echo $row['idEmp']; ?>">

<div class="row form-group">

<div class="col-sm-2">
<label class="control-label"
style="position:relative; top:7px;">Apellidos:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="nombres" value="<?php echo $row['Nombres']; ?>">

</div>

</div>

<div class="row form-group">

<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Apellidos:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="apellidos" value="<?php echo $row['Apellidos'];
?>">

</div>

</div>

<div class="row form-group">

<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Telefono:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="telefono" value="<?php echo $row['Telefono']; ?>">

</div>
</div>

<div class="row form-group">

<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Carrera:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="carrera" value="<?php echo $row['Carrera']; ?>">

</div>

</div>

<div class="row form-group">

<div class="col-sm-2">

<label class="control-label"
style="position:relative; top:7px;">Pais:</label>

</div>

<div class="col-sm-10">

<input type="text" class="form-


control" name="pais" value="<?php echo $row['Pais']; ?>">

</div>

</div>

</div>

</div>

<div class="modal-footer">

<button type="button" class="btn btn-default"


data-dismiss="modal"><span class="glyphicon glyphicon-
remove"></span> Cancel</button>
<button type="submit" name="editar" class="btn
btn-success"><span class="glyphicon glyphicon-check"></span>
Actualizar Ahora</a>

</form>

</div>

</div>

</div>

</div>

<!-- Borrar -->

<div class="modal fade" id="delete_<?php echo $row['idEmp']; ?>"


tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-
hidden="true">

<div class="modal-dialog">

<div class="modal-content">

<div class="modal-header">

<button type="button" class="close" data-


dismiss="modal" aria-hidden="true">&times;</button>

<center><h4 class="modal-title"
id="myModalLabel">Borrar Empleado</h4></center>

</div>

<div class="modal-body">

<p class="text-center">¿Esta seguro de Borrar el


registro?</p>

<h2 class="text-center"><?php echo


$row['Nombres'].' '.$row['Apellidos']; ?></h2>

</div>
<div class="modal-footer">

<button type="button" class="btn btn-default"


data-dismiss="modal"><span class="glyphicon glyphicon-
remove"></span> Cancelar</button>

<a href="BorrarRegistro.php?id=<?php echo


$row['idEmp']; ?>" class="btn btn-danger"><span class="glyphicon
glyphicon-trash"></span> Si</a>

</div>

</div>

</div>

</div>

También podría gustarte