You are on page 1of 19

1

UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

SESION N 10: WORKSHOP TIENDA ONLINE

PANEL DE CONTROL (3 PARTE)


LISTADO DE PRODUCTOS PARA LA TIENDAONLINE
Crear el archivo productos.php dentro del directorio admin y agregar las siguientes lneas de
cdigo. Ver imagen:
<table border=1>
<?php include "../php/config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "SELECT * FROM productos ";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
echo '<tr>';
echo
'><td>'.$fila['nombre'].'</td><td>'.$fila['precio'].'</td><td>'.$fila['peso'].'</td><td>'.$fila
['longitud'].'x'.$fila['anchura'].'x'.$fila['altura'].'</td><td>'.$fila['existencias'].'</td><td>'.$fil
a['activo'].'</td></tr>';
}
mysqli_close($conexion);
?>
</table>
RESULTADO

Agregamos un formulario para poder enviar un registro de un nuevo producto. Ver imagen:
mysqli_close($conexion);
?>
<tr>
<form action="nuevoproducto.php" method="POST">
<td><input type="text" name="nombre"></td>
<td><input type="text" name="precio"></td>
<td><input type="text" name="peso"></td>
<td><input type="text" name="longitud">x<input type="text"
name="anchura">x<input type="text" name="altura"></td>
<td><input type="text" name="existencias"></td>
<td><input type="text" name="activo"></td>
<td><input type="submit"></td>
</form>
</tr>
</table>
RESULTADO

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

2
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

Crear el archivo nuevoproducto.php en la carpeta admin y agregar el siguiente cdigo. Ver


imagen:
<?php include "../php/config.inc"; ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion
=
"INSERT
INTO
productos
VALUES
(NULL,'".$_POST['nombre']."','".$_POST['descripcion']."','".$_POST['precio']."','".$_POST['pes
o']."','".$_POST['longitud']."','".$_POST['anchura']."','".$_POST['altura']."','".$_POST['existenci
as']."','".$_POST['activo']."')";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
?>
<script type="text/javascript">
window.location="productos.php";
</script>
Nota: Probar agregando registros en la tabla pedidos.
Si nos damos cuenta existe una celda vacia, en el cual agregaremos un botn para eliminar los
productos. Ver imagen:
$fila['activo'].'</td><td><a
href="eliminarproducto.php?id='.$fila['id'].'"><button>Eliminar</button></a>
</td></tr>';
Luego creamos el archivo eliminarproducto.php y agregamos la siguiente lnea de cdigo. Ver
imagen:
<?php include "../php/config.inc"; ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "DELETE FROM productos WHERE id=".$_GET['id']."";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
?>
<script type="text/javascript">
window.location="productos.php";
</script>
Vemos el resultado, agregando un registro y luego eliminndolo. Ver imagen:

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

3
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

CREACION DE UN FORMULARIO PARA ACTUALIZAR UN PRODUCTO


Crearemos un formulario para modificar los productos, para ello modificaremos el archivo
productos.php. Ver imagen:
while($fila = mysqli_fetch_array($resultado)) {
echo '<tr>';
echo '
<form action="actualizarproducto.php?id='.$fila['id'].'" method="POST">
<td><input type="text" name="nombre" value="'.$fila['nombre'].'"></td>
<td><input
type="text"
name="descripcion"
value="'.$fila['descripcion'].'"></td>
<td><input type="text" name="precio" value="'.$fila['precio'].'"></td>
<td><input type="text" name="peso" value="'.$fila['peso'].'"></td>
<td><input type="text" name="longitud" value="'.$fila['longitud'].'">x<input
type="text" name="anchura" value="'.$fila ['anchura'].'">x<input
type="text"
name="altura" value="'.$fila['altura'].'"></td>
<td><input
type="text"
name="existencias"
value="'.$fila['existencias'].'"></td>
<td><input type="text" name="activo" value="'.$fila['activo'].'"></td>
<td><input type="submit" value="Actualizar"></td>
</form>
<td><a
href="eliminarproducto.php?id='.$fila['id'].'"><button>Borrar</button></a></td>
</tr>';
}
mysqli_close($conexion);
?>
<tr>
<form action="nuevoproducto.php" method="POST">

En caso que la impresin de los registros no reconozca caracteres especiales, agregar por encima
del cdigo la siguiente etiqueta. Ver imagen:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
CREAR EL ARCHIVO ACTUALIZARPRODUCTO.PHP (Dentro la carpeta admin)
<?php include "../php/config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion,"utf8");
$peticion = "UPDATE productos SET
nombre='".$_POST['nombre']."',
descripcion='".$_POST['descripcion']."',
precio='".$_POST['precio']."',
peso='".$_POST['peso']."',
longitud='".$_POST['longitud']."',
anchura='".$_POST['anchura']."',
altura='".$_POST['altura']."',
existencias='".$_POST['existencias']."',
activo='".$_POST['activo']."'
WHERE id=".$_GET['id']."
";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
?>
<script type="text/javascript">
window.location="productos.php";
</script>
Actualizar productos y revisar si en la base de datos se han modificado los cambios.

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

4
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

CREACION DE CLIENTES
En el archivo de index.php que se encuentra en la carpeta admin encontramos tres enlaces. Ahora
procederemos a crear clientes.php(Gestionar clientes)

Crear dentro de la carpeta admin el archivo clientes.php, copia el cdigo de productos.php y


modificamos lo siguiente:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<table border=1>
<?php include "../php/config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "SELECT * FROM clientes ";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
echo '<tr>';
echo '

<form action="actualizarcliente.php?id='.$fila['id'].'" method="POST">


<td><input type="text" name="nombre" value="'.$fila['nombre'].'">
<input type="text" name="apellido" value="'.$fila['apellido'].'"></td>
<td><input type="text" name="email" value="'.$fila['email'].'"></td>
<td><input type="text" name="usuario" value="'.$fila['usuario'].'"></td>
<td><input type="text" name="contrasena" value="'.$fila['contrasena'].'"></td>
<td><input type="text" name="telefono" value="'.$fila['telefono'].'"></td>
<td><input type="text" name="movil" value="'.$fila['movil'].'"></td>
<td><input type="text" name="fax" value="'.$fila['fax'].'"></td>
<td><input type="text" name="direccioncall" value="'.$fila['direccioncall'].'"></td>
<td><input type="text" name="codigopostal" value="'.$fila['codigopostal'].'"></td>
<td><input type="text" name="poblacion" value="'.$fila['poblacion'].'"></td>
<td><input type="text" name="pais" value="'.$fila['pais'].'"></td>
<td><input type="text" name="dninif" value="'.$fila['dninif'].'"></td>
<td><input type="submit" value="Actualizar"></td>
</form>
<td><a
href="eliminarcliente.php?id='.$fila['id'].'"><button>Borrar</button></a></td>
</tr>
';
}
mysqli_close($conexion);
?>
<tr>
<form action="nuevocliente.php" method="POST">
<td><input type="text" name="nombre" >
<input type="text" name="apellido"></td>
<td><input type="text" name="email" ></td>
<td><input type="text" name="usuario" ></td>
<td><input type="text" name="contrasena" ></td>
<td><input type="text" name="telefono"></td>
<td><input type="text" name="movil" ></td>
<td><input type="text" name="fax"></td>
<td><input type="text" name="direccioncall" ></td>
<td><input type="text" name="codigopostal"></td>
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

5
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

<td><input
<td><input
<td><input
<td><input
</form>

type="text" name="poblacion"></td>
type="text" name="pais"></td>
type="text" name="dninif"></td>
type="submit"></td>

</tr>
</table>
RESULTADO

AADIR CLIENTES A LA BASE DE DATOS


Crear
los
archivos
elminarcliente.php,
actualizarcliente.php y nuevocliente.php. Ver imagen:

Si nos fijamos bien casi todos los archivos creados tienen


similitud con los archivos relacionados con productos.
Ejemplo el archivo nuevoproducto.php es muy similar a
nuevocliente.php, etc. Por eso abrimos ambos archivos
copio el contenido de nuevoproducto.php y pegamos en
nuevocliente.php y modificamos. Ver imagen:
<?php include "../php/config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion
=
"INSERT
INTO
clientes
VALUES
(NULL,'".$_POST['nombre']."','".$_POST['apellido']."','".$_POST['email']."','".$_POST['usuario']
."','".$_POST['contrasena']."','".$_POST['telefono']."','".$_POST['movil']."','".$_POST['fax']."','"
.$_POST['direccioncall']."','".$_POST['codigopostal']."','".$_POST['poblacion']."','".$_POST['pai
s']."','".$_POST['dninif']."')";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
?>
<script type="text/javascript">
window.location="clientes.php";
</script>
Nota: Revisar la base de datos/tabla clientes y ver si se han registrado los clientes enviados.
ELMINAR CLIENTE
De la misma manera copio el cdigo de eliminarproducto.php y pego en el archivo
eliminarcliente.php y modificamos. Ver imagen:
<?php include "../php/config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "DELETE FROM clientes WHERE id=".$_GET['id']."";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
?>
<script type="text/javascript">
window.location="clientes.php";
</script>
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

6
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

Nota: Por seguridad los botones de nuevo cliente y eliminar cliente los colocaremos
fuera del formulario del archivo clientes.php.
Por ltimo abrimos el archivo actualizarproducto.php, copiamos el cdigo y lo pegamos en el
archivo actualizarcliente.php y modificamos. Ver imagen:
<?php include "../php/config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "UPDATE clientes SET
nombre='".$_POST['nombre']."',
apellido='".$_POST['apellido']."',
email='".$_POST['email']."',
usuario='".$_POST['usuario']."',
contrasena='".$_POST['contrasena']."',
telefono='".$_POST['telefono']."',
movil='".$_POST['movil']."',
fax ='".$_POST['fax']."',
direccioncall ='".$_POST['direccioncall']."',
codigopostal ='".$_POST['codigopostal']."',
poblacion ='".$_POST['poblacion']."',
pais ='".$_POST['pais']."',
dninif ='".$_POST['dninif']."'
WHERE id=".$_GET['id']."
";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
?>
<script type="text/javascript">
window.location="clientes.php";
</script>
Probar el juego de registros: agregar, eliminar y actualizar clientes.
REGISTROS DE VISITAS
CREACION DE UN ARCHIVO PARA REGISTRAR VISITANTES
Abrir el archivo piedepagina.inc y agregar el siguiente cdigo:
</section>
<footer>
<h6>(c)Jesus Michael Flores Cori</h6>
</footer>
</div>
</body>
</html>
<?php
include "log.php";
?>
Creamos ahora la tabla registros que contendr 10 campos en la base de datos tiendaonline.
Ver imagen:

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

7
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

A continuacin creamos el archivo log.php que estar dentro de la carpeta php. Ver imagen:
<?php include "config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "INSERT INTO registros VALUES (
'".date('U')."',
'".date('Y')."',
'".date('m')."',
'".date('d')."',
'".date('H')."',
'".date('i')."',
'".date('s')."',
'".$_SERVER['REMOTE_ADDR']."',
'".$_SERVER['HTTP_USER_AGENT']."',
'".$_SERVER['REQUEST_URI']."'
)";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
?>

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

8
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

Ahora ingresa a la pgina principal de la tienda (index.php), compra un producto y se estar


guardando un registro de tu ingreso, para corroborar ingresar a la tabla registros y ver los datos
registrados. Ver imagen:

ESTADISTICAS
Modificar el archivo index.php que se encuentra ubicado en la carpeta admin y agregar un nuevo
enlace: estadsticas.php. Ver imagen:

Ahora crearemos el archivo estadisticas.php, que se ubicar dentro de la carpeta admin. Ver
imagen:
<?php include "cabecera.inc";?>
<?php include "../php/config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "
SELECT idproducto,productos.nombre,COUNT(idproducto) FROM `lineaspedido` LEFT JOIN
productos ON lineaspedido.idproducto = productos.id GROUP BY idproducto ORDER BY
COUNT(idproducto) DESC LIMIT 1
";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
echo "El producto ms comprado es: ".$fila['nombre'];
}
echo "<br>";
echo "Los productos ms comprados:";
echo "<table>";
$peticion = "
SELECT idproducto,productos.nombre,COUNT(idproducto) FROM `lineaspedido` LEFT JOIN
productos ON lineaspedido.idproducto = productos.id GROUP BY idproducto ORDER BY
COUNT(idproducto) DESC
";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
echo
"<tr><td>".$fila['nombre']."</td><td>".$fila['COUNT(idproducto)']."</td></tr>";
}
echo "</table>";
$peticion = "
SELECT clientes.nombre,clientes.apellidos,SUM(unidades*precio) FROM `pedidos` LEFT JOIN
lineaspedido ON pedidos.id = lineaspedido.idpedido LEFT JOIN productos ON

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

9
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

lineaspedido.idproducto = productos.id LEFT JOIN clientes ON pedidos.idcliente = clientes.id


GROUP BY idcliente ORDER BY SUM(precio) DESC LIMIT 1
";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
echo "El mejor cliente de la tienda es: ".$fila['nombre']." ".$fila['apellidos']." ya que se
ha gastado ".$fila['SUM(unidades*precio)']."";
}
echo "<br>";
echo "Los mejores clientes:";
echo "<table border='1'>";
$peticion = "
SELECT clientes.nombre,clientes.apellidos,SUM(unidades*precio) FROM `pedidos` LEFT JOIN
lineaspedido ON pedidos.id = lineaspedido.idpedido LEFT JOIN productos ON
lineaspedido.idproducto = productos.id LEFT JOIN clientes ON pedidos.idcliente = clientes.id
GROUP BY idcliente ORDER BY SUM(precio) DESC LIMIT 10
";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
echo
"<tr><td>".$fila['nombre']."
".$fila['apellidos']."</td><td>".$fila['SUM(unidades*precio)']."</td></tr>";
}
echo "</table>";
mysqli_close($conexion);
?>
<?php include "piedepagina.inc";?>
Analizar detalladamente las consultas.
SELECT idproducto,productos.nombre, COUNT(idproducto) FROM `lineaspedido`
LEFT JOIN productos ON lineaspedido.idproducto = productos.id GROUP BY
idproducto ORDER BY COUNT(idproducto) DESC

SELECT clientes.nombre,clientes.apellido,SUM(unidades*precio) FROM `pedidos`


LEFT JOIN lineaspedido ON pedidos.id = lineaspedido.idpedido LEFT JOIN productos
ON lineaspedido.idproducto = productos.id LEFT JOIN clientes ON pedidos.idcliente
= clientes.id GROUP BY idcliente ORDER BY SUM(precio) DESC LIMIT 1
REALIZAR UN REGISTRO DE UN NUEVO USUARIO
Modificar el archivo confirmar.php y agregar las siguientes lneas de cdigo. Ver imagen:
<form action="php/nuevoclienteweb.php" method="POST">
<input type="text" name="usuario" placeholder="Usuario"><br>
<input type="text" name="contrasena" placeholder="Contrasea"><br>
<input type="text" name="nombre" placeholder="Nombre"><br>
<input type="text" name="apellido" placeholder="Apellidos"><br>
<input type="text" name="email" placeholder="E-mail"><br>
<input type="submit">
</form>
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

10
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

A continuacin creamos el archivo nuevoclienteweb.php que estar dentro de la carpeta php


y agregamos las siguientes lneas de cdigo. Ver imagen:
<?php include "config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "INSERT INTO clientes VALUES (
NULL,
'".$_POST['nombre']."',
'".$_POST['apellido']."',
'".$_POST['email']."',
'".$_POST['usuario']."',
'".$_POST['contrasena']."',
'',
'',
'',
'',
'',
'',
'',
''
)";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
echo '
<script>
window.location="logcliente.php?usuario='.$_POST['usuario'].'&contrasena='.$_POS
T['contrasena'].'"
</script>
';
?>
Modificar el archivo logcliente.php, en el mtodo cambiar de POST a REQUEST. Ver imagen:

EVITANDO DUPLICADOS DE CLIENTES


Por ahora el registro de la compra y nuevo cliente funciona aparentemente, sin embargo si
deseamos registrar a un nuevo cliente con el mismo nombre de USUARIO, esto se realizar
normalmente, modificaremos el cdigo de nuevoclienteweb.php, para que solo acepte clientes
con nombres de usuario distintos a los ya registrados en la base de datos. Ver imagen:
<?php include "config.inc" ?>
<?php
$contador = 0;
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "SELECT * FROM clientes WHERE usuario = '".$_POST['usuario']."'";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
$contador++;
}
if($contador == 0){
$peticion = "INSERT INTO clientes VALUES (
NULL,
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

11
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

'".$_POST['nombre']."',
'".$_POST['apellidos']."',
'".$_POST['email']."',
'".$_POST['usuario']."',
'".$_POST['contrasena']."',
'',
'',
'',
'',
'',
'',
'',
''
)";
$resultado = mysqli_query($conexion, $peticion);
mysqli_close($conexion);
echo '
<script>
window.location="logcliente.php?usuario='.$_POST['usuario'].'&contrasena='.$_POS
T['contrasena'].'"
</script>
';
}else{
echo '
<script>
window.location="../confirmar.php"
</script>
';
}
?>
Si el nombre de usuario es igual a uno ya registrado en la base de datos, entonces me devolver
a confirmar.php para poder ingresar otro nombre de usuario inexistente en la base de datos.
PEDIDOS DE MULTIPLES UNIDADES
Por ahora cuando uno desea comprar un producto varias veces debe de dar clic al botn confirmar
varias veces, sin embargo para mejorar la compra mltiple crearemos un botn que permita
seleccionar varias cantidades del producto. Abrir el archivo index.php del directorio principal y
agregar la siguiente lnea de cdigo:

echo "<input type='number' value='1' max='5' min='1' id='num".$fila['id']."'>";


Ahora definiremos los valores en el script, abrir el archivo cdigo.js y modificar. Ver imagen:
function anade(){
var idnumero = $(this).val();
var cantidad = $("#num"+idnumero).val();
//alert(cantidad);
$("#carrito").load("php/poncarrito.php?p="+$(this).val()+"&cant="+cantidad);
}

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

12
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

Para finalizar el jquery realizaremos el paso de los valores a Ajax. Ver imagen:

Abrimos el archivo poncarrito.php que de momentos no conoce algunas variables y las definimos.
Ver imagen:

VER RESULTADO:
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

13
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

NMERO DE UNIDADES A LA BASE DE DATOS


Por ahora cuando registramos un producto, esto se realiza de uno en uno, modificaremos el
archivo logcliente.php, para que el registro sea segn la cantidad de pedidos que se realice de
un producto. Ver imagen:
Modificar la consulta:
for($i=0;$i<($_SESSION['contador']);$i++){
$peticion
=
"INSERT
INTO
lineaspedido
VALUES
(NULL,'".$_SESSION['idpedido']."','".$_SESSION['producto'][$i]."','".$_SESSION['cantidad'
][$i]."')";
$resultado = mysqli_query($conexion,$peticion);
Modificar la consulta dentro del bucle for:

Realizar un compra de un producto varias veces y ver el registro de la tabla pedidos, las
unidades que se han registrado. Ver imagen:

ACTUALIZACION DE ESTADISTICAS
Si un usuario nuevo compra varias unidades de un mismo producto, cuando uno se dirija a
estadsticas el archivo estadsticas.php mostrar el producto pero en una sola cantidad comprada.
Para ello modificaremos el archivo estadsticas.php. Ver imagen:
Modificar la 3 y 4 consulta. Revizar:
SELECT clientes.nombre,clientes.apellido,SUM(unidades*precio) FROM `pedidos` LEFT JOIN
lineaspedido ON pedidos.id = lineaspedido.idpedido LEFT JOIN productos ON
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

14
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

lineaspedido.idproducto = productos.id LEFT JOIN clientes ON pedidos.idcliente = clientes.id


GROUP BY idcliente ORDER BY SUM(precio) DESC LIMIT 1

SUBIDA DE IMGENES DE PRODUCTOS


Modificar el formulario del archivo productos.php que se encuentra dentro del directorio admin.
Ver imagen:

Modificar el archivo nuevoproducto.php


<?php include "../php/config.inc"; ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion
=
"INSERT
INTO
productos
VALUES
(NULL,'".$_POST['nombre']."','".$_POST['descripcion']."','".$_POST['precio']."','".$_POST['pes
o']."','".$_POST['longitud']."','".$_POST['anchura']."','".$_POST['altura']."','".$_POST['existenci
as']."','".$_POST['activo']."')";
$resultado = mysqli_query($conexion, $peticion);
$peticion = "SELECT * FROM productos ORDER BY id DESC LIMIT 1";
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

15
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

$resultado = mysqli_query($conexion, $peticion);


while($fila = mysqli_fetch_array($resultado)) {
$id = $fila['id'];
}
move_uploaded_file($_FILES['imagen']['tmp_name'],"../photo/".$_FILES['image
n']['name']);
$peticion
=
"INSERT
INTO
imagenesproductos
(NULL,'".$id."','".$_FILES['imagen']['name']."','','')";
$resultado = mysqli_query($conexion, $peticion);

VALUES

mysqli_close($conexion);
?>
<script type="text/javascript">
window.location="productos.php";
</script>
Por ultimo en caso el administrador quiera subir cualquier archivo que no sea una imagen,
agregaremos el siguiente cdigo. Ver imagen:
if($_FILES['imagen']['type'] == "image/gif" || $_FILES['imagen']['type'] ==
"image/jpg"
||
$_FILES['imagen']['type']
==
"image/jpeg"
||
$_FILES['imagen']['type'] == "image/png"){

En caso que se aun no imprime correctamente la subida de la imagen analiza el archive index.php
del directorio principal. Ver imagen:
<?php include "php/cabecera.inc" ?>
<?php include "php/config.inc" ?>
<?php
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "SELECT * FROM productos WHERE existencias > 0";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
echo "<article>";
$peticion2 = "SELECT * FROM imagenesproductos WHERE idproducto = ".$fila['id']."
LIMIT 1";
$resultado2 = mysqli_query($conexion, $peticion2);
while($fila2 = mysqli_fetch_array($resultado2)) {
echo "<img src='photo/".$fila2['imagen']."' width=100px>";
}
echo "<a href='producto.php?id=".$fila['id']."'><h3>".$fila['nombre']."</h3></a>";
echo "<p>".$fila['descripcion']."</p>";
echo "<p>Precio: ".$fila['precio']." </p>";
echo "<input type='number' value='1' max='5' min='1' id='num".$fila['id']."'>";
echo "<br>";
echo
"<a
href='producto.php?id=".$fila['id']."'><button>Ms
informacin</button></a>";
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

16
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

echo "<button value='".$fila['id']."' class='botoncompra'>Comprar ahora</button>";


echo "</article>";

}
mysqli_close($conexion);
?>

<?php include "php/piedepagina.inc" ?>


ESTILIZANDO NUESTRO PANEL DE CONTROL
CABECERA Y PIE DE PGINA
Incluir una cabecera.inc y piedepagina.inc a nuestro archivo index.php que se encuentra en el
directorio admin, los cuales la cabecera y pie de pgina tambin estarn en el mismo directorio
de la carpeta php.
Cabecera.inc
<?php
session_start();
if(!isset($_SESSION['contador'])){$_SESSION['contador'] = 0;}
?>
<!doctype html>
<html lang="es">
<head>
<title>Tienda</title>
<link rel=Stylesheet href="estiloadmin.css" >
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div id="contenedor">
<header>
<a href="index.php"><h1>Panel de control</h1></a>
<h2>Tienda online</h2>
</header>
<section>
Piedepagina.inc
</section>
<div style="clear:both;"></div>
<footer>
<h6>(c) Jose Vicente Carratala 2013</h6>
</footer>
</div>
</body>
</html>
Index.php
<?php include "cabecera.inc" ?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<a href='pedidos.php'>Gestionar pedidos</a>
<a href='clientes.php'>Gestionar clientes</a>
<a href='productos.php'>Gestionar productos</a>
<a href='estadisticas.php'>Obtener estadisticas</a>
<?php include "piedepagina.inc" ?>
A continuacin a todas las pginas de la carpeta admin que necesiten agregar una cabecera y pie
de pgina les agregamos los include de cabecera.inc y piedepagina.inc. Ejemplos:
Estadsticas.php , Productos.php, Pedidos.php, Clientes.php e Index.php
Modificaremos un poco la cabecera.inc para darle un mejor estilo. Ver imagen:
Cabecera.inc
</head>
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

17
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

<body>
<div id="contenedor">
<header>
<a href="index.php"><h1>Panel de control</h1></a>
<h2>Tienda online</h2>
<a href='pedidos.php' class="botonmenu">Gestionar pedidos</a>
<a href='clientes.php' class="botonmenu">Gestionar clientes</a>
<a href='productos.php' class="botonmenu">Gestionar productos</a>
<a href='estadisticas.php' class="botonmenu">Obtener estadsticas</a>
<div style="clear:both;"></div>
</header>
<section>
El archivo index.php quedara de la siguiente
forma:
Daremos un mejor estilizando a nuestras
tablas con css, para ellos borramos todos los
border=1 de las tablas creadas. Ver
imagen:

Luego crearemos el archivo estiloadmin.css. Ver imagen:


body{
font-family:arial;
}
.botonmenu{
float:left;
margin:2px;
padding:4px;
background:black;
color:white;
border-radius:3px;
text-decoration:none;
}
table{
border-collapse:collapse;
font-size:10px;
}
td{
padding:4px;
}
tr{
border-bottom:1px dashed grey;
}
input{
border:0px;
box-shadow:0px 5px 8px rgba(0,0,0,0.2) inset;
padding:4px;
background:rgb(240,240,240);
border-radius:4px;
font-size:10px;
}
Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

18
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

.boton,button{
box-shadow:0px 5px 10px rgba(0,0,0,0.3);
border:0px;
padding:4px;
font-size:10px;
}
.sombreado{
background:rgb(220,220,220);
}
Modificamos tambin un poco el archivo clientes.php para alternar una fila sombreada y otra no.
Ver imagen:
<?php include "cabecera.inc";?>
<?php include "../php/config.inc" ?>
<table>
<?php
$contador = 0;
$conexion = mysqli_connect($servidor,$usuario,$contrasena,$basededatos);
mysqli_set_charset($conexion, "utf8");
$peticion = "SELECT * FROM clientes ";
$resultado = mysqli_query($conexion, $peticion);
while($fila = mysqli_fetch_array($resultado)) {
echo '<tr';
if($contador == 1){echo " class='sombreado' ";}
echo'>';
echo'
<form action="actualizarcliente.php?id='.$fila['id'].'" method="POST">
<td><input
type="text"
name="nombre"
value="'.$fila['nombre'].'"><input
type="text" name="apellido" value="'.$fila['apellido'].'"></td>
<td><input type="text" name="email" value="'.$fila['email'].'"></td>
<td><input type="text" name="usuario" value="'.$fila['usuario'].'"></td>
<td><input type="text" name="contrasena" value="'.$fila['contrasena'].'"></td>
<td><input type="text" name="telefono" value="'.$fila['telefono'].'"></td>
<td><input type="text" name="movil" value="'.$fila['movil'].'"></td>
<td><input type="text" name="fax" value="'.$fila['fax'].'"></td>
<td><input type="text" name="direccioncall" value="'.$fila['direccioncall'].'"></td>
<td><input type="text" name="codigopostal" value="'.$fila['codigopostal'].'"></td>
<td><input type="text" name="poblacion" value="'.$fila['poblacion'].'"></td>
<td><input type="text" name="pais" value="'.$fila['pais'].'"></td>
<td><input type="text" name="dninif" value="'.$fila['dninif'].'"></td>
<td><input class="boton" type="submit" value="Actualizar"></td>
</form>
<td><a
href="eliminarcliente.php?id='.$fila['id'].'"><button>Borrar</button></a></td>
</tr>';
if($contador == 0){$contador++;}else{$contador--;}
}
mysqli_close($conexion);
?>
RESULTADO:

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com

19
UNIDAD DIDCTICA: TALLER DE PROGRAMACIN WEB

ACTIVIDADES DE EXTENSION:
Validar los campos necesarios de los formularios de nuestra aplicacin web Email,
Contrasea, etc. Ejemplo el campo de contrasea, en la creacin de nuevo cliente por
defecto muestra los caracteres, modificarlo.
Aplicar la funcin crypt() a las contraseas para encriptarlas en la base de datos.
Insertar un Slider en la tienda online, que muestre los productos que oferta la tienda.
Subir la tienda online a un servidor remoto, tener en consideracin el archive config.php
el cual habr que modificar segn los datos de usuario, contrasea, etc.
Investigar y dar un posicionamiento web a la pgina tienda online.
Trabajar con google analytic y agregar los script necesarios para el registro de las visitas
de nuestros usuarios.
FIN DEL WORKSHOP

Docente: Jess Michael FLORES CORI

E-mail: jesusflorescori@hotmail.com