Hola yo sigo de pregunton tengo una lista de poductos con un icono de + si es que se quiere agregar y con un icono de - si es que se quiere quitar bueno cada imagen me manda a una pagina php que va agrendo dichos productos a un carrito y a hotra para quitar el producto bueno cada que doy click por ejemplo a agregar + me manda a la pagina para agregar y me retorna a la misma para seguir a gregando o quitando productos pero en ese ttranscurso de agregar o quitar se actualiza la pagina y para agilizar las cosas quiero que solo se actualice el icono de + y - no que recargue toda la pagina este es el codigo de los productos con las imagenes
Código HTML:
<table width="378" border="0"><?php while($row=mysql_fetch_array($qry))
{ ?>
<tr>
<td width="259"><?php echo $row['descripcion'] ?><br>
$<?php echo $row['precio_men'];?></td>
<td width="109"> <?php
if(!$carro || !isset($carro[md5($row['clave'])]['identificador']) || $carro[md5($row['clave'])]['identificador']!=md5($row['clave'])){
//si el producto no ha sido agregado, mostramos la imagen de no agregado, linkeada
// a nuestra página de agregar producto y transmitíéndole a dicha
//página el id del artículo y el identificador de la sesión
?><a href="agregacar.php?<?php echo SID ?>&id=<?php echo $row['clave']; ?>&accion=agregar"><img src="../images/agregar.jpg"></a>
<div id="menu">
<p>
<div id="detalles"><a id="enlace1" href="pagina1.php?cod=1&<?php echo SID ?>&id=<?php echo $row['clave']; ?>">Aries</a></div></p></div>
<?php }
else
//en caso contrario mostramos la otra imagen linkeada., a la página que sirve para borrar el artículo del carro.
{?><a href="agregacar.php?<?php echo SID ?>&id=<?php echo $row['clave']; ?>&li=<?php echo 1 ?>&accion=quitar" >
<img src="../images/quitar.png"> </a>
<?php } ?>
</td>
</tr><?php } ?>
</table>
Este es el codigo php de agregar y quitar
Código PHP:
<?php
session_start();
//error_reporting(E_ALL);
//@ini_set('display_errors', '1');
//con session_start() creamos la sesión si no existe o la retomamos si ya ha sido creada
if($acc="agregar"){
extract($_REQUEST);
//la función extract toma las claves de una matriz asociativa 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'];
include('conex.php');
//incluímos la conexión a nuestra base de datos
$precio=$_POST['predit'];
if(!isset($cantidad)){$cantidad=1;}
$valor=0;
if($precio==""){
$precio=$_COOKIE['precio'];
}
//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 productos where clave='".$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, previa comprobación con isset de que $_SESSION['carro']
//ya haya sido definida
$temp = $cantidad;
$uesp = $row['uesp'];
$umay =$row['umay'];
$presp=$row['precio_esp'];
$premay=$row['precio_may'];
$premen=$row['precio_men'];
$pcliente=$precio;
$tipo="";
switch($pcliente){
case 0:
$valor=0;
break;
case 1:
if (($uesp>0)and($temp>=$uesp)){
//{Aplica para precio especial}
$valor= $presp;
$tipo="Especial";
}else if (($umay>0)and($temp>=$umay)){
//{Aplica para precio mayoreo}
$valor=$premay;
$tipo="Mayoreo";
}else {
$valor= $premen;
$tipo="Menudeo";
}
break;
case 2:
if (($uesp>0)and($temp>=$uesp)){
//{Aplica para precio especial}
$valor=$presp;
$tipo="Especial";
}else {
$valor=$premay;
$tipo="Mayoreo";
}
break;
case 3:
$tipo="Especial";
break;
break;
case 5:
$valor=$premen;
$tipo="Menudeo";
break;
case 6:
$valor=$premay;
$tipo="Mayoreo";
break;
case 7:
$valor=$presp;
$tipo="Especial";
break;
case 8:
$valor=0;
$tipo="Otro";
break;
}
//$tprecio = 1 //1:menudeo, 2:mayoreo, 3:especial
if(isset($_SESSION['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,'producto'=>$row['descripcion'],'precio'=>$valor,'id'=>$id,
'tipo_precio'=>$tipo);
//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:ctalogo.php?".SID);
}else if($acc=="quitar"){
$lin=$_GET['li'];
session_start();
//error_reporting(E_ALL);
//@ini_set('display_errors', '1');
//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:catalogo.php?".SID);
}
?>