Esto esta bien ??? SOLUCIONADO!

Iniciado por nobo, 12 Febrero 2012, 23:28 PM

0 Miembros y 2 Visitantes están viendo este tema.

nobo

Ahi va !

Código (php) [Seleccionar]
$tallas = comprobartalla($_GET['recordID']);
if ($tallas == 0) {$carrito = comprobarcarrito($_GET['recordID']);
if ($carrito !=0) {$insertSQL = sprintf("UPDATE tblcarrito SET intCantidad = intCantidad + %s WHERE intContador = %s",$_GET['intCantidad'],
  $carrito);}
  else {$insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad) VALUES (%s, %s, %s)",
                      GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
  GetSQLValueString($_GET['recordID'], "int"),
  GetSQLValueString($_GET['intCantidad'], "int"));}
  }


Pongo las funciones:


Código (php) [Seleccionar]
function comprobartalla($idproducto)
{
global $database_conexionzulo, $conexionzulo;
mysql_select_db($database_conexionzulo, $conexionzulo);
$query_ConsultaFuncion = sprintf("SELECT * FROM tblproductotalla WHERE relProducto=%s", $idproducto);
$ConsultaFuncion = mysql_query($query_ConsultaFuncion, $conexionzulo) or die(mysql_error());
$row_ConsultaFuncion = mysql_fetch_assoc($ConsultaFuncion);
$totalRows_ConsultaFuncion = mysql_num_rows($ConsultaFuncion);
if ($totalRows_ConsultaFuncion == 0)
return 0;
else return 1;
mysql_free_result($ConsultaFuncion);
}

// +++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++

function comprobarcarrito($idproducto)
{
global $database_conexionzulo, $conexionzulo;
mysql_select_db($database_conexionzulo, $conexionzulo);
$query_ConsultaFuncion = sprintf("SELECT * FROM tblcarrito WHERE idUsuario = %s AND idProducto=%s AND intTransaccionEfectuada = 0", $_SESSION['MM_IdUsuario'],$idproducto);
$ConsultaFuncion = mysql_query($query_ConsultaFuncion, $conexionzulo) or die(mysql_error());
$row_ConsultaFuncion = mysql_fetch_assoc($ConsultaFuncion);
$totalRows_ConsultaFuncion = mysql_num_rows($ConsultaFuncion);
if ($totalRows_ConsultaFuncion >0)
return $row_ConsultaFuncion['intContador'];
else
return 0;
mysql_free_result($ConsultaFuncion);
}



Lo solucione con un elseif:

Código (php) [Seleccionar]
if ($tallas == 0 && $carrito!=0){$insertSQL = sprintf("UPDATE tblcarrito SET intCantidad = intCantidad + %s WHERE intContador = %s",$_GET['intCantidad'],
  $carrito);}
  elseif ($tallas == 0 && $carrito == 0) {$insertSQL = sprintf("INSERT INTO tblcarrito (idUsuario, idProducto, intCantidad) VALUES (%s, %s, %s)",
                      GetSQLValueString($_SESSION['MM_IdUsuario'], "int"),
                      GetSQLValueString($_GET['recordID'], "int"),
                      GetSQLValueString($_GET['intCantidad'], "int"));}


No se si es la manera adecuada o que... Pero bueno.. Si hay otra espero que me la hagan saber :D

Gracias a todos los que me ayudaron ! Y a los que no.... TAMBIEN !! jajaja

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

nobo

Pues que si esta bien... Porque no me esta funcionando :S

Si hay algun error, esa es la pregunta. Porque no me esta funcionando...

Shell Root

1. No esta funcionando qué!
2. Muestra algún error, cual?
3. No somos adivinos :D
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

WHK

Como dice shellroot debes decir porque no funciona, sale algun mensaje o se queda en blanco o que?

or die(mysql_error());
Eso jamas jamas jamas se hace o si no le estarás revelando a un atacante la información sobre nombre de tablas, columnas, querys, etc, además tu código tiene inyección sql.

La función mysql_error() solo lo utiliza el desarrollador para ver que pasa en ciertas sircunstancias pero jamas se debe dejar a la vista de los demás, para eso existe mysql_error_num() y según el número tu sistema debería reaccionar y decir if(num == 2) echo 'error en tal cosa.' Pero nunca reveles tablas, columnas ni datos.

nobo

Perfecto !! Si me interesa.. Pero... Todavia no empece con el tema seguridad ya que la pagina esta en desarrollo en cuanto haya que ponerla a funcionar... Pedire consejos de seguridad :D

Pues la cosa es que no da ningun error jajajaja Ese es el problema si no sabria por donde tirar mas o menos o lo postearia.. Pero es que no da ningun error !!!

Simplemente hace lo mismo que antes.. Me añade el producto al carrito pero no lo suma...

Lo que se supone que tiene que hacer eso es mirar si tiene talla y si esta en el carrito. Si esta en el carrito hacer un update para sumarlo.

Asi que ... Es como si no estubiese funcionando :S Pero sin ningun error ni nada..

Gracias a los dos !

nobo

#6
Echo de esta consulta que es de la funcion comprobartalla:

$query_ConsultaFuncion = sprintf("SELECT * FROM tblproductotalla WHERE relProducto=%s", $idproducto);

SELECT * FROM tblproductotalla WHERE relProducto=2

Echo de la consulta de la funcion comprobarcarrito:

SELECT * FROM tblcarrito WHERE idUsuario = 1 AND idProducto=2 AND intTransaccionEfectuada = 0

Echo de $tallas:

0 (cuando no hay tallas)

1 (cuando hay tallas)

Echo $carrito:
88 (cuando esta en el carrito intContador)

0 (cuando no esta en el carrito) ....

He ido probando con el if y si me imprimia un echo por ejemplo cuando $tallas == 0 && $carrito !=0 ... He intentado hacer el UPDATE con esa comparacion y no me lo hace... Lo he intentado asi: $insertSQL = sprintf("UPDATE tblcarrito SET intCantidad = intCantidad + %s WHERE intContador = %s",$_GET['intCantidad'],
                       $carrito);