hola a todos.
Ya casi no tengo tiempo para pedir ayuda, aun asi me quedan unas horas para ver si arreglo este problema (tengo mas, pero este no se como solucionarlo).
Sigo con el problema con ajax, jquery y php, disque realoiza la consulta de base de datos que corresponde pero no hace nada, o si hace, despues no veo los cambios en una capa con un iframe (que simula los plugins de ese tipo pero hecho por mi) en el que muestro el carrito de compras y donde deberia de ver el articulo recien agregado.
aqui les dejo el codigo jquery y php
Código Javascript
:
Ver originalfunction Comprar(i)
{
var cantidad=$("#cantidad"+i).val()
var ar_id=$("#ar_id"+i).val()
var dataString = 'ar_id='+ $("#cantidad"+i).val() + '&cantidad=' + $("#cantidad"+i).val() ;
//alert (dataString);return false;
$.ajax({
type: "POST",
url: "agregaracarrito.php",
data: dataString,
success: function(data) {
//$('#contact_form').html("<div id='message'></div>");
//$('#message').html("<h2>Contact Form Submitted!</h2>")
$('.midiv').html('<div style="float:right;"><input class="botonclass" id="iframecerrar" name="iframecerrar" onclick="ocultar()" type="button" value="Cerrar"/></div>'+data)
.append('<div style="clear:both;"><input class="botonclass" id="iframecerrar1" name="iframecerrar1" onclick="ocultar()" type="button" value="Continuar"/></div>')
.hide()
.fadeIn(1500, function() {
});
}
});
$('.midiv').fadeOut(100);
//mostrar();
}
});
Esta es una parte de la funcion que genera la lista de articulos, donde cada articulo tiene su campo cantidad y boton comprar (boton que llama a la funcion de arriba para realizar mediante ajax, el registro del articulo ya sea en variable de sesion o en la tabla carrito (asociada al id del cliente).
Código PHP:
Ver original$html.='<tr>
<td bgcolor="#d91603"><input class="botondown2" type="button" name="btnquitar" onclick="QuitarCant('.$i.')" id="btnquitar" /><!--<a class="button" id="btnagregar" href="#"><span>Quitar</span></a>--></td>
<td bgcolor="#d91603"><input class="botonup2" type="button" name="btnagregar" onclick="AgregarCant('.$i.')" id="btnagregar" /><!--<a class="button" id="btnquitar" href="#"><span>Agregar</span></a>--></td>
</tr>
<tr>
<form name="listaarticulos" id="listaarticulos" action="agregaracarrito.php" method="post">
<td bgcolor="#d91603"><input class="botonshoping2" type="button" value="" onclick="Comprar('.$i.')" /></td>
<td bgcolor="#d91603"><label for="cantidad"></label><input style="width:30px;" id="cantidad'.$i.'" name="cantidad" type="text" value="1" maxlength="3" onkeypress="return solonumeros(event)" onblur="ValidaCant('.$i.')"/><input type="hidden" name="ar_id" id="ar_id" value="'.$row["ar_id"].'"/></td>
</tr></form>
';
Este es el codigo del archivo agregaracarrito.php
Código PHP:
Ver original$cantidad=isset($_POST["cantidad"])?
$_POST["cantidad"]:0; $ar_id=isset($_POST["ar_id"])?
$_POST["ar_id"]:0; $logeado=isset($_SESSION["Nombre"])?
$_SESSION["Nombre"]:""; echo $ar_id;
$_oArticulo = new Articulos();
$Q=$_oArticulo->MostrarArticulos(8,0,'',$ar_id);
{
//EL CODIGO COMENTADO SIRVE PARA LA PARTE DONDE SE MUESTRA EL CONTENIDO DEL CARRITO, LA OPCION 9 DEVUELVE EL PRECIO DEL ARTICULO CORRESPONDIENTE A LA CANTIDAD ESPECIFICADA
if($logeado=="")
{
//unset($_SESSION['carrito']);
$cantpag=$row['ar_cantpag']/100*$row['ar_cantreal'];
echo "Agregar a sesion carrito";
if(isset($_SESSION['carrito'])) if(!isset($_SESSION['carrito'][$ar_id])) {
if($cantpag>=$cantidad)
$_SESSION['carrito'][$ar_id]= array('cantidad' => $cantidad,'ar_id' => $ar_id); else
echo "<p>La cantidad a comprar es mayor que la cantidad en stock</p>";
}
else
{
//$row=mysql_fetch_array($Q);
$cant=$_SESSION['carrito'][$ar_id]['cantidad']+$cantidad;
if($cantpag>=$cant)
{
$_SESSION['carrito'][$ar_id]['cantidad']+=$cantidad;
}
else
echo "<p>La cantidad a comprar es mayor que la cantidad en stock</p>";
}
else
{
echo "cantpag=> ".$cantpag;
if($cantpag>=$cantidad)
{
$_SESSION['carrito'][$ar_id]= array('cantidad' => $cantidad,'ar_id' => $ar_id); }
else
echo "<p>La cantidad a comprar es mayor que la cantidad en stock</p>";
}
if(isset($_SESSION['carrito'])) foreach ($_SESSION['carrito'] as $carrito)
{
echo "cantidad => ". $carrito['cantidad'] . " id => ".$carrito['ar_id']."<br/>";
}
}
else
{
$_oCarrito=new Carrito();
If(isset($_SESSION['carrito'])) {
echo "Agregar a tabla carrito los artículos de sesión carrito + artículo recién comprado";
foreach ($_SESSION['carrito'] as $carrito)
{
//$Q=$_oCarrito->DevuelveIdArticulo($_COOKIE['Carrito'],$carrito['ar_id'])
$_oCarrito->Agregar($_SESSION["CR_id"],$carrito['ar_id'],$carrito['cantidad']);
//$_OCarrito->Agregar($cr_id
//echo $carrito['cantidad'] . $carrito['ar_id']."<br/>";
}
unset($_SESSION['carrito']); $_oCarrito->Agregar($_SESSION["CR_id"],$ar_id,$cantidad);
}
else
{
$cantpag=$row['ar_cantpag']/100*$row['ar_cantreal'];
$Q1=$_oCarrito->DevuelveCantidadArticulo($_SESSION["CR_id"],$ar_id);
$cant=$row1["dc_cant"]+$cantidad;
if($cantpag>=$cant)
{
echo "CR_ID=> ".$_SESSION["CR_id"];
$_oCarrito->Agregar($_SESSION["CR_id"],$ar_id,$cantidad);
echo "Agregar artículo recién comprado a tabla carrito";
}
else
echo "<p>La cantidad a comprar es mayor que la cantidad en stock</p>";
}
}
}
else
echo "<p>El artículo no existe</p>";
Gracias a todos y por favor, si no piensan ayudarme, con todo respeto pero, mejor no comenten, y de una vez les digo que intente poner poco codigo aunque el de agregarcarrito.php si quice ponerlo todo pues es el que realiza el insert del articulo o agrega a la variable de sesion a partir de la llamada desde ajax.
Espero le entiendan a mi codigo y, en caso de que puedan ayudarme, no tenga que hacer cambios grandes al codigo pues como dije, me queda muy poco tiempo para entregar la pagina y aun tiene varios detalles.