Bueno, hoy estuve toqueteando el script y sólamente trabajé con la id del producto y la cantidad de productos que se deseaban adquirir, de modo que el formulario quedó de esta manera:
Código HTML:
<form action="carrito.php" method="post">
<input type="hidden" name="idprod" value="<?=$idprod?>" />
<input type="text" name="cantidad" style="width: 60px; text-align: right;" /> <input name="agregar" type="submit" id="agregar" value="Agregar" />
</form>
y el script que recoge los datos quedó de esta forma, el cual también le realisé sus respectivas validaciones para que se recojan bien los datos.
Código PHP:
<?php
session_start();
if(isset($_POST['agregar'])) {
if(!is_numeric($_POST['cantidad'])) {
echo "<strong>El campo cantidad debe contener sólo números. <a href='javascript:history.back()'>Regresar</a></strong>";
}else {
session_register('itemsEnCesta');
$item = $_POST['idprod'];
$cantidad = $_POST['cantidad'];
$itemsEnCesta = $_SESSION['itemsEnCesta'];
if($item) {
if(!isset($itemsEnCesta)) {
$itemsEnCesta[$item]=$cantidad;
}else {
foreach($itemsEnCesta as $k => $v) {
if($item==$k) {
$itemsEnCesta[$k]+=$cantidad;
$encontrado=1;
}
}
if(!$encontrado) $itemsEnCesta[$item] = $cantidad;
}
}
$_SESSION['itemsEnCesta'] = $itemsEnCesta;
$redir = $_SERVER['HTTP_REFERER'];
header("Location: $redir");
}
}else {
echo "<strong>No se han procesado los datos correctamente. <a href='javascript:history.back()'>Regresar</a></strong>";
}
?>
Jugando con la ID del producto armé una tabla html que me mostrara el nombre del producto, su precio y además de obtener el precio total según la cantidad de productos solicitados, este es el script:
Código PHP:
<?php
// este archivo se llama pedidos.php y muestra los pedidos que ha ido realizando el usuario
session_start();
include('config.php');
?>
<table style="border: 1px solid #e0e0e0; width: 100%;" cellpadding="0" cellspacing="0">
<tr>
<td style="border: 1px solid #e0e0e0; text-align: center; padding: 5px; background: #f7f7f7;"><strong>Producto</strong></td>
<td style="border: 1px solid #e0e0e0; text-align: center; padding: 5px; background: #f7f7f7;"><strong>P. unidad</strong></td>
<td style="border: 1px solid #e0e0e0; text-align: center; padding: 5px; background: #f7f7f7;"><strong>Cantidad</strong></td>
<td style="border: 1px solid #e0e0e0; text-align: center; padding: 5px; background: #f7f7f7;"><strong>Sub Total</strong></td>
</tr>
<?php
if(isset($itemsEnCesta)) {
$total= "";
foreach($itemsEnCesta as $k => $v) {
$sql = mysql_query("SELECT * FROM productos WHERE idprod='".$k."'");
while($row = mysql_fetch_array($sql)) {
$nomart = $row['nomart'];
$precio = $row['precio'];
$st = $precio*$v;
$subt = number_format($st, 2, '.', ' ');
$total = $total+$st;
$tot = number_format($total, 2, '.', ' ');
?>
<tr>
<td style="text-align: left; border: 1px solid #e0e0e0; padding: 5px;"><?=$nomart?></td>
<td style="text-align: right; border: 1px solid #e0e0e0; padding: 5px;"><?=$precio?></td>
<td style="text-align: right; border: 1px solid #e0e0e0; padding: 5px;"><?=$v?></td>
<td style="text-align: right; border: 1px solid #e0e0e0; padding: 5px;"><?=$subt?></td>
</tr>
<?php
}
}
}
?>
<tr>
<td colspan="3" style="text-align: right; border: 1px solid #e0e0e0; padding: 5px;"><strong>Total:</strong></td>
<td style="text-align: right; border: 1px solid #e0e0e0; padding: 5px;"><?=$tot?></td>
</tr>
</table><br />
<?php
if(!empty($_SESSION['usuario'])) {
?>
<a href="enviarpedido.php" style="border: 1px solid #000; background: #FFCC33; padding: 8px; font-weight: bold; color: #000; text-decoration: none;">Enviar pedido</a>
<?php
}else {
?>
<div style="border: 1px solid #ff0000; color: #ff0000; padding: 5px; text-align: center;">
Para realizar la orden de pedido debe estar registrado y logueado en nuestro sistema.<br />
<a href="<?=$_SERVER['HTTP_REFERER']?>" style="color: #ff0000;"><strong>Ingresar</strong></a>
</div>
<?php
}
?>
Como se darán cuenta, mientras el usuario no esté logueado no puede realizar la orden de pedido, eso no es problema porque ya tengo el script de registro de usuarios funcionando y al loguearse el usuario le muestra el enlace para que finalise la orden de pedido, y es ahí donde está mi problema, cómo puedo hacer para guardar esos datos en mi BD en una tabla órdenes de manera tal que se guarden los productos agregados al carro y los datos del usuario que los procesó.?, ojalá me puedan echar una mano con este lío. Gracias por la ayuda.
Saludos