Você está na página 1de 20

ej.

css

Buscar
Hola Elias07
Panel Control

Cerrar Sesin

DesarrolloWeb.com > Manuales > Taller de PHP

Carro de Compras en PHP


Por Andrs Fernndez
26 de septiembre de 2007 28 Comentarios Scripts en PHP

Nuestro objetivo es construir un carro de compras muy simple, para


ver su funcionamiento. Luego, cada uno de ustedes podr adaptarlo a
sus necesidades y/o mejorarlo para que sea ms cmodo para el
usuario.
Pueden ver el ejemplo en marcha de lo que
vamos a hacer aqu.
Antes de empezar veremos, de manera
resumida, para qu se utilizan las sesiones:
Las sesiones nos permiten registrar un nmero
arbitrario de variables que se conservan durante
toda la visita de un usuario a una pgina web.
Dichas variables pueden ser diferentes para
cada usuario, ya que estn referenciadas por un
identificador nico que se le asigna a cada
visitante. En otras palabras, una sesin es una
manera de almacenar variables de manera temporal, semejante a una cookie, pero con
ciertas diferencias: las cookies se almacenan en la PC del usuario y pueden desactivarse; las
sesiones, en cambio, se almacenan temporalmente en el servidor, en un fichero que se
crea en el momento en que almacenamos la variable. Sabiendo esto, ya estamos en
condiciones de entender cmo va a funcionar nuestro carro de compras.
Primero crearemos en mysql una tabla para nuestro catlogo de artculos:
create table catalogo (id int not null auto_increment primary key,producto
varchar(100),precio decimal(9,2))

varchar(100),precio decimal(9,2))

Tambin vamos a necesitar algunas imgenes para ayudar visualmente al usuario que va a
utilizar nuestro carrito (en el ejemplo vamos a utilizar estas, luego cada uno las reemplaza
por las que quiera):
Imagen de producto no agregado al carrito:
productonoagregado.gif
Imagen de producto agregado:
productoagregado.gif
Botn para eliminar un producto del carrito:
trash.gif
Botn para actualizar las cantidades de un producto agregado:
actualizar.gif
Botn para continuar la seleccin de artculos:
continuar.gif
Botn para ver el contenido del carrito:
vercarrito.gif
Con estos elementos, podemos crear el archivo agregacar.php, que nos servir para
introducir productos dentro del carro (y para modificar sus cantidades) y que contendr el
siguiente cdigo:
<?php
session_start();
//con session_start() creamos la sesin
//si no existe o la retomamos si ya ha
//sido creada
extract($_REQUEST);
//la funcin extract toma las claves
//de una matriz asoiativa y las
//convierte en nombres de variable,
//asignndoles a esas variables
//valores iguales a los que tena
//asociados en la matriz. Es decir,
//convierte a $_GET['id'] en $id,
//sin que tengamos que tomarnos el

//sin que tengamos que tomarnos el


//trabajo de escribir
//$id=$_GET['id'];
mysql_connect("localhost","usuario","password");
mysql_select_db("db");
//inclumos la conexin a nuestra
//base de datos
if(!isset($cantidad)){$cantidad=1;}
//Como tambin vamos a usar este
//archivo para actualizar las
//cantidades, hacemos que cuando
//la misma no est indicada sea
//igual a 1
$qry=mysql_query("select * from catalogo where
id='".$id."'");
$row=mysql_fetch_array($qry);
//Si ya hemos introducido algn
//producto en el carro lo
//tendremos guardado temporalmente
//en el array superglobal
//$_SESSION['carro'], de manera
//que rescatamos los valores de
//dicho array y se los asignamos
//a la variable $carro, previa
//comprobacin con isset de que
//$_SESSION['carro'] ya haya sido
//definida
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];
//Ahora introducimos el nuevo
//producto en la matriz $carro,
//utilizando como ndice el id
//del producto en cuestin,
//encriptado con md5.
//Utilizamos md5 porque genera
//un valor alfanumrico que luego,
//cuando busquemos un producto
//en particular dentro de la
//matriz, no podr ser confundido
//con la posicin que ocupa dentro
//de dicha matriz, como podra

//ocurrir si fuera slo numrico.


//Cabe aclarar que si el producto
//ya haba sido agregado antes,
//los nuevos valores que le
//asignemos reemplazarn a los
//viejos.
//Al mismo tiempo, y no porque
//sea estrictamente necesario
//sino a modo de ejemplo,
//guardamos ms de un valor en
//la variable $carro, valindonos
//de nuevo de la herramienta array.
$carro[md5($id)]=array('identificador'=>md5($id),
'cantidad'=>$cantidad,'producto'=>$row['producto'],
'precio'=>$row['precio'],'id'=>$id);
//Ahora dentro de la sesin
//($_SESSION['carro']) tenemos
//slo los valores que tenamos
//(si es que tenamos alguno)
//antes de ingresar a esta pgina
//y en la variable $carro tenemos
//esos mismos valores ms el que
//acabamos de sumar. De manera que
//tenemos que actualizar (reemplazar)
//la variable de sesin por la
//variable $carro.
$_SESSION['carro']=$carro;
//Y volvemos a nuestro catlogo de
//artculos. La cadena SID representa
//al identificador de la sesin, que,
//dependiendo de la configuracin del
//servidor y de si el usuario tiene
//o no activadas las cookies puede
//no ser necesario pasarla por la url.
//Pero para que nuestro carro funcione,
//independientemente de esos factores,
//conviene escribirla siempre.
header("Location:catalogo.php?".SID);
?>

Luego creamos el archivo borracar.php, que nos permitir eliminar artculos que hayamos

Luego creamos el archivo borracar.php, que nos permitir eliminar artculos que hayamos
ingresado:
<?php
session_start();
//con session_start()
//creamos la sesin si
//no existe o la retomamos
//si ya ha sido creada
extract($_GET);
//Como antes, usamos
//extract() por comodidad,
//pero podemos no hacerlo
//tranquilamente
$carro=$_SESSION['carro'];
//Asignamos a la variable
//$carro los valores
//guardados en la sessin
unset($carro[md5($id)]);
//la funcin unset borra
//el elemento de un array
//que le pasemos por
//parmetro. En este caso
//la usamos para borrar el
//elemento cuyo id le pasemos
//a la pgina por la url
$_SESSION['carro']=$carro;
//Finalmente, actualizamos
//la sessin, como hicimos
//cuando agregamos un producto
//y volvemos al catlogo
header("Location:catalogo.php?".SID);
?>

Luego creamos nuestro catlogo de productos, el archivo catalogo.php:


<?php
ob_start("ob_gzhandler");
//Las funciones ob_start y
//ob_end_flush te permiten
//escojer en qu momento
//enviar el resultado de un

//enviar el resultado de un
//script al navegador. Si
//no las utilizamos estamos
//obligados a que nuestra
//primera lnea de cdigo
//sea session_start() u
//obtendremos un error
session_start();
//conectamos a la base de
//datos
mysql_connect("localhost","usuario","password");
mysql_select_db("db");
//rescatamos los valores
//guardados en la variable de
//sesin (si es que hay alguno,
// cosa que comprobamos con isset)
//y los asignamos a $carro.
//Si no existen valores, ponemos a false
//el valor de $carro
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];else $carro=false;
//y hacemos la consulta
$qry=mysql_query("select * from catalogo order by producto asc");
?>
<html>
<head>
<title>CATLOGO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!-.catalogo {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}
-->
</style>
</head>
<body>
<table width="272" align="center" cellpadding="0" cellspacing="0" style="border:
1px solid #000000;">

<tr valign="middle" bordercolor="#FFFFFF" bgcolor="#DFDFDF" class="catalogo">


<td width="170"><strong>Producto</strong></td>
<td width="77"><strong>Precio</strong></td>
<td width="25" align="right"><a href="vercarrito.php?<?php echo SID ?>" title="Ver
el contenido del carrito">
<img src="vercarrito.gif" width="25" height="21" border="0"></a></td>
</tr>
<?php
//mostramos todos nuestros
//artculos, viendo si han
//sido agregados o no a nuestro
//carro de compra
while($row=mysql_fetch_assoc($qry)){
?>
<tr valign="middle" class="catalogo">
<td><?php echo $row['producto'] ?></td>
<td><?php echo $row['precio'] ?></td>
<td align="center">
<?php
if(!$carro || !isset($carro[md5($row['id'])]['identificador']) ||
$carro[md5($row['id'])]['identificador']!=md5($row['id'])){
//si el producto no ha sido
//agregado, mostramos la imagen
//de no agregado, linkeada
//a nuestra pgina de agregar
//producto y transmitndole a
//dicha pgina el id del artculo
//y el identificador de la sesin
?>
<a href="agregacar.php?<?php echo SID ?>&id=<?php echo $row['id']; ?>">
<img src="productonoagregado.gif" border="0" title="Agregar al Carrito"></a><?php
}else
//en caso contrario mostramos la
//otra imagen linkeada., a la
//pgina que sirve para borrar el
//artculo del carro.
{?><a href="borracar.php?<?php echo SID ?>&id=<?php echo $row['id']; ?>">
<img src="productoagregado.gif" border="0" title="Quitar del Carrito"></a><?php } ?
></td>
</tr><?php } ?>
</table>

</body>
</html>
<?php
ob_end_flush();
?>

Y por ltimo el archivo en el que mostramos el contenido del carro, llamado


vercarrito.php:
<?php
session_start();
//Iniciamos o retomamos la
//sesin
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];else $carro=false;
//La asignamos a la variable
//$carro si existe o ponemos a false $carro
//en caso contrario
?>
<html>
<head>
<title>PRODUCTOS AGREGADOS AL CARRITO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!-.tit {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #FFFFFF;
}
.prod {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}
h1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
color: #990000;
}
-->

-->
</style>
</head>
<body>
<h1 align="center">Carrito</h1>
<?php
if($carro){
//si el carro no est vaco,
//mostramos los productos
?>
<table width="720" border="0" cellspacing="0" cellpadding="0" align="center">
<tr bgcolor="#333333" class="tit">
<td width="105">Producto</td>
<td width="207">Precio</td>
<td colspan="2" align="center">Cantidad de Unidades</td>
<td width="100" align="center">Borrar</td>
<td width="159" align="center">Actualizar</td>
</tr>
<?php
$color=array("#ffffff","#F0F0F0");
$contador=0;
//las 2 lneas anteriores
//sirven slo para hacer
//una tabla con colores
//alternos
$suma=0;
//antes de recorrer todos
//los valores de la matriz
//$carro, ponemos a cero la
//variable $suma, en la que
//iremos sumando los subtotales
//del costo de cada item por la
//cantidad de unidades que se
//especifiquen
foreach($carro as $k => $v){
//recorremos la matriz que tiene
//todos los valores del carro,
//calculamos el subtotal y el
// total
$subto=$v['cantidad']*$v['precio'];
$suma=$suma+$subto;
$contador++;

$contador++;
//este es el contador que usamos
//para los colores alternos
?>
<form name="a<?php echo $v['identificador'] ?>" method="post"
action="agregacar.php?<?php echo SID ?>" id="a<?php echo $v['identificador'] ?>">
<tr bgcolor="<?php echo $color[$contador%2]; ?>" class='prod'>
<td><?php echo $v['producto'] ?></td>
<td><?php echo $v['precio'] ?></td>
<td width="43" align="center"><?php echo $v['cantidad'] ?></td>
<td width="136" align="center">
<input name="cantidad" type="text" id="cantidad" value="<?php echo $v['cantidad'] ?
>" size="8">
<input name="id" type="hidden" id="id" value="<?php echo $v['id'] ?>"> </td>
<td align="center"><a href="borracar.php?<?php echo SID ?>&id=<?php echo $v['id'] ?
>"><img src="trash.gif" width="12" height="14" border="0"></a></td>
<td align="center">
<input name="imageField" type="image" src="actualizar.gif" width="20" height="20"
border="0"></td>
</tr></form>
<?php
//por cada item creamos un
//formulario que submite a
//agregar producto y un link
//que permite eliminarlos
}
?>
</table>
<div align="center"><span class="prod">Total de Artculos: <?php echo
count($carro);
//el total de items va a ser igual
//a la cantidad de elementos que
//tenga la matriz $carro, valor
//que obtenemos con la funcin
//count o con sizeof
?></span>
</div><br>
<div align="center"><span class="prod">Total: $<?php echo number_format($suma,2);
//mostramos el total de la variable
//$suma formatendola a 2 decimales
?></span>

</div><br>
<div align="center"><span class="prod">Continuar la seleccin de productos</span>
<a href="catalogo.php?<?php echo SID;?>">
<img src="continuar.gif" width="13" height="13" border="0"></a>
</div>
<?php }else{ ?>
<p align="center"> <span class="prod">No hay productos seleccionados</span>
<a href="catalogo.php?<?php echo SID;?>">
<img src="continuar.gif" width="13" height="13" border="0"></a>
<?php }?>
</p>
</body>
</html>

Y listo, ya tenemos nuestro carrito en funcionamiento.


Todos los archivos utilizados estn disponibles para descargar gratuitamente desde el
botn de descargas, ubicado en el lateral izquierdo de esta misma pgina.

Autor

Andrs Fernndez

Subir

Manual
Taller de PHP
Segmentacin por pas para OpenAds

Conectar con Paypal

Segmentacin por pas para OpenAds

Conectar con Paypal

Compartir
3
Compartir

0
Tweet

Comentarios
Enviar un comentario al artculo

Nestor
Donde estan los archivos para desgargarlos?

02/10/2007

Marcar como spam

NiSiS
Buenas me gustaria saber como ago para agregar cosas al catalogo si me puede

02/10/2007

informar se lo agredeceria!!!
Marcar como spam

ndweb
Este script ya lo lo conocia y funciona bien para agregar nuevos productos al catalogo la 02/10/2007
unica forma de hacerlo es ingresando nuevos registros directamente a la base de datos.
Mi preguntas es como destruyo la session al cerrar el navegador
Marcar como spam

Javier
Yo tampoco veo el boton para descargar

03/10/2007

Marcar como spam

Sergio
Bueno, me doy cuenta que cada vez soy mas torpe. Busco una buena persona que le

04/10/2007

funcione el carro y me pueda pasar los archivos, yo ya descarto el llegar a coonseguir


programarlo.
Marcar como spam

MondoLirondo
en la siguiente direccin te puedes bajar el carrito:

07/10/2007

http://www.desarrolloweb.com/manuales/56/
saludos
Marcar como spam

Olber
Hola, el archivo catalogo.php me genera un error que dice: Warning:

28/11/2008

mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in


C:AppServwwwsubcarrocatalogo.php on line 43
a que se debe? gracias.
Marcar como spam

fabian_ferney_alvarez_ orez
darte las gracias

06/7/2009

Quiero agradecerle a esta comunidad lo mucho que me ha ayudado en mi trabajo y en


mi aprendizaje.
Mil y Mil Gracias
Marcar como spam

viviana garcia
mil gracias

15/8/2009

HOLA , ES MARAVILLOSO SABER DE COMO CREAS Y HACER CARRITOS DE OMPRAS ,


GRACIAS POR PREOCUPARSE DE SU SEMENJANTES ,
Marcar como spam

walter
agradecer y consultar

04/5/2010

agradecer y consultar

04/5/2010

bueno quiero partir dando las gracias ya que este articulo me sirvio demasiado, me
saque un gran peso de encima. Pero me gustaria consultar como se puede hacer para tener un solo
boton actualizar que cambie todos los productos, es decir no tener que cambiar la cantidad de un
producto, actualizar, volver, cambiar la cantidad de otro producto, actualizar, etc..
Marcar como spam

eric17
ver carrito

20/10/2010

cuando uno ve directamente el carrito sale con 1 articulo pero sin nombre como puedo
hacer para que no me salga nada ahi
Marcar como spam

daniel
ayuda

19/1/2011

alguien me podria ayudar a mi sale un error aqui -> while($row=mysql_fetch_assoc($qry))


{
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in
C:wampwwwcarrito de comprascatalogo.php on line 65
Marcar como spam

Mainor
Carrito de Compras

30/1/2011

Ya tengo los archivos en php que muestras en esta pagina, pero no me hubico como
hago para incrustar ese carrito para que me funcione en pagina html, necesito hacer una pagina que
pueda ir agregando articulos al carro de compras y que la recopilacion de esa informacion sea
enviada a un correo para luego ponerme en contacto con ese comprador o en todo caso llevarlo a
realizar el pago por paypal
Ayudeme por favor
Dios les bendiga pro esta pagina
Marcar como spam

rexona
Necesito ayuda

08/2/2011

Cordial saludo me uno a vuestra comunidad


Quisiera que alguien me guiara con un asunto de un carrito de compra, resulta que tengo que hacer

Quisiera que alguien me guiara con un asunto de un carrito de compra, resulta que tengo que hacer
un carro donde sobre una eleccion de un producto inicial se le puedan ir sumando caracteristicas,
por ejemplo al elegir un cuadro luego se le pueda sumar la eleccion de un marco, o por ejemplo, al
elegir un carro se le pueda agregar acto seguido, un color, unos rines diferentes, entre una variedad
de opciones... si existe dentro de wordpress algun pluggin con estas caracteristicas tambien me
serviria.
De antemano agradezco cualquier colaboracion que me den.
aqui les dejo un ejemplo de lo que necesito...
http://www.overstockart.com/cafteratnig1.html
por favor me pueden enviar cualquier ayuda a mi correo smiomnoink@hotmail.com
Marcar como spam

leimerfco
no he podido poner a funcionar el carrito

27/4/2011

cuando ingreso a http://localhost/carrito_compras/index.php luego escojo una categoria


me sale el siguiente error
http://localhost/carrito_compras/libros_cat?idcat=2
objeto no encontrado
Marcar como spam

sergio
me gustaria saber las partes en que esta constituido un carro de la compra. Gracias

19/5/2011

Las partes i materiales mas importantes del carro, i si pudiera ser los precios! muchas
gracias
Marcar como spam

javier madariaga
ayuda sobre esta linea

07/9/2011

if(!$carro || !isset($carro[md5($row['id'])]['identificador']) || $carro[md5($row['id'])]


['identificador']!=md5($row['id']))
Esta linea es del catalogo, estoy intentando adaptarla a un carro, pero donde pone id es el campo id ,
eso esta claro pero donde pone identificador , que es pues n lo entiendo. un saludo y gracias
Marcar como spam

eslomao
errores en codigo

14/9/2011

hola , he compiado ese codigo pero me da varios errores, aki los detallo
mysql_fetch_assoc () espera un parmetro a ser el recurso, boleano dado en C: xampp htdocs
Proyecto catalogo.php on line 33
Advertencia : mysql_fetch_array () espera un parmetro a ser el recurso, boleano dado en C: xampp
htdocs Proyecto agregacar.php en la lnea 9
Advertencia : No se puede modificar la informacin de cabecera - cabeceras ya enviado por (la
produccin comenz en C: xampp htdocs Proyecto agregacar.php: 9) en C: xampp htdocs Proyecto
agregacar.php on line 16
aki pongo el codigo completo de CATALOGO.PHP
<?php
ob_start("ob_gzhandler");
mysql_connect("localhost","root","");
mysql_select_db("carrito de compras");
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];else $carro=false;
$qry=mysql_query("select * from catalogo order by producto asc");
?>
<html>
<head>
<title>CAT&Aacute;LOGO</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!-.catalogo {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}
-->
</style>
</head>
<body>
<table width="272" align="center" cellpadding="0" cellspacing="0" style="border: 1px solid
#000000;">

#000000;">
<tr valign="middle" bordercolor="#FFFFFF" bgcolor="#DFDFDF" class="catalogo">
<td width="170"><strong>Producto</strong></td>
<td width="77"><strong>Precio</strong></td>
<td width="25" align="right"><a href="vercarrito.php?<?php echo SID ?>" title="Ver el contenido del
carrito">
<img src="vercarrito.gif" width="25" height="21" border="0"></a></td>
</tr>
<?php
while($row=mysql_fetch_assoc($qry)){
if( $qry = mysql_query("SELECT * FROM 'catalogo' where id='".$id."'") ) {
}
else {
echo 'Fallo en la consulta SQL: '.mysql_error();
}
?>
<tr valign="middle" class="catalogo">
<td><?php echo $row['producto'] ?></td>
<td><?php echo $row['precio'] ?></td>
<td align="center">
<?php
if(!$carro || !isset($carro[md5($row['id'])]['identificador']) || $carro[md5($row['id'])]
['identificador']!=md5($row['id'])){
?>
<a href="agregacar.php?<?php echo SID ?>&id=<?php echo $row['id']; ?>">
<img src="productonoagregado.gif" border="0" title="Agregar al Carrito"></a><?php }else
{?><a href="borracar.php?<?php echo SID ?>&id=<?php echo $row['id']; ?>">
<img src="productoagregado.gif" border="0" title="Quitar del Carrito"></a><?php } ?></td>
</tr><?php }?>
</table>
</body>
</html>
<?php
ob_end_flush();
?>
alguna solucion ???? gracias

alguna solucion ???? gracias


Marcar como spam

Rafael Agundis
Para que batallar

16/11/2011

No entiendo para que batallar, ya existen sitios que te rentan el carrito de compras bien
hecho y con todo lo necesario como traduccion a 6 idiomas de los productos, chat, area de
administracion, diseo grafico profesional etc. El mejor sitio es Empresa123, yo lo he usado y mis
clientes estan contentos:
http://www.empresa123.com
Marcar como spam

jinn
ingreso de producto

12/4/2012

prove los codigos conforme indicaba pero no puedo ingresar productos o agragar, cual
seria mi respuesta ???????
Marcar como spam

faneosg
descarga del Carro de compras

03/6/2012

No veo el boton para realizar la descarga del ejemplo.


Marcar como spam

Carlos Kravitz
Duda sobre datos que no aparecen...

15/6/2012

He estado leyendo el cdigo, al parecer todo esta correcto...el nico detalle que me
surgi es cuando visualizo el carrito....lo que son las columnas de Producto y Precio no se ven....al
igual que la suma total de la venta que se realizar...fui siguiendo las lineas y al parecer todo esta
correcto...quizas algo se me este pasando y ah sea la solucin....gracias....Espero respuesta y en lo
que pueda aportar....
Marcar como spam

eneas
Graciias
buena onda! que buen tutorial si nos sirvio mucho! :)

10/7/2012

Marcar como spam

Eva
No veo enlace de descarga

02/8/2012

Hola, muy buen manual, pero no veo el enlace de descarga (uso IE8).
Marcar como spam

mmilton
No funciona

04/9/2013

No funciona, he copiado tal cual y no funciona, tampoco me marca errores... lo extrao


es que tengo funcionando otras apps sin problema.
A alguien le sucede algo similar?
Marcar como spam

astrid
como veo el nombre

14/2/2014

Pasa que al seleccionar me envia a la hoja siguiente, pero alla solo muestra la cantidad y
precio, pero no muestra el nombre del producto.
agraderia una ayudita pr favor, a mi correo: astriddmendez@yahoo.com
Desde ya muchas gracias y Dios los bendiga.:
Marcar como spam

guicholuco
Que estar pasando?

22/5/2014

Como lo veo en un comentario anterior, del 2012, en el proceso de vercarrito, no aparece


el nombre del producto, el precio y el importe total. Le puse unos ecos y al parecer el valor de precio
es 0, por lo que entiendo puede ser el error respecto a la suma total. Le busco y no le encuentro el
detalle.
Marcar como spam

Dani
funciona bien
Funciona Perfecto!!! esto me va a ser de gran utilidad. Muchas gracias!!
Marcar como spam

20/5/2015

Marcar como spam


Enviar un comentario al artculo

Principales

Monotemticos

Blogging

Manuales

Desde cero

Actualidad

FAQs

HTML, CSS

De inters

En directo

Javascript, Ajax

Agenda

Vdeos

Diseo, ASP

Powered by:

Desarrolloweb.com Copyright Publicidad Acerca de Datos legales P. de cookies Contacta

Você também pode gostar