Está en la página 1de 10

PHP

SESIÓN 25
PANEL PARA ABM DE LA TABLA ARTICULOS

V-25-1
1. MYSQLI - BORRADO DE UN REGISTRO DE LA TABLA ARTICULOS

Para borrar un artículo debemos implementar un formulario donde se ingrese por teclado el código
de articulo y seguidamente un algoritmo que verifique si existe dicho artículo y proceda a su
borrado llamando al comando SQL delete.

El formulario donde se ingresa el código de artículo a borrar es:

pagina1.php
<!doctype html>
<html>
<head>
<title>Borrado de un artículo</title>
</head>
<body>
<form method="post" action="pagina2.php">
Ingrese el código de artículo a borrar:
<input type="text" name="codigo" size="10" required>
<br>
<input type="submit" value="Consultar">
</form>
</body>
</html>

pagina2.php
<!doctype html>
<html
>
<head>
<title>Borrado de un artículo</title>
</
head>
<body>

<?php
$con=mysqli_connect("localhost","root","","base1")
or die("Problemas con la conexión a la base de
datos");

$registro=mysqli_query($con,"select descripcion from articulos


where codigo=$_REQUEST[codigo]") or
die(mysqli_error($con));

if ($reg=mysqli_fetch_array($registro))
{
mysqli_query($con,"delete from articulos where codigo=$_REQUEST[codigo]")
or die(mysqli_error($con));
echo 'La descripción del artículo que se eliminó es:'.$reg['descripcion'];
}
else
echo 'No existe un artículo con dicho

código'; mysqli_close($con);
Steve Jobs – Juntos hacia tu éxito 1
PHP
?>
</body>
</html>

Mediante un select consultamos si existe un artículo con el código ingresado:


$registro=mysqli_query($con,"select descripcion from articulos where
codigo=$_REQUEST[codigo]") or
die(mysqli_error($con));

En caso afirmativo procedemos a ejecutar el comando SQL delete y mostrar la descripción del
artículo borrado:

if ($reg=mysqli_fetch_array($registro))
{
mysqli_query($con,"delete from articulos where codigo=$_REQUEST[codigo]") or
die(mysqli_error($con));
echo 'La descripción del artículo que se eliminó es:'.$reg['descripcion'];

V-25-2
2. PANEL PARA ABM DE LA TABLA ARTICULOS

Para modificar los datos de un artículo implementaremos un algoritmo que solicite el ingreso del
codigo de artículo que queremos modificar, en caso que exista permitiremos cambiar su
descripción, precio y rubro.

Para poder cambiar el rubro debemos mostrar el rubro actual en un control select.

La descripción y precio actual se muestran precargados en el formulario de modificación.

Crearemos tres páginas. La primera donde el operador ingresa el codigo de artículo que quiere
modificar, la segunda página mostraremos un formulario HTML con los datos precargados y
finalmente la tercer página tendrá como objetivo ejecutar el comando SQL update.

El primer formulario solicita la carga del código del artículo que queremos modificar sus datos:

pagina1.php
<!doctype html>
<html>
<head>
<title>Modificación de artículo</title>
</head>
<body>
<form method="post" action="pagina2.php">
Ingrese el código de artículo a modificar:
<input type="text" name="codigo" size="10" required>
<br>
<input type="submit" value="Consultar">
</form>
</body>
</html>

Steve Jobs – Juntos hacia tu éxito 2


PHP

Lo más importante aparece en el segundo formulario donde debemos mostrar precargados los
datos actuales:

pagina2.php
<!doctype html>
<html>
<head>
<title>Modificación de artículo.</title>
</head>
<body>

<?php
$con=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión a la base de datos");

$registro=mysqli_query($con,"select descripcion, precio, codigorubro from articulos where


codigo=$_REQUEST[codigo]") or
die(mysqli_error($con));

if ($reg=mysqli_fetch_array($registro))
{
?>
<form method="post" action="pagina3.php">
Descripción del artículo:
<input type="text" name="descripcion" size="50" value="<?php echo $reg['descripcion']; ?>">
<br>
Precio
<input type="text" name="precio" size="10" value="<?php echo $reg['precio']; ?>">
<br>
Rubro:
<select name="codigorubro">
<?php
$registros2=mysqli_query($con,"select codigo,descripcion from rubros") or
die(mysqli_error($con));
while ($reg2=mysqli_fetch_array($registros2))
{
if ($reg2['codigo']==$reg['codigorubro'])
echo "<option value=\"".$reg2['codigo']."\" selected>".$reg2['descripcion']."</option>";
else
echo "<option value=\"".$reg2['codigo']."\">".$reg2['descripcion']."</option>";
}
?>
</select>

<input type="hidden" name="codigo" value="<?php echo $_REQUEST['codigo']; ?>">


<br>
<input type="submit" value="Confirmar">
</form>
<?php

Steve Jobs – Juntos hacia tu éxito 3


PHP
}
else
echo 'No existe un artículo con dicho código';

mysqli_close($con);
?>
</body>
</html>

En esta segunda página lo primero que hacemos es buscar si existe un artículo con dicho código:

$registro=mysqli_query($con,"select descripcion, precio, codigorubro from articulos where


codigo=$_REQUEST[codigo]") or
die(mysqli_error($con));

if ($reg=mysqli_fetch_array($registro))
{

En caso afirmativo, es decir ingresa por el verdadero del if procedemos a mostrar en las
propiedades value la descripción y precio del artículo consultado.

Pero para mostrar todos los rubros debemos hacer una nueva consulta a la otra tabla (rubros)
donde con los datos rescatados generamos todas las opciones del control HTML select en forma
similar al algoritmo de altas:

<select name="codigorubro">
<?php
$registros2=mysqli_query($con,"select codigo,descripcion from rubros") or
die(mysqli_error($con));
while ($reg2=mysqli_fetch_array($registros2))
{
if ($reg2['codigo']==$reg['codigorubro'])
echo "<option value=\"".$reg2['codigo']."\" selected>".$reg2['descripcion']."</option>";
else
echo "<option value=\"".$reg2['codigo']."\">".$reg2['descripcion']."</option>";
}
?>
</select>

La única diferencia es que como debemos mostrar seleccionado el rubro actual del artículo
mediante un if controlamos cada código de rubro de la tabla "rubros" con el código de rubro del
artículo seleccionado. Aquel que coincida procedemos a agregarle la propiedad selected a la
marca option respectiva.

Finalmente debemos implementar la página que modifica el registro respectivo mediante el


comando SQL update:

Steve Jobs – Juntos hacia tu éxito 4


PHP
pagina3.php
<!doctype html>
<html>
<head>
<title>Modificación de artículo.</title>
</head>
<body>

<?php
$con=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión a la base de datos");

mysqli_query($con,"update articulos set


descripcion='$_REQUEST[descripcion]',
precio=$_REQUEST[precio],
codigorubro=$_REQUEST[codigorubro]
where codigo=$_REQUEST[codigo]") or
die(mysqli_error($con));

echo 'Se modificaron los datos del artículo';

mysqli_close($con);

?>
</body>
</html>

V-25 (3-4-5-6-7)
3. MYSQLI - PANEL PARA CONTROL DE LA TABLA ARTICULOS

Ahora implementaremos una serie de páginas para administrar la tabla artículos. Mostraremos en
una tabla HTML todos los registros de articulos y un hipervínculo para borrar y otro para modificar
los datos.

En la parte inferior dispondremos un hipervínculo para agregar artículos.

Básicamente lo nuevo es este panel de administración ya que en conceptos anteriores analizamos


en forma individual como se efectúa el alta, la baja de registros y la modificación de datos.

La primera página a implementar es la de mantenimientoarticulos.php y su interfaz visual será


similar a esta:

El código de esta página es el siguiente:

Steve Jobs – Juntos hacia tu éxito 5


PHP
mantenimientoarticulos.php
<!doctype html>
<html>
<head>
<title>Listado de artículos</title>
<style>
.tablalistado {
border-collapse: collapse;
box-shadow: 0px 0px 8px #000;
margin:20px;
}
.tablalistado th{
border: 1px solid #000;
padding: 5px;
background-color:#ffd040;
}
.tablalistado td{
border: 1px solid #000;
padding: 5px;
background-color:#ffdd73;
}
</style>
</head>
<body>

<?php
$con=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión a la base de datos");

$registros=mysqli_query($con,"select ar.codigo as codigoart,


ar.descripcion as descripcionart,
precio,
ru.descripcion as descripcionrub
from articulos as ar
inner join rubros as ru on ru.codigo=ar.codigorubro") or
die(mysqli_error($con));

echo '<table class="tablalistado">';


echo
'<tr><th>Código</th><th>Descripción</th><th>Precio</th><th>Rubro</th><th>Borrar</th><th>Mo
dificar</th></tr>';
while ($reg=mysqli_fetch_array($registros))
{
echo '<tr>';
echo '<td>';
echo $reg['codigoart'];
echo '</td>';
echo '<td>';
echo $reg['descripcionart'];
echo '</td>';
echo '<td>';
echo $reg['precio'];
echo '</td>';
echo '<td>';
echo $reg['descripcionrub'];
echo '</td>';
echo '<td>';
echo '<a href="bajaarticulo.php?codigo='.$reg['codigoart'].'">Borra?</a>';

Steve Jobs – Juntos hacia tu éxito 6


PHP
echo '</td>';
echo '<td>';
echo '<a href="modificacionarticulo1.php?codigo='.$reg['codigoart'].'">Modifica?</a>';
echo '</td>';
echo '</tr>';
}
echo '<tr><td colspan="6">';
echo '<a href="altaarticulo1.php">Agrega un nuevo artículo?</a>';
echo '</td></tr>';
echo '<table>';

mysqli_close($con);

?>
</body>
</html>

Como podemos ver hemos agregado dos columnas en la tabla como diferencia con el concepto
de listado que habíamos analizado.

La columna Borrar tiene por objetivo llamar a la página bajaarticulo.php pasando como parámetro
el código de artículo que queremos borrar. Como podemos luego probar cuando pasamos la
flecha del mouse sobre cada enlace "Borra?" veremos que el parámetro codigo es distinto para
cada artículo.

Lo mismo hacemos para llamar a la página modificacionarticulo1.php donde también tenemos


enviar el código de artículo que queremos borrar. La única diferencia con lo que habíamos visto
anteriormente es que el código de artículo anteriormente se cargaba por teclado y ahora ya está
inserto en cada hipervínculo.

Veamos ahora la página bajaarticulo.php, esta tiene por objetivo eliminar el artículo, el código
fuente de esta página es:

bajaarticulo.php
<?php

$con=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión a la base de datos");

mysqli_query($con,"delete from articulos where codigo=$_REQUEST[codigo]") or


die(mysqli_error($con));

mysqli_close($con);

header('Location:mantenimientoarticulos.php');
?>

Como podemos ver hemos implementado una página PHP pura, es decir no hay salida HTML. En
esta página procedemos a borrar el registro de la tabla articulos teniendo en cuenta el codigo que
llega como parámetro y lo recuperamos del vector asociativo $_REQUEST.

Luego de borrado procedemos a Redireccionar a la página de mantenimientoarticulos.php la cual


se refresca en pantalla en el navegador y vemos que no se encuentra el artículo que habíamos
seleccionado previamente para borrar.

Las páginas para la modificación de articulos son:

Steve Jobs – Juntos hacia tu éxito 7


PHP
modificacionarticulo1.php
<!doctype html>
<html>
<head>
<title>Modificación de artículo.</title>
</head>
<body>

<?php
$con=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión a la base de datos");

$registro=mysqli_query($con,"select descripcion, precio, codigorubro from articulos where


codigo=$_REQUEST[codigo]") or
die(mysqli_error($con));

if ($reg=mysqli_fetch_array($registro))
{
?>
<form method="post" action="modificacionarticulo2.php">
Descripción del artículo:
<input type="text" name="descripcion" size="50" value="<?php echo $reg['descripcion']; ?>">
<br>
Precio
<input type="text" name="precio" size="10" value="<?php echo $reg['precio']; ?>">
<br>
Rubro:
<select name="codigorubro">
<?php
$registros2=mysqli_query($con,"select codigo,descripcion from rubros") or
die(mysqli_error($con));
while ($reg2=mysqli_fetch_array($registros2))
{
if ($reg2['codigo']==$reg['codigorubro'])
echo "<option value=\"".$reg2['codigo']."\" selected>".$reg2['descripcion']."</option>";
else
echo "<option value=\"".$reg2['codigo']."\">".$reg2['descripcion']."</option>";
}
?>
</select>

<input type="hidden" name="codigo" value="<?php echo $_REQUEST['codigo']; ?>">


<br>
<input type="submit" value="Confirmar">
</form>
<?php
}
else
echo 'No existe un artículo con dicho código';

mysqli_close($con);

?>
</body>
</html>

El algoritmo de esta página ya lo analizamos cuando vimos la modificación de datos trabajando


con más de una tabla de MySQL.

Steve Jobs – Juntos hacia tu éxito 8


PHP
Cuando termina de modificar los datos en pantalla el usuario se llama la página
modificacionarticulo2.php donde procedemos a efectuar el update de tabla articulos y
Redireccionar a la página principal:

modificacionarticulo2.php
<?php
$con=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión a la base de datos");

mysqli_query($con,"update articulos set


descripcion='$_REQUEST[descripcion]',
precio=$_REQUEST[precio],
codigorubro=$_REQUEST[codigorubro]
where codigo=$_REQUEST[codigo]") or
die(mysqli_error($con));

mysqli_close($con);

header('Location:mantenimientoarticulos.php');
?>

Por último desde la página principal de mantenimientoarticulos tenemos un hipervínculo para


efectuar el alta de articulos, este hipervínculo llama a la página altaarticulo1.php:

<!doctype html>
<html>
<head>
<title>Alta de artículo</title>
</head>
<body>
<form method="post" action="altaarticulo2.php">
Ingrese descripcion del artículo:
<input type="text" name="descripcion" required>
<br>
Ingrese precio:
<input type="text" name="precio" required>
<br>
Seleccione rubro:
<select name="codigorubro">
<?php
$con=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión a la base de datos");
$registros=mysqli_query($con,"select codigo,descripcion from rubros") or
die(mysqli_error($con));
while ($reg=mysqli_fetch_array($registros))
{
echo "<option value=\"".$reg['codigo']."\">".$reg['descripcion']."</option>";
}
?>
</select>
<br>
<input type="submit" value="confirmar">
</form>
</body>
</html>

Finalmente la página altaarticulo2.php efectua el insert y Redireccionar a la página principal:

Steve Jobs – Juntos hacia tu éxito 9


PHP
altaarticulo2.php
<?php
$con=mysqli_connect("localhost","root","","base1") or
die("Problemas con la conexión a la base de datos");

mysqli_query($con,"insert into articulos(descripcion, precio, codigorubro)


values ('$_REQUEST[descripcion]',$_REQUEST[precio],$_REQUEST[codigorubro])") or
die(mysqli_error($con));

mysqli_close($con);

header('Location:mantenimientoarticulos.php');
?>

Steve Jobs – Juntos hacia tu éxito 10

También podría gustarte