Ver Mensaje Individual
  #8 (permalink)  
Antiguo 07/03/2018, 06:36
Avatar de mortiprogramador
mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: implementar carrito de compras, borrar linea de pedido

Hola rafret, no es nada.

En cuanto a tu solicitud, ya que por tu cuenta intentaste
realizar la tarea, corresponderé a tu esfuerzo mostrandote
a lo que me refería con cada punto, así que vamos a ello.

Cita:
Iniciado por mortiprogramador Ver Mensaje
1. En el index haces dos consultas a la base de datos,
cuando puedes hacer solo una
agregando el query de images como una subconsulta a la consulta principal
(además ambos querys traen todos los datos resultantes de las filas,
cuando solo se necesitan algunos campos solamente, es decir, el * es mejor evitarlo)

(este punto aplica para index.php y productos.php)
Código PHP:
Ver original
  1. $peticion="SELECT p.id, p.descripcion, p.nombre_productos,
  2. p.precio, (SELECT imagen FROM images WHERE id_producto= p.id LIMIT 1) imagen
  3. FROM productos p";

Cita:
Iniciado por mortiprogramador Ver Mensaje
2. Como consecuencia del primer punto, te ahorras el segundo while

Código PHP:
Ver original
  1. echo"<p><strong>Precio: s/ ".$fila["precio"]."</strong><br /></p>";
  2. echo "<img src='images/".$fila["imagen"].".jpg' width=100% /><br />";

Cita:
Iniciado por mortiprogramador Ver Mensaje
3. En la página de poncarrito.php tienes que enviar el id del producto en el link de eliminar
de cada fila, en caso contrario, al llegar a la página de quitarProducto.php no podrá
realizar la eliminación puesto que no tiene un id al cual buscar para borrar
(Es decir, hacer algo similar a lo que ya tienes en productos.php en la parte de 'Mas información')
Ya lo hiciste, genial!

Y ahora viene la parte extensa

Cita:
Iniciado por mortiprogramador Ver Mensaje
Puedes dejar de usar la variable de sesión contador
Esto a su vez elimina la necesidad de realizar sumas y restas sobre la variable de sesión contador que se iría

Esto implicaría que simplemente se manejaría la segunda
posición de la variable de sesión productos en vacío (es decir, solo los []) a la hora de
asignar el id del producto que llega

Código PHP:
Ver original
  1. if(isset($_GET["p"]))
  2.     $_SESSION['producto'][] = $_GET['p'];


Cita:
Iniciado por mortiprogramador Ver Mensaje
Solo con la variable de sesión
de productos es suficiente para saber cuantos productos hay
(es decir, se haría un count o un sizeof de la variable de sesión productos)
Código PHP:
Ver original
  1. $contador = sizeof($_SESSION['producto']);
  2.  
  3. for($i = 0; $i < $contador; $i++)


Cita:
Iniciado por mortiprogramador Ver Mensaje
Obviamente, esto hace necesario entonces buscar en el arreglo de sesión producto
el id del producto a eliminar para quitar la posición
Código PHP:
Ver original
  1. $conexion = mysqli_connect("localhost","root","","carritocompras");
  2. mysqli_set_charset($conexion,"utf8");
  3. // esto borrará el producto como tal de la tabla, así que si no necesitas eso por ahora, dejalo en comentario o quitalo
  4. $peticion = 'DELETE FROM productos WHERE id= '.$_GET["prod"];
  5. $resultado = mysqli_query($conexion,$peticion);
  6.  
  7. $existe = array_search($_GET['prod'], $_SESSION['producto']);
  8.  
  9. if($existe)
  10. {
  11.     unset($_SESSION['producto'][$existe]);
  12.     $_SESSION['producto'] = array_values($_SESSION['producto']);
  13. }

Y finalmente, lo que hiciste de borrar es correcto a nivel visual,
pero como bien dices, cuando se recarga vuelve a pintar todo,
eso es porque no has eliminado los ids de productos correspondientes
en la variable de sesión, pero ya va solventado en esta explicación,
así que prueba todo y comentas.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 09/03/2018 a las 07:09