Guia 9 - 2023
Guia 9 - 2023
Guia 9 - 2023
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
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
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.
<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">
</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");
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);
}
</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");
Archivo 7: eliminar.php
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";
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);
}
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";
Nuevo libro
Modificar Libro
Eliminar Libro
Consultar libro
V. DISCUSIÓN DE RESULTADOS
VI. BIBLIOGRAFIA