Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/07/2006, 02:56
Algadir
 
Fecha de Ingreso: noviembre-2005
Mensajes: 312
Antigüedad: 18 años, 5 meses
Puntos: 1
Hola Azrael:

Gracias por contestar. He probado lo que me dices y parece que manda bien los datos del formulario y los números parecen números vamos. De todas formas te paso el código del carrito en php y te mando el código de formulario aunque no creo que esto sea relevante:

Carrito (inspirado en un código que ví):

<?php

class carrito {
var $libroscomprados;
var $camisetascompradas;
var $productoscomprados;
var $gastosdeenvio;
var $importetotal;
// Arrays donde vamos almacenando los datos de los productos del carrito.
var $ids=array();
var $productos=array();
var $cantidades=array();
var $importes=array();

// Función con la que inicializamos las variables generales.

function carrito () {
$this->libroscomprados=0;
$this->camisetascompradas=0;
$this->productoscomprados=0;
$this->gastosdeenvio=3;
$this->importetotal=0;
}

// Función con la que calculamos el importe total.

function calcularImporteTotal() {
$importe=0;
//for ($clave = 0; $clave <= $this->productoscomprados; $clave++)
foreach ($this->ids as $clave => $valor) {
if ($this->ids[$clave] !=0) {
$importe += $this->importes[$clave];
}
}
$this->importetotal=$importe;
}

// Función con la que añadimos los datos del producto en el carrito de compra.

function anadirAlCarrito($id, $producto, $cantidad, $precio) {
//$pos = array_search($id, $this->ids, true);
if (in_array($id, $this->ids)) {
echo "si";
} else { echo "no"; }
/*foreach ($this->ids as $clave => $valor) {
if ($this->ids[$clave] == $id)
$pos = $clave;
}*/

/*echo "VALOR DE POS: " . $pos;

if ($pos == 0) {
$this->ids[$this->productoscomprados]=$id;
$this->productos[$this->productoscomprados]=$producto;
$this->cantidades[$this->productoscomprados]=$cantidad;
$this->importes[$this->productoscomprados]=($cantidad * $precio);
} else {
$this->cantidades[$this->pos] += $cantidad;
$this->importes[$this->pos] += ($cantidad * $precio);
}*/

//$this->importetotal += $this->importes[$this->productoscomprados];

if ($id == 'c1' || $id == 'c2' || $id == 'c3' || $id == 'c4' || $id == 'c5') {
$this->camisetascompradas++;
} else {
$this->libroscomprados++;
}

$this->productoscomprados++;

if ($this->libroscomprados >= 5) {
$this->gastosdeenvio=0;
}

$this->calcularImporteTotal();
}

// Función con la que quitamos un producto del carrito de compra.

function quitarDelCarrito($posicion) {
if ($this->ids[$posicion] == 'c1' || $this->ids[$posicion] == 'c2' || $this->ids[$posicion] == 'c3' || $this->ids[$posicion] == 'c4' || $this->ids[$posicion] == 'c5') {
$this->camisetascompradas--;
} else {
$this->libroscomprados--;
}

$this->productoscomprados--;

if ($this->libroscomprados >= 5) {
$this->gastosdeenvio=0;
}

$this->ids[$posicion]=0;
/*unset($this->productos[$posicion]);
unset($this->cantidades[$posicion]);
unset($this->importes[$posicion]);*/

$this->calcularImporteTotal();
}

// Función con la que vacíamos el carrito de compra.

function vaciarCarrito() {
foreach ($this->ids as $clave => $valor) {
$this->ids[$clave]=0;
/*unset($this->productos[$clave]);
unset($this->cantidades[$clave]);
unset($this->importes[$clave]);*/
}
$this->productoscomprados=0;
$this->camisetascompradas=0;
$this->libroscomprados=0;
$this->calcularImporteTotal();
}

// Función con la que visualizamos el carrito en cada página.

function verCarrito() {
if ($this->productoscomprados == 0) {
echo "Carrito vacío.";
} else {
echo "Libro/s: " . $this->libroscomprados . "<br>";
echo "Camiseta/s: " . $this->camisetascompradas . "<br>";
/*echo "Productos: " . $this->productoscomprados . "<br>";*/
echo "Total: " . $this->importetotal . " €";
}
}

// Función con la que visualizamos con detalle el carrito de compra para su confirmación.

function verDetalleDelCarrito(){
if ($this->productoscomprados == 0) {
echo "Carrito vacío.";
} else {
/*echo "<script language='javascript'>";
echo "function esNumero(numero) {";
echo "if (!) {";
echo "window.alert('Introduce un número entero.');";
echo "window.document.carrito.ejemplares.focus();";
echo "} else { refrescar la página. }";
echo "}</script>";*/
echo "<form name='carrito' method='post' action='pedido.php'>";
echo "<table border='0' cellpadding='1' cellspacing='5'>
<tr>
<td>&nbsp;</td>
<td>Producto:</td>
<td>Cantidad:</td>
<td>Importe:</td>
</tr>";
//for ($clave = 0; $clave <= $this->productoscomprados; $clave++) {
foreach ($this->ids as $clave => $valor) {
if ($this->ids[$clave] != 0) {
echo "<tr>";
echo "<td align='left' width='100'>" . $this->productos[$clave] . "</td>";
//echo '<td>' . $this->cantidades[$clave] . '</td>';
echo "<td align='left' width='50'><input type='text' size='5' name='ejemplares' value='" . $this->cantidades[$clave] . "'></td>";
echo "<td><input type='button' value='Actualizar' onclick='javascript:esNumero(window.document.carri to.ejemplares.value);'></td";
echo "<td>" . $this->importes[$clave] . "</td>";
echo "<td><a href='quitarlibro.php?id=$clave&url=" . $_SERVER["PHP_SELF"] . "'>Quitar</td>";
echo "</tr>";
//$this->importetotal += $this->importes[$clave];
}
}
$this->calcularImporteTotal();
echo "<tr><td colspan='3'>&nbsp;</td></tr>";
echo "<tr><td colspan='2'>Importe total:</td><td>" . $this->importetotal . "</td></tr></table>";
echo "<br><div align='right'><input type='submit' value='Confirmar pedido'></div>";
echo "</form>";
}
}
}
//inicio la sesión
session_start();
//si no esta creado el objeto carrito en la sesion, lo creo
if (!isset($_SESSION["ocarrito"])){
$_SESSION["ocarrito"] = new carrito();
}
?>

Formulario:
...
<form name="carrito" method="post" action="../../../comprar.php">
<input type="hidden" name="id" value="1"><input type="hidden" name="producto" value="Por qué se perdió la República: Memorias 1916-1939">
<input type="hidden" name="cantidad" value="1"><input type="hidden" name="precio" value="12">
<input type="hidden" name="url" value="<?php echo $_SERVER['PHP_SELF']; ?>"><a href="#" onclick="window.document.carrito.submit();" title="Añadir al carrito">Comprar</a>
</form>
...

En comprar.php hay esto básicamente:
...
$_SESSION["ocarrito"]->anadirAlCarrito($_POST["id"], $_POST["producto"], $_POST["cantidad"], $_POST["precio"]);
...

No sé si será mucho código de momento me estoy centrado en la inserción de los datos en el carrito me faltan funciones para otras cosas.

Un saludo y muchas gracias.