Guia 9 - 2023

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 33

UNIVERSIDAD DON BOSCO

FACULTAD DE INGENIERÍA
ESCUELA DE COMPUTACIÓN
GUIA DE LABORATORIO Nº 9
Nombre de la práctica: Utilización de PHP para interactuar con base de
datos MySQL
CICLO 01-2023
Lugar de ejecución: Laboratorio de Informática
Tiempo estimado: 2 horas
Materia: Lenguajes Interpretados en el Servidor

I. OBJETIVOS
● Adquiera la capacidad de realizar validación de formularios antes de enviar
los datos ingresados por los usuarios al servidor.
● Desarrolle la habilidad de conectar con una base de datos MySQL desde un
script PHP.
● Domine las técnicas de concatenación para escribir consultas SQL desde un
script PHP.
● Haga uso de las funciones PHP para enviar las consultas al servidor y
● Procese de forma adecuada los resultados devueltos por una consulta SQL
con un script PHP.
II. INTRODUCCIÓN TEÓRICA

Conectando con MySQL desde PHP


Para trabajar con bases de datos desde PHP se suele utilizar un proceso como el
siguiente:
1. Establecer conexión con el gestor de la base de datos. Esta conexión suele
requerir que se indique el usuario, la contraseña y el servidor donde está alojada
la base de datos.
2. Seleccionar la base de datos con la que se va a trabajar. Este proceso puede estar
incluido en el paso anterior si la función a utilizar ya incluye el argumento para la
base de datos.
3. Componer una instrucción SQL que se desea ejecutar en el servidor MySQL y
almacenarla en una variable de tipo cadena.
4. Enviar la consulta utilizando la variable, o de forma directa.
5. Procesar el resultado obtenido después de ejecutar la consulta.
6. Mostrar el resultado en la página web.
7. Liberar los recursos utilizados en la consulta.
8. Cerrar la conexión con el gestor de base de datos.
Debe considerar que el intérprete de PHP no hace ningún análisis de la sintaxis MySQL
con que se construyó la consulta. Para PHP, se trata únicamente de una cadena de
caracteres. Será el programador el encargado de revisar su validez como sentencia SQL.
mysql_connect(). Esta función tiene la siguiente cabecera:
mysql_connect(string Servidor, string Usuario, string Clave);
Siendo:
● Servidor: Es el nombre (o la dirección IP) del servidor donde está MySQL. El valor
por defecto será 'localhost'.
● Usuario: Es el nombre del usuario que va a acceder a MySQL
● Clave: Es la clave correspondiente al usuario.
Esta función nos devuelve un valor de tipo int que sirve para identificar la conexión con
el servidor SQL, así que podemos asignarlo a una variable con la que referirnos a la
conexión abierta.
Por ejemplo, si todos pueden acceder al servidor, abrimos la conexión haciendo:
$IdConexion = mysql_connect("localhost","","");

Será útil tener los datos en variables (las posteriores modificaciones son así más
sencillas), por ejemplo, en las siguientes líneas guardamos el nombre del servidor,
usuario y clave en variables, y abrimos la conexión:
<?php
$Servidor = "localhost";
$Usuario = "Perico";
$Clave = "Palotes";
$IdConexion = mysql_connect($Servidor, $Usuario, $Clave);
?>
Además, esto podemos grabarlo en un archivo, por ejemplo, 'ConexionBD.php', y en
lugar de escribir lo anterior, poner:
<?php include("Utilidades/ConexionBD.php"); ?>

Así podremos usar este pequeño script de conexión al servidor de bases de datos en los
scripts que lo requieran.
Una vez abierta la conexión, tenemos las siguientes opciones:
• Crear una nueva base de datos
• Borrar una base de datos existente
• Abrir una base de datos existente

Crear una base de datos


Podemos crear una nueva base de datos usando la función:
mysql_create_db(string NombreBD, int IdConexion);
● NombreBD será el nombre que queramos darle a la base de datos
● IdConexion es el identificador de la conexión abierta
Por ejemplo, teniendo abierta una conexión, cuyo identificador hemos guardado en la
variable $IdConexion, para crear una base de datos cuyo nombre sea "PruebaBD",
haremos:
<?php
$NombreBD = "PruebaBD";
mysql_create_db($NombreBD, $IdConexion);
?>

Borrar una base de datos existente


Hay que recordar que borrar una base de datos eliminará toda la información que ésta
tuviera, incluida la estructura de las tablas, no dejando rastro alguno de la base de datos
en el servidor.
La función para eliminar una base de datos es:
mysql_drop_db(string NombreBD, int IdConexion);
Por ejemplo, si queremos eliminar la base de datos que acabamos de crear, haríamos:
<?php
mysql_drop_db($NombreBD, $IdConexion);
?>
donde $NombreBD e $IdConexion son las variables que teníamos definidas antes, una
con el nombre de la base de datos y otra con el identificador de la conexión.

Abrir una base de datos existente


Por último, podemos escoger sobre qué base de datos de las existentes queremos
trabajar, para ello, usaremos la función:
mysql_select_db(string NombreBD, int IdConexion);
Por ejemplo, si queremos abrir una base de datos cuyo nombre sea "Usuarios", haremos
lo siguiente:
<?php
$NombreBD = "Usuarios";
mysql_select_db($NombreBD, $IdConexion);
?>
Siendo, $IdConexion el identificador de la conexión abierta.
Dos funciones más que nos van a ser útiles serán las funciones mysql_errno(); y
mysql_error();.
mysql_errno(int IdConexion);
Esta función devuelve un número de error que se haya dado al hacer alguna operación
sobre una base de datos MySQL.
mysql_error(int IdConexion);
Esta función devuelve un mensaje de error que se haya dado al hacer alguna operación
sobre una base de datos MySQL.
mysql_query
mysql_query -- Envía una sentencia SQL a MySQL
Configurar una conexión con MySQL
PHP 5 proporciona una nueva biblioteca para conectarse con bases de datos de MySQL.
Esta biblioteca se denomina mysqli. Esta biblioteca permite utilizar una sintaxis orientada
a objetos, así como, la sintaxis tradicional basada en procedimientos.
Para conectarse a la base de datos MySQL se utiliza la siguiente sintaxis. Primero se
muestra la sintaxis orientada a objetos y después la basada en procedimientos:
@ $cn = new mysqli([string host [, string userdb [, string passdb [, string db]]]]);
------------------------------------------------------------------------------------
@ $cn = mysqli_connect([string host [, string userdb [, string passdb [, string db]]]]);
En las instrucciones anteriores se ha utilizado el operador de supresión de errores, @,
para evitar que se muestran los errores reportados por PHP y que usted pueda
implementar formas más elegantes para presentar los errores al usuario.

Seleccionar la base de datos de trabajo


Notará que en PHP 5 el constructor mysqli() indica la base de datos con la que se desea
trabajar usando el cuarto argumento del método. Sin embargo, para poder cambiar esta
base de datos de trabajo, tendrá que usar la función mysqli_select_db() a la que se
puede acceder utilizando el enfoque orientado a objetos o basado en procedimientos:
$cn->select_db($db);
O
mysqli_select_db($cn, $db);
Realizar consultas a la base de datos
Para realizar una consulta a la base de datos se puede utilizar la función mysqli_query().
Esta función recibe como argumento la consulta que se desea ejecutar en el servidor de
base de datos. Resulta conveniente configurar esta consulta en una variable de tipo
cadena, en lugar de hacerlo directamente dentro de la función.
Por ejemplo:
$qr = "SELECT * FROM libros WHERE " . $tipobusqueda . " LIKE '%" . $cadenabusqueda .
"%'";
En la práctica casi siempre se verá obligado a concatenar sentencias SQL coon variables
de PHP. Estas variables muy probablemente serán establecidas por el ingreso de
información de parte del usuario a través de formularios.
El siguiente paso es enviar la consulta al servidor MySQL para que sea ejecutada. Para
ello se requiere una instrucción como la siguiente. Se muestra siempre la instrucción
orientada a objeto y la basada en procedimientos:
$rs = $cn->query()
O
$rs = mysqli_query($cn, $db);
Recuperar el resultado de la consulta
Existen un conjunto de funciones para dividir los resultados del identificador o del objeto
de resultados utilizando diversos métodos o formas. Se pueden utilizar funciones como
mysqli_fetch_assoc(), mysqli_fetch_row(), mysqli_fetch_array y mysqli_fetch_object().
Es conveniente obtener antes de aplicar estas funciones el número de registros
devueltos al ejecutar la consulta. Para esto puede utilizarse la propiedad num_rows del
objeto de resultados o la función mysqli_num_rows(), si utilizó el enfoque basado en
procedimientos.
$nr = $rs->num_rows();
O
$nr = mysqli_num_rows();
En el enfoque orientado a objetos, el número de filas devuelto se almacena en el
miembro o propiedad num_rows el objeto de resultados ($rs). En tanto que en el
enfoque basado en procedimientos, la función mysqli_num_rows() indica el número de
filas devueltas por la consulta.
La utilidad de obtener el número de filas devuelto está en que al hacerlo facilita el
procesamiento de los resultados mediante cualquiera de las formas de lazos o bucles de
PHP. Por ejemplo, de la siguiente forma:
for($i=0; $i<$nr; $i++){
//Procesamiento del resultado
}

Desconectarse de la base de datos


Se pueden liberar los conjuntos de resultados mediante el llamado al método $rs->free()
o con mysqli_free_result(), si utiliza el enfoque basado en procedimientos.
Después de esto es conveniente cerrar la conexión con la base de datos. Para ello puede
utilizar:
$cn->close();
O
mysqli_close($cn);

III. MATERIALES Y EQUIPO


Para la realización de la guía de práctica se requerirá lo siguiente:

No. Material Cantidad

1 Guía de práctica #10: Utilización de PHP para interactuar 1


con bases de datos MySQL

2 Computadora con WampServer instalado y funcionando 1


correctamente

3 Editor PHP sublime Text o Eclipse PHP 1

4 Memoria USB o disco flexible 1

IV. PROCEDIMIENTO
Tome el archivo de recursos de la guía 8, denominado recursos-guia-8.zip
complementario a esta guía de práctica. Descomprímalo y restaure la base de datos
importando la estructura y los registros que vienen en el archivo libros.sql. La creación
de la base de datos y su selección ya vienen incluidas en el script. Por tanto, no debe
crear la base de datos. Para esto debe importar el script desde los botones del panel
izquierdo, como se muestra:
En el diálogo que se aparece hacer clic en la ficha Importar archivos y luego hacer clic en
el botón Examinar para seleccionar el archivo a importar.

Una vez que seleccione el archivo libros.sql haga clic en el botón Continuar en este
mismo diálogo.Si el script se ejecuta con éxito, entonces phpMyAdmin le debe mostrar
un mensaje que le indique que la importación se ejecutó exitosamente. La base de datos
se creará durante la ejecución del script.

Ejemplo 1: La siguiente aplicación consulta una base de datos de libros y le


permite administrar con las operaciones típicas que se realizan sobre las tablas
de la base, como insertar nuevo material, en este caso libros, modificar y eliminar
títulos, así como realizar consultas por similitud y búsqueda exacta por uno de
los ítems seleccionados, ISBN, autor o título del libro.
Archivo 1: menuopciones.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<title>Sistema de gestión de libros</title>
<link
href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.
css" rel="stylesheet" id="bootstrap-css">
<script
src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js
"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="js/modernizr.custom.lis.js"></script>
</head>

<body class="container">
<header>
<nav class="navbar navbar-dark bg-primary">
<span class="navbar-text">
<h1>Gestión de libros</h1>
</span>
</nav>

</header>
<div>
<div id="menubuttons">
<div class="col-md-2" id="uno">
<a class="btn btn-block btn-lg btn-success" data-
toggle="modal" data-target="#mymodal"
href="menuopciones.html" target="_self"
title="Menú principal">
<img class="icon" src="img/icon-home.png"><br>
<span class="texto_grande">Inicio</span></a>
</a>
</div>
<div class="col-md-2" id="dos">
<a class="btn btn-block btn-lg btn-danger" data-
toggle="modal" data-target="#mymodal"
href="nuevolibro.html" target="_self"
title="Nuevo libro">
<img class="icon" src="img/icon-new.png"><br>
<span class="texto_grande">Nuevo
libro</span></a>
</a>
</div>
<div class="col-md-2" id="cuatro">
<a class="btn btn-block btn-lg btn-primary" data-
toggle="modal" data-target="#mymodal"
href="mostrarlibros.php?opc=modificar"
target="_self" title="Modificar libro">
<img class="icon" src="img/icon-edit.png"><br>
<span class="texto_grande">Modificar
libro</span>
</a>
</div>
<div class="col-md-2" id="cinco">
<a class="btn btn-block btn-lg btn-warning"
href="mostrarlibros.php?opc=eliminar" target="_self"
title="Eliminar libro">
<img class="icon" src="img/icon-
trash.png"><br>
<span class="texto_grande">Eliminar
libro</span>
</a>

</div>
<div class="col-md-2" id="seis">
<a class="btn btn-block btn-lg btn-info"
href="busquedalibro.html" target="_self"
title="Consultar libro">
<img class="icon" src="img/icon-query.png">
<br>
<span class="texto_grande">Consultar
libro(s)</span>
</a>
</div>
</div>
</div>
</body>

</html>

Archivo 2: nuevolibro.html
<!DOCTYPE html>
<html lang="es">

<head>
<meta charset="utf-8" />
<title>...::: Nuevo libro :::...</title>
<link
href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.
css" rel="stylesheet" id="bootstrap-css">
<script
src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js
"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<link rel="stylesheet" href="css/links.css" />
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><
/script>
<script type="text/javascript">
if (typeof jQuery === 'undefined') {
var e = document.createElement("script");
e.src = "js/modernizr.custom.lis.js";
e.type = "text/javascript";

document.getElementsByTagName("head")[0].appendChild(e);
} </script>
</head>

<body class="container">
<header>
<nav class="navbar navbar-dark bg-primary">
<span class="navbar-text">
<h1>Nuevo libro</h1>
</span>
</nav>

</header>
<section>
<article >
<form action="insertarlibro.php" method="POST" >
<div class="element-number form-group">
<label class="title"></label>
<div class="item-cont">

<input type="text" name="isbn"


placeholder="ISBN" maxlength="18" class="form-control" />
<span class="icon-place"></span>
</div>
</div>
<div class="element-name form-group">
<label class="title"></label>
<div class="nameFirst">
<input type="text" name="autor"
placeholder="Autor del libro" maxlength="50" class="form-control"
/>
<span class="icon-place"></span>
</div>
</div>
<div class="element-input form-group">
<label class="title"></label>
<div class="item-cont">
<input type="text" name="titulo"
placeholder="Título del libro" maxlength="70" class="form-control"
/>
<span class="icon-place"></span>
</div>
</div>
<div class="element-number form-group">
<label class="title"></label>
<div class="item-cont">
<input type="text" name="precio"
placeholder="Precio del libro" maxlength="8" class="form-control"
/>
<span class="icon-place"></span>
</div>
</div>

<input class="btn btn-primary " type="submit"


name="enviar" value="Agregar" />

</form>
<hr class="d-lg-none divider">
<a href="menuopciones.html" class="d-block h3 font-
weight-normal">Regresar<br>
<small class="d-block text-muted text-
small">Menu</small>
</a>
</article>
</section>
</body>
</html>

Archivo 3: busquedalibro.html

<!DOCTYPE html>
<html lang="es">

<head>
<meta charset="utf-8" />
<title>...::: Formulario de búsqueda :::...</title>
<link
href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.
css" rel="stylesheet" id="bootstrap-css">
<script
src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js
"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><
/script>
<script type="text/javascript">
if (typeof jQuery === 'undefined') {
var e = document.createElement("script");
e.src = "js/modernizr.custom.lis.js";
e.type = "text/javascript";

document.getElementsByTagName("head")[0].appendChild(e);
}
</script>
</head>

<body class="container">
<header>
<nav class="navbar navbar-dark bg-primary">
<span class="navbar-text">
<h1>Búsqueda de libro</h1>
</span>
</nav>
</header>
<section>
<article>
<form action="resultados.php" method="POST"
class="formoid-solid-purple">

<div class="form-group">
<label class="title"></label>
<div class="item-cont">
<div class="large"> <span> <select
class="form-control" name="tema">
<option
value="autor">Autor</option>
<option
value="titulo">Título</option>
<option
value="isbn">ISBN</option>
</select> <i></i> <span
class="icon-place"></span> </span> </div>
</div>
</div>
<div class="element-input form-group"> <label
class="title"></label>
<div class="item-cont"> <input class="form-
control" type="text" name="termino" placeholder="Término de
búsqueda"
class="large" /> <span class="icon-
place"></span> </div>
</div>
<div class="form-check"> <label class="title">Tipo
de búsqueda:</label>
<div class="column column1">

<input class="form-check-input"
type="checkbox" name="tipobusqueda" value="exacta" />
<label class="form-check-label">
<span>Búsqueda exacta</span> </label> </div> <span
class="clearfix"></span>
</div>
<div class="submit"> <input class="btn btn-primary
" type="submit" name="enviar" value="Buscar" /> </div>
</form>
<hr class="d-lg-none divider">
<a href="menuopciones.html" class="d-block h3 font-
weight-normal">Regresar<br>
<small class="d-block text-muted text-
small">Menu</small>
</a>
</article>
</section>
</body>
</html>

Archivo 4: mostrarlibros.php
<!DOCTYPE html>
<html lang="es">

<head>
<meta charset="utf-8" />
<title>Libros de la base de datos</title>
<link
href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.
css" rel="stylesheet" id="bootstrap-css">
<script
src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js
"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="js/modernizr.custom.lis.js"></script>
</head>
<header>
<nav class="navbar navbar-dark bg-primary">
<span class="navbar-text">
<h1>Libros disponibles</h1>
</span>
</nav>
</header>

<body class="container">
<?php
//Creando una nueva instancia del objeto de conexión
//a la base de datos
@$db = new mysqli('localhost', 'root', '', 'libros');
//@$db =
mysqli_connect('localhost','lisfet','tecnologico','libros');
if (mysqli_connect_errno()) {
$msgerror = "Error: no se puede conectar a la base de
datos. ";
$msgerror .= "Contacte con soporte para resolver el
problema.";
echo $msgerror;
exit(0);
}
//Establecer el conjunto de caracteres a utf8
$db->set_charset("utf8");

//Si se ha llamado esta página desde el formulario


//para modificar libros ejecutar primero la actualización
//del registro
if (isset($_POST['guardar'])) {
//Creando variables locales con los datos enviados
//desde el formulario de modificación
$isbnx = isset($_GET['id']) ? trim($_GET['id']) : "";
$isbn = isset($_POST['isbn']) ? trim($_POST['isbn']) : "";
$autor = isset($_POST['autor']) ? trim($_POST['autor']) :
"";
$titulo = isset($_POST['titulo']) ? trim($_POST['titulo'])
: "";
$precio = isset($_POST['precio']) ? trim($_POST['precio'])
: "";
//Verificando que se hayan ingresado datos
//en todos los controles del formulario
if (empty($isbn) || empty($autor) || empty($titulo) ||
empty($precio)) {
$msg = "Existen campos en el formulario sin llenar.
";
$msg .= "Regrese al formulario y llene todos los
campos. <br>\n";
$msg .= "[<a href=\"modificar.php?id=" . $isbnx .
"\">Volver</a>]\n";
echo $msg;
exit(0);
}

//Creando la consulta de actualización con los datos


//enviados del formulario de modificación de libros
$consulta = "UPDATE libros SET isbn='" . $isbn . "',
autor='" . $autor;
$consulta .= "', titulo='" . $titulo . "', precio=" .
$precio . " WHERE isbn='" . $isbnx . "'";
//Ejecutando la consulta de actualización
$resultc = $db->query($consulta);
//Obteniendo el número de registros actualizados
$num_results = $db->affected_rows;
echo "<div class=\"query\">\n\t<p>";
echo "\t\t" . $num_results . " fila(s) actualizada(s)\n";
echo "\t</p>\n</div>\n";
$_GET['opc'] = "modificar";
}
if (isset($_GET['del']) && $_GET['del'] == "s") {
$consulta = "DELETE FROM libros WHERE isbn='" .
$_GET['id'] . "'";
$resultc = $db->query($consulta);
$num_results = $db->affected_rows;
echo "se ha eliminado" . $num_results . " registro de isbn
= " . $_GET['id'] . "<br>";
}

//Haciendo una consulta de todos los libros presentes


//en la tabla libros
$consulta = "SELECT * FROM libros ORDER BY autor";
//Ejecutando la consulta a través del objeto $db
$resultc = $db->query($consulta);
//Obteniendo el número de registros devueltos
$num_results = $resultc->num_rows;
echo "<table class='table'>
<colgroup>
<col class=\"isbn\">
</colgroup>
<colgroup>
<col class=\"info\">
<col class=\"info\">
</colgroup>
<colgroup>
<col class=\"price\">
</colgroup>
<colgroup>
<col class=\"action\">
</colgroup>
<thead>
<tr id=\"theader\">
<th>ISBN</th>
<th>AUTOR</th>
<th>TÍTULO</th>
<th>PRECIO</th>
<th>ACCIÓN</th>
</tr>
</thead>
<tbody>";
while ($row = $resultc->fetch_assoc()) {
echo "<tr class=\"normal\"
onmouseover=\"this.className='selected'\"
onmouseout=\"this.className='normal'\">";
echo "<td scope='col'>";
echo "" . $row['isbn'] . "";
echo "</td><td scope='col'>";
echo "" . stripslashes($row['autor']) . "";
echo "</td><td scope='col'>\n";
echo "" . stripslashes($row['titulo']) . "";
echo "</td><td scope='col'>$ ";
echo "" . $row['precio'];
echo "</td><td scope='col'>";
echo "[<a href=\"" . $_GET['opc'] . ".php?id=" .
$row['isbn'] . "\">";
echo "" . $_GET['opc'] . "";
echo "</a>]";
echo "</td></tr>";
}
echo "</tbody>";
echo "<tfoot>";
echo "<tr id=\"tfooter\">";
echo "<th colspan=\"5\">";
//Mostrando el número total de registros de la tabla libros
echo "Número de registros: " . $num_results . "";
echo "</th>";
echo "</tr>";
echo "</tfoot>";
echo "</table>";
?>
<hr class="d-lg-none divider">
<a href="menuopciones.html" class="d-block h3 font-
weight-normal">Regresar<br>
<small class="d-block text-muted text-
small">Menu</small>
</a>
</body>
</html>

Archivo 5: insertarlibro.php

<!DOCTYPE html>
<html lang="es">

<head>
<meta charset="utf-8" />
<title>Resultados al agregar libro</title>
<link
href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.
css" rel="stylesheet" id="bootstrap-css">
<script
src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js
"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><
/script>
<link rel="stylesheet" href="css/links.css" /> <!-- <link
rel="stylesheet" href="css/libros.css" /> -->
<script src="js/modernizr.custom.lis.js"></script>
</head>

<body class="container">
<header>
<nav class="navbar navbar-dark bg-primary">
<span class="navbar-text">
<h1>Resultado al agregar libro a la base de
datos</h1>
</span>
</nav>
</header>
<section>
<article>
<?php
//Asignando los datos del formulario
//a variables locales con nombres cortos

$isbn = trim($_POST['isbn']);
$autor = trim($_POST['autor']);
$titulo = trim($_POST['titulo']);
$precio = trim($_POST['precio']);
//Verificando que se hayan ingresado datos
//en todos los controles del formulario
if (empty($isbn) || empty($autor) || empty($titulo) ||
empty($precio)) {
$msg = "Existen campos en el formulario sin
llenar. ";
$msg .= "Regrese al formulario y llene todos los
campos. <br />\n";
$msg .= "[<a
href=\"nuevolibro.html\">Volver</a>]\n";
echo $msg;
exit(0);
}

//Conectando con el servidor MySQL y seleccionando


//la base de datos con la que se trabajará
@$db = new mysqli('localhost', 'root', '', 'libros');
//@$db = new
mysqli('localhost','tecnologico','fetudb','libros');
//Establecer el conjunto de caracteres a utf8
$db->set_charset("utf8");
if (mysqli_connect_errno()) {
$msgerror = "No se ha logrado conectar a la base
de datos. ";
$msgerror .= "Reporte el problema al
administrador.";
echo $msgerror;
exit(0);
}

//Realizando la consulta para insertar


//el nuevo registro a la base de datos
$planconsulta = "INSERT INTO libros (isbn, autor,
titulo, precio) ";
$planconsulta .= "VALUES (?, ?, ?, ?)";
$sentencia = $db->prepare($planconsulta);
$sentencia->bind_param("sssd", $isbn, $autor, $titulo,
$precio);
$sentencia->execute();
echo "<div class=\"query\">\n\t<p>\n\t\t";
echo $sentencia->affected_rows . " libro(s)
agregado(s) a la base de datos\n";
echo "</p>\n</div>\n";
$sentencia->close();
/*
$consulta = "INSERT INTO libros (isbn, autor, titulo, precio)
";
$consulta .= "VALUES ('" . $isbn . "', '" . $autor . "', '" .
$titulo . "', " . $precio . ")";
$resultc = $db->query($consulta);
if($resultc){
echo $db->affected_rows . " libro agregado a la base de
datos."; } */
//Cerrar la conexión
$db->close(); ?> <br />

<hr class="d-lg-none divider">


<section class="m-b-30 m-t-30">
<div class="row pager">
<div class="col-md-6 text-left">
<a href="menuopciones.html" class="d-block
h3 font-weight-normal">Regresar<br>
<small class="d-block text-muted text-
small">Menu</small>
</a>
</div>
<div class="col-md-6 text-right">
<a href="nuevolibro.html" class="d-block
h3 font-weight-normal">
Agregar<br>
<small class="d-block text-muted text-
small">Otro libro</small>
</a>

</div>

</div>
</section>
</section>
</body>
</html>

Archivo 6: modificar.php

<!DOCTYPE html>
<html lang="es">

<head>
<meta charset="utf-8" />
<title>Modificar un libro</title>
<link
href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.
css" rel="stylesheet" id="bootstrap-css">
<script
src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js
"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<link rel="stylesheet" href="css/links.css" />
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><
/script>
</head>

<body class="container">
<header>
<nav class="navbar navbar-dark bg-primary">
<span class="navbar-text">
<h1>Modificar libro</h1>
</span>
</nav>
</header>
<section>
<article> <?php
//Creando una nueva instancia del objeto de
conexión
//a la base de datos
@$db = new mysqli('localhost', 'root', '',
'libros');
//@$db = new
mysqli('localhost','tecnologico','fetudb','libros');
if (mysqli_connect_errno()) {
$msgerror = "Error: no se puede conectar
a la base de datos";
$msgerror .= "Contacte con soporte para
resolver el problema";
echo $msgerror;
exit(0);
} //Establecer el conjunto de caracteres a
utf8 $db->set_charset("utf8");

//Haciendo una consulta de todos los libros


presentes
//en la tabla libros
$consulta = "SELECT * FROM libros WHERE
isbn='" . $_GET['id'] . "'";
//echo $consulta . "<br>\n";
//Ejecutando la consulta a través del objeto
$db
$resultc = $db->query($consulta);
//Obteniendo el número de registros devueltos
$num_results = $resultc->num_rows;
$row = $resultc->fetch_assoc(); ?>
<form action="mostrarlibros.php?id=<?php
echo $_GET['id']
?>" method="POST" class="formoidsolid-purple">

<div class="element-number form-group">


<label class="title"></label>
<div class="item-cont">
<input type="text" class="form-control"
name="isbn" value="<?php echo $row['isbn'] ?>" maxlength="18"
placeholder="ISBN" class="large" /> <span class="icon-
place"></span> </div>
</div>
<div class="element-name form-group"> <label
class="title"></label>
<div class="nameFirst"> <input class="form-
control" type="text" name="autor" value="<?php echo $row['autor']
?>" maxlength="50" placeholder="Autor" class="large" /> <span
class="icon-place"></span> </div>
</div>
<div class="element-input form-group"> <label
class="title"></label>
<div class="item-cont"> <input class="form-
control" type="text" name="titulo" value="<?php echo
$row['titulo'] ?>" maxlength="70" placeholder="Título"
class="large" /> <span class="icon-place"></span> </div>
</div>
<div class="element-number form-group"> <label
class="title"></label>
<div class="item-cont"> <input class="form-
control" type="text" name="precio" value="<?php echo
$row['precio'] ?>" maxlength="8" placeholder="Precio"
class="large" /> <span class="icon-place"></span> </div>
</div>
<div > <input type="submit" class="btn btn-primary
" name="guardar" value="Guardar" /> </div>
</form>
<!-- <form action="mostrarlibros.php?id=
<?php echo $_GET['id'] ?>" method="POST">
<fieldset> <legend><span>Modificar la información de
un libro</span>
</legend>
<ul>
<li>
<label for="isbn" class="item">ISBN: </label>
<div class="campo">
<input type="text" name="isbn" value="<?php
echo $row['isbn'] ?>" size="18" maxlength="18" placeholder="ISBN"
/>
</div>
</li>
<li>
<label for="autor" class="item">Autor: </label>
<div class="campo">
<input type="text" name="autor" value="<?php
echo $row['autor'] ?>" size="36" maxlength="50"
placeholder="Autor" />
</div>
</li>
<li>
<label for="titulo" class="item">Título: </label>
<div class="campo">
<input type="text" name="titulo" value="<?php
echo $row['titulo'] ?>" size="36" maxlength="60"
placeholder="T&iacute;tulo" />
</div> </li> <li>
<label for="precio" class="item">Precio:
</label>
<div class="campo">
<input type="text" name="precio"
value="<?php echo $row['precio'] ?>" size="6" maxlength="6"
placeholder="Precio" />
</div>
</li>
<li>
<div class="boton">
<input type="submit" name="guardar" value="Guardar"
/> </div> </li> </ul> </fieldset> </form> -->

<hr class="d-lg-none divider">


<a href="mostrarlibros.php?opc=modificar" class="d-
block h3 font-weight-normal">Volver<br>
<small class="d-block text-muted text-small">a la
tabla de modificación</small>
</a>
</article>
</section>
</body>
</html>

Archivo 7: eliminar.php

<?php @$db = new mysqli('localhost', 'root', '', 'libros');


//@$db = new mysqli('localhost','tecnologico','fetudb','libros');
//Establecer el conjunto de caracteres a utf8
$db->set_charset("utf8");

if (mysqli_connect_errno()) {
$msgerror = "Error: no se puede conectar a la base de datos";
$msgerror .= "Contacte con soporte para resolver el problema";
echo $msgerror;
exit(0);
}
$isbn = $_GET['id'];
$sql = "SELECT * FROM libros WHERE isbn = '" . $isbn . "'";
$result = $db->query($sql);
$row = $result->fetch_assoc();
$msg = "<script text=\"text/javascript\">\n";

$preg = "Deseas eliminar el libro de: isbn = ";


$preg .= "isbn = " . $row['isbn'] . ",";
$preg .= "autor = " . $row['autor'] . ",";
$preg .= "titulo = " . $row['titulo'] . ",";
$preg .= "precio = " . $row['precio'] . ".";

$msg .= "if(confirm(\"" . $preg . "\")){";


$msg .= "location.href=\"mostrarlibros.php?opc=eliminar&del=s&id="
. $isbn . "\";}";
$msg .=
"else{location.href=\"mostrarlibros.php?opc=eliminar&del=n\";}</sc
ript>";
echo utf8_decode($msg);

Archivo 8: resultados.php

<!DOCTYPE html>
<html lang="es">

<head>
<meta charset="utf-8" />
<title>Resultados de la búsqueda</title>
<link
href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.
css" rel="stylesheet" id="bootstrap-css">
<script
src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js
"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script
src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><
/script>
<link rel="stylesheet" href="css/links.css" /> <!-- <link
rel="stylesheet" href="css/libros.css" /> -->
<script src="js/modernizr.custom.lis.js"></script>
</head>
<body class="container">
<header>
<nav class="navbar navbar-dark bg-primary">
<span class="navbar-text">
<h1>Resultados de la búsqueda</h1>
</span>
</nav>
</header>
<section>
<article> <?php
//Asignando los datos ingresados en el
formulario
//a variables locales con nombres cortos
$tema = $_POST['tema'];
$termino = isset($_POST['termino']) ?
$_POST['termino'] : "";
$termino = trim($termino);
$tipobusqueda = isset($_POST['tipobusqueda'])
? $_POST['tipobusqueda'] : "";
if (empty($tema) || empty($termino)) {
$msg = "No se ha ingresado detalle de la
búsqueda. ";
$msg .= "Regrese al formulario e ingrese
los datos en el formulario.<br>";
$msg .= "[<a
href=\"busquedalibro.html\">Volver</a>]";
echo $msg;
exit(0);
}

//Estableciendo la conexión con el servidor


MySQL y
//verificando si no se ha producido un error
@$db = new mysqli('localhost', 'root', '',
'libros');
if (mysqli_connect_errno()) {
$msgerror = "Error: no se puede conectar
a la base de datos. ";
$msgerror .= "Contacte con soporte para
resolver el problema.";
echo $msgerror;
exit(0);
} //Establecer el conjunto de caracteres a
utf8
$db->set_charset("utf8");

if ($tipobusqueda == 'exacta') {
$consulta = "SELECT * FROM libros WHERE "
. $tema;
$consulta .= " = '" . $termino . "'";
} else {
$consulta = "SELECT * FROM libros WHERE "
. $tema;
$consulta .= " LIKE '%" . $termino . "%'";
}
echo "<div class=\"query\">\n\t<p>" .
$consulta . "</p>\n\t";
$resultc = $db->query($consulta);
$num_results = $resultc->num_rows;
echo "<p>Número de libros encontrados: .
$num_results</p>\n</div>\n";

for ($i = 0; $i < $num_results; $i++) {

echo "<div class='card' style='width:


100%;'>";
$row = $resultc->fetch_assoc();
echo "<div class='card-header bg-
info'>Libro " . ($i + 1) . "</div>";
echo "<div class='card-body'>";
echo" <ul class='list-group list-group-
flush'>";
echo"<li class='list-group-item'>Título "
. ($i + 1) . ":".stripslashes($row['titulo'])."</li>";
echo"<li class='list-group-item'>Autor
:".stripslashes($row['autor'])."</li>";
echo"<li class='list-group-item'>ISBN
:".stripslashes($row['isbn'])."</li>";
echo"<li class='list-group-item'>Precio
:".stripslashes($row['precio'])."</li>";
echo" </ul>";
echo "</div>";
echo "</div>";
}
/* $msg = "<p>[<a
href=\"busquedalibro.html\">realizar otra
búsqueda</a>]&nbsp&nbsp"; $msg .= "[<a
href=\"menuopciones.html\">volver al menú</a>]</p>"; echo $msg;
*/
$resultc->free();
$db->close(); ?>
<hr class="d-lg-none divider">
<section class="m-b-30 m-t-30">
<div class="row pager">
<div class="col-md-6 text-left">
<a href="menuopciones.html" class="d-block
h3 font-weight-normal">Regresar<br>
<small class="d-block text-muted text-
small">Menu</small>
</a>
</div>
<div class="col-md-6 text-right">
<a href="busquedalibro.html" class="d-
block h3 font-weight-normal">
Realizar<br>
<small class="d-block text-muted text-
small">Otra busqueda</small>
</a>
</div>
</div>
</section>
</section>
</body>
</html>

En el navegador de su preferencia podrá visualizar lo siguiente:

Nuevo libro
Modificar Libro
Eliminar Libro

Consultar libro
V. DISCUSIÓN DE RESULTADOS

1. Modifique el ejemplo en el script insertarlibro.php busque la parte del


código que está entre comentarios. Quite los comentarios y deduzca qué
líneas de código deben encerrarse entre comentarios de las que no tenían
antes para que el script siga realizando inserciones de nuevo registros en la
base de datos de forma correcta.

VI. BIBLIOGRAFIA

● Gutiérrez, Abraham / Bravo, Ginés. PHP 5 a través de ejemplos. Editorial


Alfaomega RAMA. 1ra edición. México. Junio 2005.
● Gil Rubio, Francisco Javier/Villaverde, Santiago Alonso/Tejedor Cerbel, Jorge A.
Creación de sitios web con PHP 5. Editorial McGraw-Hill. 1ra edición. Madrid,
España, 2006.
● John Coggeshall. La Biblia de PHP 5. 1ra Edición. Editorial Anaya Multimedia.
Madrid España.
● http://www.php.net/manual/en

También podría gustarte