Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/08/2012, 13:24
robe92
 
Fecha de Ingreso: agosto-2012
Mensajes: 6
Antigüedad: 12 años, 3 meses
Puntos: 0
Sonrisa Problema carrito compra

Hola buenas. Estoy desarrollando un carrito de la compra para una web mediante PHP y una base de datos en SQL ORACLE. Os cuento como lo he hecho:

En la pagina de los productos, se selecciona el que se desea añadir al carrito. Ese botón lleva hasta una pagina previa que indica el producto escogido y pide una cantidad para añadir al carro. Al aceptar, lo siguiente es una vista del carrito con un enlace para ir a los productos y seguir añadiendo de igual forma.

Cuando estan todos los productos deseados en el carrito, aceptamos y se desarrollan las siguientes funciones:

1. Se crea un nuevo pedido en la tabla Pedido de la bd, donde se introducen datos tales como el usuario logueado, la fecha, etc.

2. Se selecciona el ultimo pedido creado en la tabla, el cual es el pedido del usuario logueado actualmente y que esta comprando.

3. Se consulta todo de articulo para sacar la cantidad, mediante la id del articulo y en el mismo bucle, se inserta cada articulo en la tabla lineas de pedido.


Entonces, tengo el siguiente problema. Cuando selecciono varios productos en el carrito y acepto la compra, se crea el pedido, pero me tira tal error:

SQLSTATE[HY000]: General error: 1722 OCIStmtExecute: ORA-01722: invalid number (ext\pdo_oci\oci_statement.c:148)

Resulta que el pedido nuevo lo crea, pero no es capaz de asociar a cada linea de pedido dicho pedido. No entiendo el error a que puede deberse y me inquieta lo de invalid number, ojala podais ayudarme con esto.

Adjunto el codigo de la pagina donde estan las funciones enumeradas:

Código:
<?php
session_start();
require 'gestionBD.php';
$conexion = conectar();


/////////// INSERTA NUEVO PEDIDO ////////////

$FechaActual=date("d\\/n\\/Y");
echo "Precio total del pedido entero: ".$_SESSION['precioTotal'];

function insertaPedido($FechaActual,$total,$persona,$conexion) {
        try {
                $stmt = $conexion -> prepare("INSERT INTO PEDIDO VALUES(SEQPED.NextVal, :FechaActual,:total, :persona)");
                $stmt->bindParam(':FechaActual', $FechaActual);
                $stmt->bindParam(':total', $total);
                $stmt->bindParam(':persona', $persona);
                
                $stmt -> execute();
                return TRUE;
				
         
        } catch(PDOException $e ) {
		// tratamiento del error
		echo "error: ".$e->GetMessage();
		//header("location: errorRegistro.php");
		return FALSE;
		}
}


if(insertaPedido($FechaActual,$_SESSION['precioTotal'],$_SESSION['usuarioLogueado'],$conexion)){
	echo "<br>Se ha insertado correctamente el pedido!!!";
}


		

/////////// SACA ULTIMO PEDIDO REALIZADO ////////////
 
 
function sacarMaxPed($Usuario, $conexion){
 $stmt1 = $conexion->prepare("SELECT MAX(ID_PED) AS MAXPED FROM PEDIDO WHERE COD_PER = :usuario");
 $stmt1->bindParam(':usuario', $Usuario);
 $stmt1->execute();
 

 $MAXPED=0;
 
 while($reg1 = $stmt1->fetch()){
 echo "<br>Parametro 2: ". $Usuario;
   var_dump($reg1);
   //$MAXPED = $reg1['MAXPED'];
   $_SESSION['MXPD']=$reg1['MAXPED'];
   echo "<hr>";
  // echo "<br>MAXPED: ". $MAXPED;
  echo "<br>MAXPED SSS: ". $_SESSION['MXPD'];
   echo "<br>";
   $reg1 = $stmt1->fetch();
 }

}


 echo sacarMaxPed($_SESSION['usuarioLogueado'],$conexion);
 
//////////////////////////////////////////////////////



$mx=$_SESSION['MXPD'];


/////////// INSERTA NUEVA LINEA_PEDIDO ////////////

//function sacarArticulo ($cantidad,$subtotal,$regart,$conexion){
function sacarArticulo ($cantidad,$subt,$regart,$mx,$conexion){
	$registros3 = $conexion->prepare("select * from ARTICULO");
	$registros3->execute();
	
	while($reg3 = $registros3->fetch()){
	echo "<br>variableeee: ".$_SESSION["Art".$reg3['ID_ART']];
 		if(isset($_SESSION["Art".$reg3['ID_ART']])){    
			$cantidad = $_SESSION["Art".$reg3['ID_ART']];
			$precio = $reg3['PRECIO'];
			
			
			$descuento=($reg3['PRECIO']*$reg3['DESCUENTO'])/100;
			$precioSubtotal=$reg3['PRECIO']-$descuento;	
			
			$subtotal = $precioSubtotal * $cantidad;
			echo "precio articulo: ".$precioSubtotal;
			echo "cantidad articulo: ".$cantidad;
			echo "sub: ".$subtotal;
			$regart = $reg3['ID_ART'];
			echo "<br>id articulooooooooooo: ".$regart;	
			
			$registros4 = $conexion->prepare("insert into LINEAS_PEDIDO values(:cantidad, :subtotal, :regart, :mx)");
			
				$registros4->bindParam(':subtotal', $subt);
				$registros4->bindParam(':regart', $regart);
				$registros4->bindParam(':cantidad', $cantidad);
				$registros4->bindParam(':mx', $mx);
			$registros4->execute();
		
		}
	}
}
//echo sacarArticulo($cantidad,$subtotal,$regart,$conexion);
echo sacarArticulo($cantidad,$subtotal,$regart,$mx,$conexion);
?>
<a href="index.php">volver a inicio</a>
<?

session_destroy();
?>

PD: Si necesitan algo más de información, por favor les ruego me lo comuniquen que se la proporcionaré.

Muchas gracias.