Академический Документы
Профессиональный Документы
Культура Документы
Curso:
PHP, MySQL y E-Commerce
Módulo:
“Administración de la tienda virtual por internet”
Tutor: Ing. Oscar R. Espeche
Introducción
En esta unidad veremos como podemos administrar a través del protocolo http, las tablas de los objetos de la
tienda virtual.
En primer lugar debemos planear nuestra estructura de almacenamiento de datos de los productos, acorde a
como los productos deben ser mostrados en un catálogo, de tal manera que los clientes de nuestro sitio
puedan navegar por dicha estructura fácilmente para descubrir los productos que finalmente irán a parar en
la cesta de compras.
También necesitamos tablas para almacenar los datos de los usuarios, proveedores, tipos de transporte, etc.
El principal desafío que deberemos resolver es lograr un esquema de datos conformado por tablas
relacionadas entre si que permitan el mantenimiento en una forma totalmente escalable. En otras palabras,
debe ser práctico para cualquier cantidad de productos, departamentos, usuarios et, que necesitemos
administrar.
Categorías
Productos
Ordenes
Transporte
Este privilegio se registra en la tabla de usuarios en el campo “priv”. Cuando el usuario accede a la sesión
de login, el código de dicha página se fija si dicho usuario tiene registrado el privilegio de administrador. Si
es así le permite el acceso a la página de administración mediante un link que aparece en el encabezamiento
de la página a la izquierda de la pantalla.
</td>
</tr>
Desde aquí va hacia la página admin/index.php que le permitirá acceder a las tablas del sitio, para su
administración.
function tiene_priv($priv) {
global $SESSION;
return $SESSION["usuario"]["priv"] == $priv;
}
<?
/********** HOME PAGE de la Administracion de E-SHOP******************************/
<?
include("templates/pie.php");/************* incluye PIE.PHP de Administracion*****/
?>
function requiere_priv($priv) {
La página que le indica al visitante que no tiene privilegios de administrador, cuando trata de entrar sin tener
los privilegios correspondientes es la siguiente.
<html>
<head>
<title>Privilegios Insuficientes</title>
</head>
<style>
h1 { font-family: Arial, sans-serif; font-size: 14pt; font-weight: bold; color:
#ff0000; }
</style>
A continuación vemos la página templates/header.php donde se incluyen los links a las páginas de
administración de las bases de datos de los objetos administrables de la tienda virtual.
<html>
<head>
<title><? pv($titulo) ?></title>
</head>
<style>
h1 { font-family: Arial, sans-serif; font-size: 14pt; font-weight: bold; color: #006699; }
h2 { font-family: Arial, sans-serif; font-size: 12pt; font-weight: bold; }
th { font-family: Arial, sans-serif; font-size: 10pt; font-weight: bold; text-align: center; }
.h1 { font-family: Arial, sans-serif; font-size: 14pt; font-weight: bold; }
.h2 { font-family: Arial, sans-serif; font-size: 12pt; font-weight: bold; }
.label { font-family: Arial, sans-serif; font-size: 10pt; font-weight: bold; }
.normal { font-family: Arial, sans-serif; font-size: 10pt; }
</style>
<!--******franja roja******-->
<table width=100% cellspacing=0><tr><td bgcolor="#C70D11"> </td></tr></table>
<tr>
<td><hr size=1></td>
</tr>
</table>
A continuación veremos las páginas de los ítems que se listan en la imagen de la página principal de
administración.
• Listado
• Inserción
• Modificación
• Eliminación
<?
/***administra las categorías*************************************************/
switch (nvl($modo)) {
case "agregar" :/********* formulario para agregar una categoría*********/
nueva_cat_form($id);
break;
/****************************************************************************
* FUNCIONES
***************************************************************************/
function nueva_cat_form($id) {
/***incluye CATEGORIA_FORM.PHP****************************************/
include("templates/categoria_form.php");
}
function editar_cat_form($id) {
$qid = db_query("
SELECT nombre, descripcion, padre_id
FROM categorias
WHERE id = $id
");
$frm = db_fetch_array($qid);
$frm["padre"] = array($frm["padre_id"]);
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar los cambios";
arbol_categorias($arbol, $frm["padre"]);
include("templates/categoria_form.php");/**incluye CATEGORIA_FORM.PHP******/
}
function eliminar_cat($id) {
$qid = db_query("
SELECT cat.nombre , cat.padre_id , padre.nombre AS padre
FROM categorias cat, categorias padre
WHERE padre.id = cat.padre_id
AND cat.id = $id
");
$cat = db_fetch_object($qid);
$qid = db_query("
DELETE FROM categorias
WHERE id = $id
");
$qid = db_query("
UPDATE productos_categorias
SET categoria_id = $cat->padre_id
WHERE categoria_id = $id
");
$qid = db_query("
UPDATE categorias
SET padre_id = $cat->padre_id
WHERE padre_id = $id
");
include("templates/categoria_eliminada.php");/*incluye CATEGORIA_ELIMUNADA.PHP**/
}
$qid = db_query("
INSERT INTO categorias (padre_id, nombre, descripcion)
VALUES ('$frm[padre]', '$frm[nombre]', '$frm[descripcion]')
");
}
$qid = db_query("
UPDATE categorias SET
padre_id = '$frm[padre]'
,nombre = '$frm[nombre]'
,descripcion = '$frm[descripcion]'
WHERE id = $id
");
}
function listar_categorias() {
/* lista todas las categorías. Hace un join de la tabla CATEGORIAS con ella misma en
base a cat.padre_id y padre.id ****************************************/
include("templates/listar_categorias.php");/*incluye LISTAR_CATEGORIAS.PHP*/
}
?>
<td class=normal><!--***************editar************************-->
<a title="editar esta categoria"
href="<?=$ME?>?modo=editar
&id=<? pv($r->id) ?>">
<? pv($r->nombre) ?></a>
</td>
<td class=normal><!--***********CAT. PADRE************************-->
<? pv($r->padre) ?>
</td>
<td class=normal><!--***********DESCRIPCION***********************-->
<? pv($r->descripcion) ?>
</td>
</tr>
<? } ?>
</table>
Agregar categorías
La función nueva_cat_form($id) de la página categorías.php permite agregar una categoría. La variable $id
se define con el valor 0 para indicar que la categoría se incluye por defecto en la raíz del árbol de categorías.
Sin embargo cuando se edita el formulario con los atributos de la categoría, se puede cambiar el nombre del
contenedor donde se incluirá definitivamente.
function
nueva_cat_form($id) {
/* muestra un formulario
en blanco para agregar
una categoría
***************/
global $CFG,
$ME;
Esta función permite crear la estructura jerárquica de las categorías haciendo uso de la posibilidad de
recursión del lenguaje php.
Vemos a continuación el contenido de la tabla categorías para entender bien la relación entre cada categoría
y su categoría contenedora.
Vemos que cada categoría tiene definido su contenedor padre menos la categoría raíz que se identifica con
id=0 y padre_id =0.
A continuación mostramos la función árbol_categorias() que permite generar una cadena de caracteres en la
variable $arbol, que se usa para contener las opciones de la marca SELECT del formulario HTML.
templates/categoria_form.php
La ejecución de este código genera la siguiente pantalla para editar el formulario de la nueva categoría.
<form method="post"
action="<?=$ME?>">
<input type="hidden"
name="modo"
value="<?=$frm["modo"]
?>">
<input type="hidden"
name="id"
value="<?=pv($id)?>">
<table>
Una vez llenado el formulario, sus datos son enviados a categorias.php con la variable modo=”insertar”.
/* agrega una nueva categoría a las categorías padres definidas en el formulario anterior. Los valores
están en $frm*******/
$qid = db_query("
INSERT INTO categorias (padre_id, nombre, descripcion)
VALUES ('$frm[padre]', '$frm[nombre]', '$frm[descripcion]')
");
}
La función editar_cat_form($id) se encarga de definir las variables que serán utilizadas en el formulario que
se mostrará en pantalla para editar la categoría.
function editar_cat_form($id) {
$qid = db_query("
SELECT nombre, descripcion, padre_id
FROM categorias
WHERE id = $id
");
$frm = db_fetch_array($qid);
$frm["padre"] = array($frm["padre_id"]);
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar los cambios";
arbol_categorias($arbol, $frm["padre"]);
include("templates/categoria_form.php");/**incluye CATEGORIA_FORM.PHP******/
}
El formulario es el mismo que usamos para agregar una categoría, salvo que se define la variable
$frm["modo"] = "actualizar" para diferenciarlo.
$qid = db_query("
UPDATE categorias SET
padre_id = '$frm[padre]'
,nombre = '$frm[nombre]'
,descripcion = '$frm[descripcion]'
WHERE id = $id
");
}
function eliminar_cat($id) {
/* Elimina la categoría especificada por $id y coloca a los productos y categorías huérfanas en la
categoría superior. Esto debería hacerse con transacciones */
$qid = db_query("
SELECT cat.nombre , cat.padre_id , padre.nombre AS padre
FROM categorias cat, categorias padre
WHERE padre.id = cat.padre_id
AND cat.id = $id
");
$cat = db_fetch_object($qid);
$qid = db_query("
DELETE FROM categorias
WHERE id = $id
");
$qid = db_query("
UPDATE productos_categorias
SET categoria_id = $cat->padre_id
WHERE categoria_id = $id
");
$qid = db_query("
UPDATE categorias
SET padre_id = $cat->padre_id
WHERE padre_id = $id
");
include("templates/categoria_eliminada.php");/*incluye CATEGORIA_ELIMUNADA.PHP**/
}
<p class=normal>
La categoria <b><? pv($cat->nombre) ?></b> a sido eliminada. Todos los productos y
sub-categorias pertenecientes a <b><? pv($cat->nombre) ?></b> han sido re-asignadas a
la categoria <b><? pv($cat->padre) ?></b>.
Agregar
Modificar
Eliminar
productos.php
<?
/********************
Administra
Productos*************
*********************
*****/
include("../aplicacion.php"
);/******** incluye
aplicación.php*********
switch (nvl($modo)) {
case "agregar" :
agregar_producto_form(nvl($categoria_id, 0));
break;
case "editar" :
editar_producto_form($id);
break;
case "eliminar" :
eliminar_producto($id);
listar_producto();
break;
case "insertar" :
inserta_producto($id, $HTTP_POST_VARS);
listar_producto();
break;
case "actualizar" :
actualiza_producto($id, $HTTP_POST_VARS);
listar_producto();
break;
default :
listar_producto();
break;
}
include("templates/pie.php");
/********************
*********************
*********************
****************
* FUNCIONES
*********************
*********************
*********************
**************/
$qid = db_query("
SELECT categoria_id
FROM productos_categorias
WHERE producto_id = $id
");
$frm["categorias"] = array();
while ($cat = db_fetch_object($qid)) {
$frm["categorias"][] = $cat->categoria_id;
}
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar cambios";
arbol_categorias($arbol, $frm["categorias"]);
include("templates/producto_form.php");/*incluye PRODUCTO_FORM.PHP***/
}
function eliminar_producto($id) {
$qid = db_query("
SELECT nombre
FROM productos
WHERE id = $id
");
$prod = db_fetch_object($qid);
/* elimina el producto */
$qid = db_query("
DELETE FROM productos
WHERE id = $id
");
$qid = db_query("
DELETE FROM productos_categorias
WHERE producto_id = $id
");
include("templates/producto_eliminado.php");/*incluye
PRODUCTO_ELIMINADO.PHP***/
}
$oferta_especial = checked($frm["oferta_especial"]);
$oferta = checked($frm["oferta"]);
$qid = db_query("
INSERT INTO productos (
nombre, descripcion, precio, oferta_especial
, oferta, imagen, prov_id, imp_id
)
VALUES (
'$frm[nombre]', '$frm[descripcion]', '$frm[precio]'
, '$frm[oferta_especial]','$frm[oferta]', '$frm[imagen]'
, '$frm[prov_id]', '$frm[imp_id]'
)
");
$producto_id = db_insert_id();
checked($frm["oferta_especial"]);
checked($frm["oferta"]);
$qid = db_query("
UPDATE productos SET
nombre = '$frm[nombre]'
,descripcion = '$frm[descripcion]'
,precio = '$frm[precio]'
,oferta_especial = '$frm[oferta_especial]'
,oferta = '$frm[oferta]'
,imagen = '$frm[imagen]'
,prov_id = '$frm[prov_id]'
,imp_id = '$frm[imp_id]'
WHERE id = $id
");
$qid = db_query("
DELETE FROM productos_categorias
WHERE producto_id = $id
");
if (count($frm["categorias"]) == 0) {
$frm["categorias"][] = 0;
}
function listar_producto() {
/* listado de productos******************************************************/
$qid = db_query("
SELECT p.id, p.nombre, p.descripcion, p.precio, c.nombre AS categoria
FROM productos p, productos_categorias pc, categorias c
WHERE p.id = pc.producto_id /*join de PRODUCTOS y PRODUCTOS_CATEGORIAS*/
AND c.id = pc.categoria_id /*join de CATEGORIAS y PRODUCTOS_CATEGORIAS*/
");
?>
<p class=normal>
<a
href="<?=$ME?>?modo=
agregar">Agregar un
Producto</a>
</p>
<table border=0
cellpagregaring=3>
<tr>
Agregar productos
La función agregar_producto_form(nvl($categoria_id, 0)) permite agregar un producto como se muestra
a continuación.
function agregar_producto_form($id = 0) {
arbol_categorias($arbol, $frm["categorias"]);
include("templates/producto_form.php");/**incluye PRODUCTO_FORM.PHP**/
}
templates/producto_form.php
<td><table border=0>
<tr valign=top>
<td class=label>Oferta Global:</td>
<td><input type="checkbox" name="oferta_especial"
<?=frmchecked($frm["oferta_especial"])?>></td>
</tr>
<tr valign=top>
<td class=label>Oferta de Seccion:</td>
<td><input type="checkbox" name="oferta"
<?=frmchecked($frm["oferta"])?>></td>
</tr>
<tr>
<td class=label>Nombre:</td>
<td><input type="text" name="nombre" size=25
value="<? pv($frm["nombre"]) ?>"></td>
</tr>
<tr valign=top>
<td class=label>Precio:</td>
<td><input type="text" name="precio" size=10
value="<? pv($frm["precio"]) ?>"></td>
</tr>
<tr>
<td class=label>Proveedor:</td>
<td><select name="prov_id">
<?php
$qid=db_query("select * from proveedores");
while ($row=db_fetch_array($qid)) { ?>
<option value = <? echo $row["pid"]; if ($row["pid"]==$frm["prov_id"])
{?> selected<?}?>><?=$row["pnombre"]?>
<?}?>
</select>
</td>
</tr>
<tr>
<td class=label>Impuesto:</td>
<td><select name="imp_id">
<?php
$qid=db_query("select * from impuestos");
while ($row=db_fetch_array($qid)) { ?>
<option value = <? echo $row["iid"];
if ($row["iid"]==$frm["imp_id"])
{?> selected<?}?>><?=$row["icodigo"]?>
<?}?>
</select>
</td>
</tr>
<tr valign=top>
<td class=label>Descripcion:</td>
<td><textarea name="descripcion" cols=50 rows=5>
<? pv($frm["descripcion"]) ?></textarea></td>
</tr>
<tr>
<td class=label>Imagen:</td>
<td><input type="text" name="imagen" size=40
value="<? pv($frm["imagen"]) ?>"></td>
</tr>
<tr>
<td></td>
<td><input type="submit"
value="<?=$frm["rotulo"] ?>"></td>
</table>
</td>
</tr>
</table>
</form>
La ejecución de este código genera la siguiente pantalla para editar el formulario del nuevo producto.
Una vez llenado el formulario, sus datos son enviados a productos.php con la variable modo=”insertar”.
$qid = db_query("
INSERT INTO productos (
nombre, descripcion, precio, oferta_especial
, oferta, imagen, prov_id, imp_id
)
VALUES (
'$frm[nombre]', '$frm[descripcion]', '$frm[precio]'
, '$frm[oferta_especial]','$frm[oferta]', '$frm[imagen]'
, '$frm[prov_id]', '$frm[imp_id]'
)
");
$producto_id = db_insert_id();
function editar_producto_form($id) {
$qid = db_query("
SELECT *
FROM productos
WHERE id = $id
");
$frm = db_fetch_array($qid);
$qid = db_query("
SELECT categoria_id
FROM productos_categorias
WHERE producto_id = $id
");
$frm["categorias"] = array();
while ($cat = db_fetch_object($qid)) {
$frm["categorias"][] = $cat->categoria_id;
}
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar cambios";
arbol_categorias($arbol, $frm["categorias"]);
include("templates/producto_form.php");/*incluye PRODUCTO_FORM.PHP***/
}
Vemos que consiste fundamentalmente en obtener datos de la tabla para el producto que se quiere editar y
usar estos datos como valores iniciales del formulario templates/producto_form.php que se usa para
introducir los cambios.
El formulario es el mismo que usamos para agregar un producto, salvo que se define la variable
$frm["modo"] = "actualizar" para diferenciarlo.
case "actualizar" :
actualiza_producto($id, $HTTP_POST_VARS);
listar_producto();
break;
$qid = db_query("
UPDATE productos SET
nombre = '$frm[nombre]'
,descripcion = '$frm[descripcion]'
,precio = '$frm[precio]'
,oferta_especial = '$frm[oferta_especial]'
,oferta = '$frm[oferta]'
,imagen = '$frm[imagen]'
,prov_id = '$frm[prov_id]'
,imp_id = '$frm[imp_id]'
WHERE id = $id
");
$qid = db_query("
DELETE FROM productos_categorias
WHERE producto_id = $id
");
if (count($frm["categorias"]) == 0) {
$frm["categorias"][] = 0;
}
case "eliminar" :
eliminar_producto($id);
listar_producto();
break;
function eliminar_producto($id) {
$qid = db_query("
SELECT nombre
FROM productos
WHERE id = $id
");
$prod = db_fetch_object($qid);
/* elimina el producto */
$qid = db_query("
DELETE FROM productos
WHERE id = $id
");
/* elimina el producto de la tabla productos_categorias */
$qid = db_query("
DELETE FROM productos_categorias
WHERE producto_id = $id
");
include("templates/producto_eliminado.php");/*incluye
PRODUCTO_ELIMINADO.PHP***/
}
<p class=normal>
El producto <b><? pv($prod->nombre) ?></b> ha sido eliminado.
Agregar
Modificar
Eliminar
<?
/******************* Adminisatracion de usuarios **************************/
switch (nvl($modo)) {
case "agregar" :
agregar_usuario_form();
break;
case "editar" :
editar_usuario_form($cliente);
break;
case "eliminar" :
eliminar_usuario($cliente);
usuario_lista();
break;
case "insertar" :
insertar_usuario($HTTP_POST_VARS);
usuario_lista();
break;
case "actualizar" :
actualizar_usuario($HTTP_POST_VARS);
usuario_lista();
break;
case "resetpasswd" :
reset_password($cliente);
include("templates/user_password_reset.php");
usuario_lista();
break;
default :
usuario_lista();
break;
}
include("templates/pie.php");
/******************************************************************************
* FUNCIONES
*****************************************************************************/
function agregar_usuario_form() {
$frm["modo"] = "insertar";
$frm["rotulo"] = "Agregar Cliente";
function editar_usuario_form($cliente) {
/*muestra el formulario de los datos del cliente con valores de la tabla de usuarios*/
$qid = db_query("
SELECT cliente, nombre, apellido, email, telefono, direccion, priv, pais,
provincia, ciudad
FROM usuarios
WHERE cliente = '$cliente'
");
$frm = db_fetch_array($qid);
$frm["password"]="*********";
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar datos";
include("templates/usuario_form.php");/***incluye USUARIO_FORM.PHP*********/
}
function eliminar_usuario($cliente) {
function insertar_usuario($frm) {
/*agrega una cuenta a la tabla verificando(??) los datos que vienen en el array $frm*/
$password="$frm[password]";
$qid = db_query("
INSERT INTO usuarios (
cliente, password, priv, nombre, apellido, email, telefono,
direccion, pais, provincia, ciudad
)
VALUES (
'$frm[cliente]'
,'" . md5($password) ."'
,'$frm[priv]'
,'$frm[nombre]'
,'$frm[apellido]'
,'$frm[email]'
,'$frm[telefono]'
,'$frm[direccion]'
,'$frm[pais]'
,'$frm[provincia]'
,'$frm[ciudad]'
)");
include("templates/usuario_creado.php");/**incluye USUARIO_CREADO.PHP****/
}
function actualizar_usuario($frm) {
/* actualiza los datos del usuario verificando que la clave no contega "*".Si contiene
"*" no la actualiza*/
$password="$frm[password]";
if(substr($password,1,1) != "*") {
db_query("update usuarios set password='".md5($password)
."' WHERE cliente = '$frm[cliente]' ");
}
$qid = db_query("
UPDATE usuarios SET
priv = '$frm[priv]'
,nombre = '$frm[nombre]'
,apellido = '$frm[apellido]'
,email = '$frm[email]'
,telefono = '$frm[telefono]'
,direccion = '$frm[direccion]'
,pais = '$frm[pais]'
,provincia = '$frm[provincia]'
,ciudad = '$frm[ciudad]'
WHERE cliente = '$frm[cliente]'
");
}
function usuario_lista() {
$qid = db_query("
SELECT cliente, nombre, apellido, email, priv
FROM usuarios
");
templates/usuario_lista.php
<p class=normal>
<a href="<?=$ME?>?modo=agregar">Agregar un Cliente</a>
</p>
function agregar_usuario_form() {
$frm["modo"] = "insertar";
$frm["rotulo"] = "Agregar Cliente";
templates/usuario_form.php
<tr>
<td class=label>Privilegio:</td>
<td><input type="text" name="priv" size=5 value=
"<? pv($frm["priv"]) ?>"></td>
</tr>
<tr>
<td class=label>Nombre:</td>
<td><input type="text" name="nombre" size=25 value=
"<? pv($frm["nombre"]) ?>"></td>
</tr>
<tr>
<td class=label>Apellido:</td>
<td><input type="text" name="apellido" size=25 value=
"<? pv($frm["apellido"]) ?>"></td>
</tr>
<tr>
<td class=label>Dir. de Correo:</td>
<td><input type="text" name="email" size=25 value=
"<? pv($frm["email"]) ?>"></td>
</tr>
<tr>
<td class=label>Telefono:</td>
<td><input type="text" name="telefono" size=25 value=
"<? pv($frm["telefono"]) ?>"></td>
</tr>
<tr>
<td class=label>Pais:</td>
<td><select name="pais">
<?php
$qid=db_query("select * from pais");
La ejecución de este código genera la siguiente pantalla para editar el formulario del nuevo cliente.
Una vez llenado el formulario, sus datos son enviados a clientes.php con la variable modo=”insertar”.
function insertar_usuario($frm) {
/*agrega una cuenta a la tabla verificando(??) los datos que vienen en el array $frm*/
$password="$frm[password]";
$qid = db_query("
INSERT INTO usuarios (
cliente, password, priv, nombre, apellido, email, telefono,
direccion, pais, provincia, ciudad
) VALUES (
'$frm[cliente]'
,'" . md5($password) ."'
,'$frm[priv]'
,'$frm[nombre]'
,'$frm[apellido]'
,'$frm[email]'
,'$frm[telefono]'
,'$frm[direccion]'
,'$frm[pais]'
,'$frm[provincia]'
,'$frm[ciudad]'
)");
include("templates/usuario_creado.php");/**incluye USUARIO_CREADO.PHP****/
}
editar_usuario_form($cliente);
break;
La función editar_usuario_form($id) se encarga de definir las variables que serán utilizadas en el formulario
que se mostrará en pantalla para editar el cliente.
function editar_usuario_form($cliente) {
/*muestra el formulario de los datos del cliente con valores de la tabla de usuarios*/
$qid = db_query("
SELECT cliente, nombre, apellido, email, telefono, direccion, priv, pais,
provincia, ciudad
FROM usuarios
WHERE cliente = '$cliente'
");
$frm = db_fetch_array($qid);
$frm["password"]="*********";
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar datos";
include("templates/usuario_form.php");/***incluye USUARIO_FORM.PHP*********/
}
El formulario es el mismo que usamos para agregar un cliente, salvo que se define la variable $frm["modo"]
= "actualizar" para diferenciarlo.
case "actualizar" :
actualizar_usuario($HTTP_POST_VARS);
usuario_lista();
break;
function actualizar_usuario($frm) {
/* actualiza los datos del usuario verificando que la clave no contega "*".Si contiene
"*" no la actualiza*/
$password="$frm[password]";
if(substr($password,1,1) != "*") {
db_query("update usuarios set password='".md5($password)
."' WHERE cliente = '$frm[cliente]' ");
}
$qid = db_query("
UPDATE usuarios SET
priv = '$frm[priv]'
,nombre = '$frm[nombre]'
,apellido = '$frm[apellido]'
,email = '$frm[email]'
,telefono = '$frm[telefono]'
,direccion = '$frm[direccion]'
,pais = '$frm[pais]'
,provincia = '$frm[provincia]'
,ciudad = '$frm[ciudad]'
WHERE cliente = '$frm[cliente]'
");
}
case "eliminar" :
eliminar_usuario($cliente);
usuario_lista();
break;
function eliminar_usuario($cliente) {
<p class=normal>
El usuario
<b><? pv($cliente) ?></b>
ha sido eliminado.
Vemos que solo contiene el link para ver los detalles de las ordenes ya que estas no pueden modificarse ni
eliminarse sino que las crea el sistema y quedan allí indefectiblemente como testigos de las operaciones
realizadas en al tienda virtual.
<?
/********************
****Administra
Ordenes**************
*********************
**/
include("../aplicacion.php"
);/************* incluye
aplicacion.php*********
function mostrar_lista() {
$qid = db_query("
SELECT *
FROM ordenes
");
include("templates/orden_lista.php");
}
?>
function mostrar_orden_detalles($id) {
/* carga los datos de la Orden con el contenido de las tablas ordenes y ordenes_items*/
$orden = db_fetch_object($qid_orden);
include("templates/orden_detalles.php");/*********** incluye orden_detalles.PHP**/
}
orden_detalles.php
<h2>Montos de la
Orden</h2>
<div>
<table cellspacing=5
cellpadding=3 borden =
0>
<tr>
<td></td>
<td
class=label>Producto</td
while ($prod =
db_fetch_object($qid)) {
$imp_id = $prod-
>imp_id;
$imp =
db_query("select * from
impuestos where iid =
<tr>
<td class=normal>Total del Lote</td>
<tdclass=normal></td>
<tdclass=normal></td>
<td class=normal align=right>$<?=$lote?></td>
<tdclass=normal colspan = 3></td>
</tr>
<tr><td><table width=100%><tr><td><hr size=1></td></tr></table></td></tr>
<?$i++?>
<?
}/****************************final de lotes********************************/
?>
<tr>
<td colspan=3 class=label align=right>Total:</td>
<td class=normal></td>
<td class=normal align=right>$<?=$gtotal?></td>
</tr>
</table>
Agregar
Modificar
Eliminar
<?
/******************* Administracion de proveedores ***********************/
switch (nvl($modo)) {
case "agregar" :
agregar_proveedores_form();
break;
case "editar" :
editar_proveedores_form($pid);
break;
case "eliminar" :
elimina_proveedores($pid);
listar_proveedores();
break;
case "insertar" :
inserta_proveedores($HTTP_POST_VARS);
listar_proveedores();
break;
case "actualizar" :
actualiza_proveedores($HTTP_POST_VARS);
listar_proveedores();
break;
default :
listar_proveedores();
break;
}
include("templates/pie.php");
/******************************************************************************
* FUNCIONES
*****************************************************************************/
function agregar_proveedores_form() {
$frm["modo"] = "insertar";
$frm["rotulo"] = "Agregar Proveedor";
function editar_proveedores_form($pid) {
/*muestra el formulario de los datos del cliente con valores de la tabla de proveedoress*/
$qid = db_query("
SELECT *
FROM proveedores
WHERE pid = '$pid'
");
$frm = db_fetch_array($qid);
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar datos";
include("templates/proveedores_form.php");/***incluye proveedores_FORM.PHP**/
}
function elimina_proveedores($pid) {
function inserta_proveedores($frm) {
/*agrega una cuenta a la tabla verificando(??) los datos que vienen en el array $frm*/
$qid = db_query("
INSERT INTO proveedores (
pnombre, pcodigo, pemail, pdireccion, ptelefono, pcontactonombre,
pcontactoapellido, pcontactoemail, ppais, pprovincia, pciudad
) VALUES (
'$frm[pnombre]'
,'$frm[pcodigo]'
,'$frm[pemail]'
,'$frm[pdireccion]'
,'$frm[ptelefono]'
,'$frm[pcontactonombre]'
,'$frm[pcontactoapellido]'
,'$frm[pcontactoemail]'
,'$frm[ppais]'
,'$frm[pprovincia]'
,'$frm[pciudad]'
)");
include("templates/proveedores_creado.php");/*incluye proveedores_creado.PHP*/
}
function actualiza_proveedores($frm) {
$qid = db_query("
UPDATE proveedores SET
pnombre = '$frm[pnombre]'
,pcodigo = '$frm[pcodigo]'
,pemail = '$frm[pemail]'
,pdireccion = '$frm[pdireccion]'
,ptelefono = '$frm[ptelefono]'
,pcontactonombre = '$frm[pcontactonombre]'
,pcontactoapellido = '$frm[pcontactoapellido]'
,pcontactoemail = '$frm[pcontactoemail]'
,ppais = '$frm[ppais]'
,pprovincia = '$frm[pprovincia]'
,pciudad = '$frm[pciudad]'
WHERE pid = '$frm[pid]'
");
}
function listar_proveedores() {
$qid = db_query("
SELECT *
FROM proveedores
");
include("templates/proveedores_lista.php");/*incluye proveedores_LISTA.PHP*/
}
?>
templates/proveedores_lista.php
<p class=normal>
<a
href="<?=$ME?>?modo=
agregar">Agregar un
Proveedor</a>
</p>
<table border=0
cellpagregaring=3>
<tr>
function agregar_proveedores_form() {
$frm["modo"] = "insertar";
$frm["rotulo"] = "Agregar Proveedor";
Templates/proveedores_form.php
Una vez llenado el formulario, sus datos son enviados a proveedores.php con la variable modo=”insertar”.
function inserta_proveedores($frm) {
/*agrega una cuenta a la tabla verificando(??) los datos que vienen en el array $frm*/
$qid = db_query("
INSERT INTO proveedores (
pnombre, pcodigo, pemail, pdireccion, ptelefono, pcontactonombre,
pcontactoapellido, pcontactoemail, ppais, pprovincia, pciudad
)
VALUES (
'$frm[pnombre]'
,'$frm[pcodigo]'
,'$frm[pemail]'
,'$frm[pdireccion]'
,'$frm[ptelefono]'
,'$frm[pcontactonombre]'
case "editar" :
editar_proveedores_form($pid);
break;
function editar_proveedores_form($pid) {
/*muestra el formulario de los datos del cliente con valores de la tabla de proveedoress*/
$qid = db_query("
SELECT *
FROM proveedores
WHERE pid = '$pid'
");
$frm = db_fetch_array($qid);
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar datos";
include("templates/proveedores_form.php");/***incluye proveedores_FORM.PHP**/
}
Vemos que consiste fundamentalmente en obtener datos de la tabla para el proveedor que se quiere editar y
usar estos datos como valores iniciales del formulario templates/proveedores_form.php que se usa para
introducir los cambios.
El formulario es el mismo que usamos para agregar un proveedor, salvo que se define la variable
$frm["modo"] = "actualizar" para diferenciarlo.
Esta variable lo lleva a la opción “actualizar” de la función switch() como vemos.
case "actualizar" :
actualiza_proveedores($HTTP_POST_VARS);
listar_proveedores();
break;
function actualiza_proveedores($frm) {
$qid = db_query("
UPDATE proveedores SET
pnombre = '$frm[pnombre]'
,pcodigo = '$frm[pcodigo]'
,pemail = '$frm[pemail]'
,pdireccion = '$frm[pdireccion]'
,ptelefono = '$frm[ptelefono]'
,pcontactonombre = '$frm[pcontactonombre]'
,pcontactoapellido = '$frm[pcontactoapellido]'
,pcontactoemail = '$frm[pcontactoemail]'
,ppais = '$frm[ppais]'
,pprovincia = '$frm[pprovincia]'
,pciudad = '$frm[pciudad]'
WHERE pid = '$frm[pid]'
");
}
case "eliminar" :
elimina_proveedores($pid);
listar_proveedores();
break;
function elimina_proveedores($pid) {
<p class=normal>
El Proveedor
<b><? pv($pnombre) ?></b>
ha sido eliminado.
Agregar
Modificar
Eliminar
<?
/******************* Adminisatracion de transportes ****************************/
switch (nvl($modo)) {
case "agregar" :
agregar_transporte_form();
break;
case "editar" :
editar_transporte_form($t_id);
break;
case "eliminar" :
elimina_transportes($t_id);
listar_transporte();
break;
case "insertar" :
inserta_transportes($HTTP_POST_VARS);
listar_transporte();
break;
case "actualizar" :
actualiza_transportes($HTTP_POST_VARS);
listar_transporte();
break;
default :
listar_transporte();
break;
}
include("templates/pie.php");
function agregar_transporte_form() {
$frm["modo"] = "insertar";
$frm["rotulo"] = "Agregar transporte";
function editar_transporte_form($t_id) {
/*muestra el formulario de los datos del cliente con valores de la tabla de transportes*/
$qid = db_query("
SELECT *
FROM transporte
WHERE t_id = '$t_id'
");
$frm = db_fetch_array($qid);
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar datos";
include("templates/transportes_form.php");/*incluye transportes_FORM.PHP*/
}
function
elimina_transportes($t_id)
{
/* elimina la cuenta de
$transportesname */
global $CFG,
$ME;
$qid = db query("
function actualiza_transportes($frm) {
$qid = db_query("
UPDATE transporte SET
tnombre = '$frm[tnombre]'
,tcodigo = '$frm[tcodigo]'
,tdias = '$frm[tdias]'
,tprecio = '$frm[tprecio]'
,prov_id = '$frm[prov_id]'
,tpais = '$frm[tpais]'
,tprovincia = '$frm[tprovincia]'
,tciudad = '$frm[tciudad]'
WHERE t_id = '$frm[t_id]'
");
}
function listar_transporte() {
$qid = db_query("
SELECT *
FROM transporte
");
include("templates/transportes_lista.php");/*incluye transportes_LISTA.PHP*/
}
?>
templates/transportes_lista.php
<p class=normal>
<a
href="<?=$ME?>?modo=
agregar">Agregar un
transporte</a>
</p>
<table border=0
cellpagregaring=3>
<tr>
Agregar transportes
La función agregar_transporte_form() permite agregar un transporte como se muestra a continuación.
function agregar_transporte_form() {
$frm["modo"] = "insertar";
$frm["rotulo"] = "Agregar transporte";
templates/transportes_form.php
<form method="post"
action="<?=$ME?>">
<input type="hidden"
name="modo"
value="<?=$frm["modo"]
?>">
<input type="hidden"
name="t_id"
value="<?=$frm["t_id"]?>
">
<tr>
<td class=label>pais:</td>
<td><select name="tpais">
<?php
$qid=db_query("select * from pais");
while ($row=db_fetch_array($qid)) { ?>
<option <? echo $row["pnombre"]; if ($row["pnombre"]==$frm["tpais"])
{?> selected<?}?>><?=$row["pnombre"]?>
<?}?>
</select>
</td>
</tr>
<tr>
<td class=label>Provincia:</td>
<td><select name="tprovincia">
<?php
$qid=db_query("select * from provincia");
while ($row=db_fetch_array($qid)) { ?>
<option <? echo $row["prov_nom"]; if ($row["prov_nom"]==$frm["tprovincia"])
{?> selected<?}?>><?=$row["prov_nom"]?>
<?}?>
</select>
</td>
</tr>
<tr>
<td class=label>Ciudad:</td>
<td><select name="tciudad">
<?php
$qid=db_query("select * from ciudad");
while ($row=db_fetch_array($qid)) { ?>
<option <? echo $row["cnombre"]; if ($row["cnombre"]==$frm["tciudad"])
{?> selected<?}?>><?=$row["cnombre"]?>
<?}?>
</select>
</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="<?=$frm["rotulo"] ?>"></td>
</table>
</form>
Una vez llenado el formulario, sus datos son enviados a transportes.php con la variable modo=”insertar”.
case "insertar" :
inserta_transportes($HTTP_POST_VARS);
listar_transporte();
break;
/*agrega una cuenta a la tabla verificando(??) los datos que vienen en el array $frm*/
$qid = db_query("
INSERT INTO transporte (
tnombre, tcodigo, tdias , tprecio, prov_id, tpais, tprovincia, tciudad
) VALUES (
'$frm[tnombre]'
,'$frm[tcodigo]'
,'$frm[tdias]'
,'$frm[tprecio]'
,'$frm[prov_id]'
,'$frm[tpais]'
,'$frm[tprovincia]'
,'$frm[tciudad]'
)");
$tcodigo = $frm["tcodigo"];
$tnombre = $frm["tnombre"];
include("templates/transportes_creado.php");/*incluye transportes_CREADO.PHP*/
}
case "editar" :
editar_transporte_form($t_id);
break;
function editar_transporte_form($t_id) {
/*muestra el formulario de los datos del cliente con valores de la tabla de transportes*/
$qid = db_query("
SELECT *
FROM transporte
WHERE t_id = '$t_id'
");
$frm = db_fetch_array($qid);
$frm["modo"] = "actualizar";
$frm["rotulo"] = "Grabar datos";
include("templates/transportes_form.php");/*incluye transportes_FORM.PHP*/
}
Vemos que consiste fundamentalmente en obtener datos de la tabla para el transporte que se quiere editar y
usar estos datos como valores iniciales del formulario templates/transporte_form.php que se usa para
introducir los cambios. El formulario es el mismo que usamos para agregar un transporte, salvo que se
define la variable $frm["modo"] = "actualizar" para diferenciarlo.
Esta variable lo lleva a la opción “actualizar” de la función switch() como vemos.
case "actualizar" :
actualiza_transportes($HTTP_POST_VARS);
listar_transporte();
break;
$qid = db_query("
UPDATE transporte SET
tnombre = '$frm[tnombre]'
,tcodigo = '$frm[tcodigo]'
,tdias = '$frm[tdias]'
,tprecio = '$frm[tprecio]'
,prov_id = '$frm[prov_id]'
,tpais = '$frm[tpais]'
,tprovincia = '$frm[tprovincia]'
,tciudad = '$frm[tciudad]'
WHERE t_id = '$frm[t_id]'
");
}
case "eliminar" :
elimina_transportes($t_id);
listar_transporte();
break;
function elimina_transportes($t_id) {
<p class=normal>
El Transporte
<b><? pv($tnombre) ?></b>
codigo
<b><? pv($tcodigo) ?></b>
ha sido eliminado.
Agregar
Modificar
Eliminar
Agregar impuestos
La función agregar_impuesto_form() permite agregar un impuesto.
La ejecución de este código genera la siguiente pantalla para editar el formulario del nuevo impuesto.
Una vez llenado el formulario, sus datos son enviados a impuestos.php con la variable modo=”insertar”.
En la página impuestos.php se ejecuta la opción de la función switch() que corresponde a dicho modo.
En dicha opción, la función inserta_impuestos() permite grabar el nuevo impuesto y la función
listar_impuesto() muestra en la pantalla la lista de todos los impuestos.
Editar impuestos
Haciendo clic en el nombre del impuesto, enviamos a la página impuestos.php la variable modo=editar y la
variable id=$id del registro que se desea editar.
Allí, la función editar_impuesto_form($id) se encarga de definir las variables que serán utilizadas en el
formulario que se mostrará en pantalla para editar el impuesto.
Consiste fundamentalmente en obtener datos de la tabla para el impuesto que se quiere editar y usar estos
datos como valores iniciales del formulario templates/impuesto_form.php que se usa para introducir los
cambios.
El formulario es el mismo que usamos para agregar un impuesto, salvo que se define la variable
$frm["modo"] = "actualizar" para diferenciarlo.
Esta variable lo lleva a la opción “actualizar” de la función switch() como vimos en casos anteriores.
Eliminar impuestos
Al hacer un clic en la letra X que se indica como acción en el registro del impuesto seleccionado, se envía a
la página impuestos.php la variable modo=eliminar y la variable id=$id del impuesto que se quiere eliminar.