Foros del Web » Programando para Internet » PHP »

Problema con la actualizacion de productos en un carrito de compras

Estas en el tema de Problema con la actualizacion de productos en un carrito de compras en el foro de PHP en Foros del Web. Primero que todo Feliz Navidad a todos los foristas de esta web. De nuevo por aca, tengo este problema, ya diseñe el carrito de compras, ...
  #1 (permalink)  
Antiguo 26/12/2005, 14:31
Avatar de Watas  
Fecha de Ingreso: diciembre-2005
Ubicación: Caracas
Mensajes: 151
Antigüedad: 12 años
Puntos: 0
Problema con la actualizacion de productos en un carrito de compras

Primero que todo Feliz Navidad a todos los foristas de esta web.
De nuevo por aca, tengo este problema, ya diseñe el carrito de
compras, pero que pasa, al actualizar las cantidades del producto, este lo que hace es agregar otra linea al listado del carrito, pero este solo agrega el cuadro te texto con la cantidad introducida, sin mostrar la descripcion del mismo, ademas muestra el producto, al que yo quiero actualizar, con la misma cantidad.
Lo que se desea hacer es lo siguiente que al actualizar x producto en la caja de texto, no se agregue ninguna linea, y que muestre el numero introducido.
aca esta el codigo:
Código PHP:
 <?php 
  $color
=array("#ffffff","#F0F0F0"); 
  
$contador=0
  
$suma=0
   foreach(
$carro as $k => $v){ 

   
$total=$v['cantidad']*$v['Precio']; 
   
$suma=$suma+$total
   
$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 width="1" align="center"></td> 
      <td width="60" align="center">
       <input name="cantidad" style="text-align:right" type="text" id="cantidad" value="<?php echo $v['cantidad'?>" size="8"> 
        </td>  
        <td align="center">  
        <input name="imageField" type="image" src="actualizar.gif" width="20" height="20" border="0"></td> 
             <td align="center">
      <a href="borracar.php?<?php echo SID ?>&id=<?php echo $row['Id']; ?><?php echo $v['Id'?>"><img src="trash.gif" width="12" height="14" border="0" title="Eliminar del Carrito"></a>
Un gran Saludo
  #2 (permalink)  
Antiguo 26/12/2005, 14:52
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Lo que sucede es que el código, tal como lo estás tomando, está bastante incompleto, es sólo un fragmento extraído de este artículo, que fue escrito más para mostrar su funcionamiento que para una aplicación práctica:
http://www.programacionweb.net/artic...iculo/?num=329
Si colocás todo el código podría ayudarte mejor.
Saludos.
  #3 (permalink)  
Antiguo 26/12/2005, 16:51
Avatar de Watas  
Fecha de Ingreso: diciembre-2005
Ubicación: Caracas
Mensajes: 151
Antigüedad: 12 años
Puntos: 0
exacto, es ese mismo, el que estoy colocando aca es un trozo del vercarrito.php, claro le hice las mods, pero en si es lo mismo.
  #4 (permalink)  
Antiguo 26/12/2005, 17:20
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Si ponés el código completo con las modificaciones, te podré ayudar bastante, ya que, yo soy quien escribió el artículo.
Saludos.
  #5 (permalink)  
Antiguo 26/12/2005, 18:15
Avatar de Watas  
Fecha de Ingreso: diciembre-2005
Ubicación: Caracas
Mensajes: 151
Antigüedad: 12 años
Puntos: 0
Código PHP:
<?php  
session_start
(); 
//Iniciamos o retomamos la sesión 
$carro=$_SESSION['carro']; 
//La asignamos a la variable $carro 
?>
<?php  
if($carro){ 
//si el carro no está vacío, mostramos los productos 
?> 
<table width="800" border="0"  bgcolor="#FFFFFF" cellspacing="1" cellpadding="0" align="center"> 
  <tr bgcolor="#333333" class="tit">  
    <td colspan="2" align="center">Cantidades</td>
    <td width="100" align="center">Actualizar</td>
    <td width="115" align="center">Eliminar</td>  
    <td width="100" align="center">Artista</td> 
    <td width="100" align="center">Titulo</td> 
    <td width="100" align="center">Precio</td> 
  </tr> 
  <?php 
  $color
=array("#FFFFFF","#F0F0F0"); 
  
$contador=0
  
//las 2 líneas anteriores sirven 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 
   
$total=$v['cantidad']*$v['Precio']; 
   
$suma=$suma+$total
   
$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 width="20" align="center"><?php echo $v['cantidad'?></td>
      <td width="13" align="center">       
       <input name="cantidad" style="text-align:right" type="text" id="cantidad" value="<?php echo $v['cantidad'?>" size="2"> 
       <input name="id" type="hidden" id="id" value="<?php echo $v['id'?>">  </td>  
        <td align="center">  
        <input name="imageField" type="image" src="actualizar.gif" width="20" height="20" border="0"></td> 
             <td align="center">
      <a href="borracar.php?<?php echo SID ?>&id=<?php echo $row['Id']; ?><?php echo $v['Id'?>"><img src="trash.gif" width="12" height="14" border="0" title="Eliminar del Carrito"></a>

      <td><?php echo $v['Artista'?></td> 
      <td><?php echo $v['Titulo'?></td> 
      <td><?php echo $v['Precio'?></td> 
     </td> 
     
  </tr></form> 
  <?php  
  
//por cada item creamos un formulario que submite a agregar producto y un link que permite eliminarlos 
  
}?> 
 </table>
 <table width="800" border="0"  bgcolor="#FFFFFF" cellspacing="0" cellpadding="0" align="center"> 
  <tr bgcolor="#333333" class="tit">  
    <td width="50"></td> 
    <td width="50"></td> 
    <td width="50"></td> 
    <td colspan="2" align="center"></td> 
    <td width="100" align="center"></td> 
    <td width="159" align="center"></td> 
  </tr> 
 </table>
 <table  align="center" width="800" border="0" bgcolor="#FFFFFF">
<tr bgcolor="#FFFFFF">
<div align="left"><span class="prod2">Total de Artículos: <?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 
//función count o con sizeof 
?></span>  
<div align="right"><span class="prod2">Total: Bs.<?php echo number_format($suma,2); 
//mostramos el total de la variable $suma formateándola a 2 decimales 
 
?></span>  
</div> </div>
</br>

<div align="right"><span class="prod2">Agregar más Artículos</span>  
  <a href="buscar.html<?php echo SID;?>"><img src="continuar.gif" width="13" height="13" border="0"></a>  
</div> 

<?php }else{ ?> 
<p align="center"> <span class="prod2">No hay Artículos en su Carrito</span> <a href="buscar.html<?php echo SID;?>"><img src="continuar.gif" width="13" height="13" border="0"></a>  
  <?php }?>
  #6 (permalink)  
Antiguo 26/12/2005, 18:17
Avatar de Watas  
Fecha de Ingreso: diciembre-2005
Ubicación: Caracas
Mensajes: 151
Antigüedad: 12 años
Puntos: 0
pues te felicito de antemano, porque he buscado y buscado y este es el unico en dnd he podido entender mas o menos esto de php, las mods que le hice fueron obviar el catalogo, y utilizar parte de ese codigo para un buscador, cosa que me lo agregue de una al carrtio desde un buscador.
  #7 (permalink)  
Antiguo 26/12/2005, 18:59
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Ok. Bueno, ahora, por favor el código de agregacar.php y borracar.php, que son la clave del funcionamiento.
  #8 (permalink)  
Antiguo 26/12/2005, 19:43
Avatar de Watas  
Fecha de Ingreso: diciembre-2005
Ubicación: Caracas
Mensajes: 151
Antigüedad: 12 años
Puntos: 0
Código PHP:
<?php  
session_start
();  
//con session_start() creamos la sesión si no existe o la retomamos si ya ha sido creada  
extract($_REQUEST);  
//la función extract toma las claves de una matriz asoiativa y las convierte en nombres de variable,  
//asignándoles a esas variables valores iguales a los que tenía asociados en la matriz. Es decir, convierte a $_GET['id'] en $id,  
//sin que tengamos que tomarnos el trabajo de escribir $id=$_GET['ID'];  
mysql_connect("localhost","user","pass");  
mysql_select_db("db");  
//incluímos la conexión a nuestra base de datos  
if(!$cantidad){$cantidad=1;}  
//Como también 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 Inventario where Id='".$id."'");  
$row=mysql_fetch_array($qry);  
//Si ya hemos introducido algún 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  
$carro=$_SESSION['carro'];  
//Ahora introducimos el nuevo producto en la matriz $carro, utilizando como índice el id del producto  
//en cuestión, encriptado con md5. Utilizamos md5 porque genera un valor alfanumérico que luego,  
//cuando busquemos un producto en particular dentro de la matriz, no podrá ser confundido con la posición  
//que ocupa dentro de dicha matriz, como podría ocurrir si fuera sólo numérico.  
//Cabe aclarar que si el producto ya había sido agregado antes, los nuevos valores que le asignemos reemplazarán  
//a los viejos.  
//Al mismo tiempo, y no porque sea estrictamente necesario sino a modo de ejemplo, guardamos más de un valor  
//en la variable $carro, valiéndonos de nuevo de la herramienta array.  
$carro[md5($id)]=array('identificador'=>md5($id),'cantidad'=>$cantidad,'Artista'=>$row['Artista'],'Titulo'=>$row['Titulo'],'Precio'=>$row['Precio'],'Id'=>$id);  
//Ahora dentro de la sesión ($_SESSION['carro']) tenemos sólo los valores que teníamos (si es que teníamos alguno) antes de ingresar  
//a esta página y en la variable $carro tenemos esos mismos valores más el que acabamos de sumar. De manera que  
//tenemos que actualizar (reemplazar) la variable de sesión por la variable $carro.  
$_SESSION['carro']=$carro;  
//Y volvemos a nuestro catálogo de artículos. La cadena SID representa al identificador de la sesión, que, dependiendo  
//de la configuración 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:vercarrito.php?".SID);  
?>
Código PHP:
<?php  
session_start
();  
//con session_start() creamos la sesión 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 sessión  
unset($carro[md5($id)]);  
//la función unset borra el elemento de un array que le pasemos por parámetro. En este  
//caso la usamos para borrar el elemento cuyo id le pasemos a la página por la url  
$_SESSION['carro']=$carro;  
//Finalmente, actualizamos la sessión, como hicimos cuando agregamos un producto y volvemos al catálogo  
header("Location:vercarrito.php?".SID);  
?>
  #9 (permalink)  
Antiguo 26/12/2005, 19:59
Avatar de Panino5001
Moderatroll
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.062
Antigüedad: 13 años, 6 meses
Puntos: 775
Sólo veo un par de cosas:
En vercarrito.php, en la línea de borrar, sobra el $row['id'], ya que no hay consulta a db y en algunos casos colocás el $v['id'] (en minúscula) y en otros en mayúscula: hay que colocarlo como lo ponés en agregacar y en borracar.
Otra cosa: no hay ningún lugar en el que agregues el producto al carro, imagino que lo hacés desde el buscador, pero el buscador es html, no es php, por la extensión que le estás poniendo. Habría que ver ese archivo, y ver de qué manera estás guardando los artículos en el carro. Lo otro aparentemente está bien, salvo lo del $row['id'] y lo de las mayúsculas y minúsculas.
Corregí eso y probalo. Si no funciona, colocá el código que usás para agregar los productos al carro (el archivo con el que reemplazaste al catálogo del artículo de programacionweb.net)
  #10 (permalink)  
Antiguo 26/12/2005, 20:18
Avatar de Watas  
Fecha de Ingreso: diciembre-2005
Ubicación: Caracas
Mensajes: 151
Antigüedad: 12 años
Puntos: 0
Listo, santo remedio, tenia dias con eso, tratando de ver dnd estaba el problema y no lo veia, Gracias de verdad que si.
Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:05.