Veréis estoy haciendo una web con un simple carrito en que se van añadiendo productos y luego el pedido se envia via mail. Los datos de los productos los recojo de una bd mediante php. Tengo tres archivos:
1º) es la lista de productos y todo carga a la perfección.
2º) Sería el "popUp" que se abriría al pulsar sobre cualquier producto. En el se encuentra el boton añadir al carrito.
3º) El del carrito, donde debe recoger la variable id que le paso mediante _GET y en base a ella cargarme los datos correspondientes a esa id desde la base de datos. Pero no lo hace. En mi servidor local si, pero una vez lo subo a internet, esto no ocurre.
Os pongo el codigo de los tres archivos para que entendáis mejor el funcionamiento. Ah! y perdonar por tanto rollo en mis comentarios, pero estoy empezando con php y necesito explicarmelo todo a mi misma
Productos.php
Código :
<!--Conectamos con mysql y la base de datos--> <?php /*require_once ("estructura/conexionlocal.php");*/ require_once 'estructura/conexion.php'; $titulo= "Productos 'El hombre del Bigote'"; require_once 'estructura/head.php'; ?> <body> <div id="container"> <?php include ("estructura/nav.html"); ?> <div class="main"> <div class="menu_lateral"> <?php /*Definimos la consulta y la realizamos*/ $consulta1="SELECT * FROM categoria_productos"; $res2= mysql_db_query($db,$consulta1,$con); /*Ya tenemos los registros en memoria, ahora hay que hacer que aparezcan*/ while ($reg2 = mysql_fetch_array($res2)) { $categoria= $reg2['id_categoria']; ?> <div class="categoria"> <a href="productos.php?id=<?php echo $categoria;?>"> <?php echo $reg2['nombre_categoria'];?></a> </div> <div class="linea_productos" id="linea"> <div><img src="images/adornos/lineas/lineasProductos/<?php echo $reg2['nombre_categoria'];?>.png"></div> </div> <?php } ?> </div> <div id="contenedor"> <ul id="galeria"> <?php $sql= "SELECT * FROM productos WHERE id_categoria=".$_GET['id']." " ; $res=mysql_db_query($db,$sql,$con); //echo $sql; while ($reg= mysql_fetch_array($res)) { $miniatura= $reg['id_producto']; $nombre = $reg['nombre_producto']; $descripcion = $reg['descripcion_producto']; $precio = $reg['precio_producto']; ?> <li id="thumbnails"> <a href="productosPopUp.php?id=<?php echo $_GET['id'];?>&id2=<?php echo $miniatura;?>" class="lbOn"> <img src="images/productos/thumb/<?php echo $miniatura ;?>.png" alt="imagen" /> <!--hay que poner el echo por que aunque no es para que salga en pantalla se necesita para que se imrpima realmente en la ruta--> </a> <br /> <span id="nombre"><?php echo $nombre ;?> </span><br /> <span><?php echo $precio ;?> </span> <br> <!--VERSION CARRITO1: <a href="carrito/intro_producto.php?id=<?php echo $miniatura;?>&nombre=<?php echo $nombre;?>&precio=<?php echo $precio;?>"><b>Añadir al carrito</b></a>--> </li> <?php } ?> </ul> </div> <?php $sql= "SELECT id_categoria FROM productos WHERE id_categoria=".$_GET['id']." " ; //en este caso voy a utilizar todos los campos de la tabla, pero si no fuera así sería preferible descargar concretamente los q nos interesan para gastar menos recursos. $res=mysql_db_query($db,$sql,$con); //echo $sql; if ($reg= mysql_fetch_array($res)) { ?> <div id="adorno_productos"> <img src="images/adornos/adorno_<?php echo $reg['id_categoria'] ;?>.png"> </div> <?php } ?> </div> <?php include ('estructura/pie.html');?> </div> </body> </html>[/center][/center]
popUp.php
Código :
<?php session_start(); $titulo = "Productos EL HOMBRE DEL BIGOTE"; //creamos dos variables que tomen el valor de las variables pasadas por la uRL. El hecho de separarlas, y seguir manteniendo la id de la categoría, //(se podía haber echo unicamente con la id del producto) Nos sirve para prograamar el boton volver, y conseguir que vuelva al apartado del menu (categoria) //en el que nos encontramos. Si no lo hicieramos así, perderíamos este dato y solo podríamos decirle que volviera a una determinada categoria fija. //Esto es consecuencia de la programación dinamica. Si tuvieramos un pop Up para cada categoria esto no ocurriría, pero al estar programando dinamicamente, //el usuario puede haber pulsado cualquier boton y estar en cualquier categoria de productos. ¿A cual volvemos? Pues a la que marca la variable pasada por GET. $id_categoria = $_GET['id']; // Variable correspondiente a la id categoria $id_producto = $_GET['id2']; //id2 es la segunda variable que pasamos via _GET, correspondiente a la id del producto que se debe mostrar ?> <!--Conectamos con la BD y obtenemos la información del producto actual--> <?php require_once ("estructura/conexionlocal.php"); /*require_once 'estructura/conexion.php';*/ $sql= "SELECT * FROM productos WHERE id_producto=$id_producto" ; //en este caso voy a utilizar todos los campos de la tabla, pero si no fuera así sería preferible descargar concretamente los q nos interesan para gastar menos recursos. $res=mysql_db_query($db,$sql,$con); $reg= mysql_fetch_array($res); include("estructura/head.php"); ?> <body> <div id="contenidoPopUp"> <!--desplegamos la imagen actual a tamañao completo con su respectiva descripcion--> <img id="imgcompleta" src="images/productos/popUp/<?php echo $reg['id_producto'];?>.jpg" alt="<?php echo $reg['nombre_producto'];?>" /> <!-- aqui, en el boton VOLVER podriamos untiliar java (javascript:history.back()) pero como el Pop Up no cambia la url, realmente es como si no hubieramos avanzado. Por lo que no retrocede a la pagina correspondiente--> <div id="navegacion"><a href="carrito.php">Ver cesta</a> | <a href="productos.php?id=<?php echo $id_categoria;?>">Volver</a></div> <!--Establecemos un pequeño div para la informacion de la imagen. Cuando el usuario pase el mouse por encima, apareceran los datos (titulo y descripcion) --> <div id="masInfo"> <h4><?php echo $reg['nombre_producto'];?></h4> <p id="descripcion"><?php echo $reg['descripcion_producto'];?></p> <br> <br> <br> <p id="precio"><?php echo $reg['precio_producto'];?> </p> <br> <a id="botonAñadir" href='carrito.php?id=<?php echo $reg['id_producto'];?>&action=add' alt='Añadir al carro'> <button type="button" value="Añadir al carrito"> <span> Añadir al carrito <span id="flecha"> ></span> </span> </button> </a> <br> </div> </div> <div id="cerrar"> <a href="#" class="lbAction" rel="deactivate"> <img id="botonCerrar" src="images/iconos/popUp/lightbox-btn-close.gif" /> </a> </div> </body> </html>
Y por último el del Carrito.php:
Código :
<?php session_start(); $titulo = "Carrito de Compra con Php y Mysql"; /*require_once ("estructura/conexionlocal.php");*/ require_once 'estructura/conexion.php'; include("estructura/head.php"); ?> <body> <div id="container"> <?php include("estructura/nav.html");?> <div class="main"> <div id="contenedor_carrito"> <h1 id="cabecera">Carrito de compras</h1> <div class='text-border'> <div id="cuerpo"> <div id="principal_carrito"> <?php if (isset($_GET['id'])) $id = $_GET['id']; else $id = 1; if (isset($_GET['action'])) $action = $_GET['action']; else $action = "empty"; switch($action){ case "add": if(isset($_SESSION['carro'][$id])) $_SESSION['carro'][$id]++; else $_SESSION['carro'][$id]=1; break; case "remove": if(isset($_SESSION['carro'][$id])) { $_SESSION['carro'][$id]--; if($_SESSION['carro'][$id]==0) unset($_SESSION['carro'][$id]); } break; case "removeProd": if(isset($_SESSION['carro'][$id])){ unset($_SESSION['carro'][$id]); } break; case "mostrar": if(isset($_SESSION['carro'][$id])){ continue; } break; case "empty": unset($_SESSION['carro']); break; } /*MOSTRAR Carro*/ /*echo "<pre>"; print_r($_SESSION); echo "</pre>"; echo "CANTIDAD: " . $_SESSION['carro'][$id] . "<br>"; echo "ID : " . $id . "<br>"; */ if(isset($_SESSION['carro'])){ $totalcoste = 0; //Inicializamos el contador de productos seleccionados. $xTotal = 0; ?> <li> <ul class="nombre_columnas"> <li id="columna_nombre">Producto<div id="navegacion_carrito"><a href="javascript:history.back(1)">Volver</a></div></li> <li> Unidades </li> <li> Precio Unitario </li> <li> Subtotal </li> </ul> </li> <?php foreach($_SESSION['carro'] as $id => $x){ $resultado = mysql_query("SELECT * FROM productos WHERE id_producto=$id"); $mifila = mysql_fetch_array($resultado); $id = $mifila['id_producto']; $producto = $mifila['nombre_producto']; //acortamos el nombre del producto a 40 caracteres $producto = substr($producto,0,36); $precio = $mifila['precio_producto']; //Coste por art�culo seg�n la cantidad elegida $coste = $precio * $x; //Coste total del carro $totalcoste = $totalcoste + $coste; //Contador del total de productos a�adidos al carro $xTotal = $xTotal + $x; ?> <li> <ul class="productos_ordenados"> <li id="nombre_producto"> <?php echo $mifila['nombre_producto'] ;?> </li> <li> <?php echo $x ;?> </li> <li> <?php echo $precio ;?> </li> <li> <?php echo $coste ;?> </li> <li id="acciones"> <a href="carrito.php?id=<?php echo $id ;?>&action=add"><img src="images/iconos/carrito/aumentar.png" style="padding:0 0 0 5px" alt="aumentar cantidad" /> </a> <a href="carrito.php?id=<?php echo $id ;?>&action=remove"><img src="images/iconos/carrito/restar.png" alt="reducir cantidad" /> </a> <a href="carrito.php?id=<?php echo $id ;?>&action=removeProd"><img src="images/iconos/carrito/eliminar.png" alt="eliminar" /> </a> </li> </ul> </li> <?php } ?> <div id="total"> <li> <ul class="productos_ordenados total"> <li id="nombre_total"> <label class="Negrita">Total:</label></li> <li></li> <li></li> <li><label class="Negrita">€ <?php echo $totalcoste ;?></li> </ul> </li> </div> <div id="totalIVA"> <li> <ul class="productos_ordenados total+IVA"> <li id="nombre_totalIVA"><label id="label_totalIVA" class="Negrita">Total+IVA:</label></li> <li></li> <li></li> <li><label id="label_importe_total" class="Negrita">€ <?php echo $totalcoste*1.18 ;?></li> </ul> </li> <a href="comprar.php"><imput type="button" value="finalizar compra"/></a> </div> <?php } else echo "<li id='vacia'>Su carro se encuentra vacío</li>" ?> </div> <!-- Cierre principal carrito --> </div> <!-- Cierro cuerpo--> </div> <!-- Cierre Text-border --> </div> <!-- Cierre contenedor carrito --> <div id="resumen"> <h4>RESUMEN:</h4> <div id="resumen_total"> <li> <ul> <li><label>Total:</label><label> <?= $totalcoste;?> € </label></li> </ul> </li> </div> <!-- Cierre RESUMEN Total --> <div id="resumen_totalIVA"> <li> <ul> <li><label>Total + IVA(18%):</label></li> <li><label id="precio_final">€ <?= $totalcoste*1.18;?></label> </li> <li><div id="btn_confirmar"><a href='contacto.php'><input type='image' src="images/iconos/carrito/btn_comprar.png" value='finalizar compra' /></a></div></li> </ul> </li> </div> <!-- Cierre RESUMEN totalIVA --> </div> <!-- Cierre Resumen --> <a id="estadoPedido" href="http://www.mrw.es/seguimiento_envios/MRW_seguimiento_envios.asp"> <img src="images/iconos/carrito/estadoPedido.png"><span>Ver estado Pedido</span> </a> </div> <!-- Cierre Main --> <?php include("estructura/pie.html"); ;?> </div> </body> </html>
Espero que me podáis ayudar de verdad. Me estoy volviendo loca y hoy es mi ultimo dia para terminar la web.
Aqui os pongo también el link por si necesitáis verla en funcionamiento: [url=www.elhombredelbigote.com][/url]
Y ya os digo, en mi servidorlocal funciona perfectamente.
Muchísimas gracias de antemano.