elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Error en PHP+MySqli
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en PHP+MySqli  (Leído 2,070 veces)
spysecurityca

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Error en PHP+MySqli
« en: 5 Mayo 2014, 03:05 am »

Buenas amigos, aquí les escribe este novato.

Les explico estoy practicando web y tengo el siguiente ejercicio que estoy haciendo:

Ingreso en un Form HTML las cantidades deseadas de X productos, al ingresar dicha cantidad inmediatamente me genera un input hidden en el cual se crea un identificador por cada elemento elegido.

Envío esto a un PHP que me va a recoger todos los datos del Form de los articulos y me va a hacer el update en mi BD cambiando las cantidades de los productos escogidos.

El problema es que obtengo un error de Sintaxis que no logro entender ni porque pasa ni como repararlo.

Aquí les traigo el código del lado del PHP.

 
Código
  1. <?php
  2.    class extraerCantidad{
  3.     private $identificadorCantidad;
  4.     private $valorCantidad;
  5.     private $conex;
  6.     private $registros;
  7.     public function __construct(){
  8.     $this->conex=mysqli_connect('localhost', 'root', '', 'base1') or die("Error en la conexion");
  9.     }
  10.     public function ingresarCantidad($cant){
  11.     $this->valorCantidad=$cant;
  12.     }
  13.     public function ingresarDescripcion($desc){
  14.     $this->identificadorCantidad=$desc;
  15.     }
  16.     public function cambioCantidad() {
  17. $this->registros=mysqli_query($this->conex, "update articulos set cantidad=cantidad-$this->valorCantidad where descripcion='$this->identificadorCantidad'") or die(mysqli_error($this->conex));
  18.     echo "Cantidad Actualizada".'<br>';
  19.     mysqli_close($this->conex);
  20.     }
  21.     }
  22.     /* Recorro todos los envios POST que me llegan desde el Form HTML*/
  23.  foreach ($_POST as $valorCampo) {
  24.   /*Ignoro cualquier campo en blanco para prevenir errores*/
  25. if ($valorCampo!=="") {
  26. /*Separo de todos los _POST por medio de filtrado aquellos que sean los identificadores del articulo (o descripcion) y las cantidades*/
  27. $cantidad=filter_var($valorCampo,FILTER_SANITIZE_NUMBER_INT);
  28. $descripcion=filter_var($valorCampo,FILTER_SANITIZE_STRING);
  29. /*Procedo a Crear las Nuevas Ordenes*/
  30. $nuevaOrden=new extraerCantidad();
  31. /*Asigno cantidad Extraida*/
  32. if (is_numeric($cantidad)) {
  33. $nuevaOrden->ingresarCantidad($cantidad);
  34. /*Asigno Descripcion o Identificador*/
  35. }elseif (is_string($descripcion)) {
  36. $nuevaOrden->ingresarDescripcion($descripcion);
  37. /*Llamo a la funcion que hace el Query Update en mi BD*/
  38. }
  39. $nuevaOrden->cambioCantidad();
  40. }
  41.  }
  42. ?>

Recibo este error (Cabe destacar que CocaCola puede ser cualquier otro identificador que reciba): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where descripcion='CocaCola'' at line 1

Curiosamente, cuando ingreso el identificador de forma manual en la linea del query, me sigue arrojando el error, pero me hace el cambio de cantidad en el elemento deseado.

Saludos.


« Última modificación: 8 Mayo 2014, 00:06 am por #!drvy » En línea

spysecurityca

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Error en PHP+MySqli
« Respuesta #1 en: 5 Mayo 2014, 03:29 am »

Reir para no llorar,

Cuando hago el Query para consultar X articulo definido por $this->identificadorArticulo

TODO salen bien, dios mio que error puedo tener entre un simple update y un select como para que el select si se haga bien y el update no.

Este fue el cambio que hice para probar y salio bello, 0 Errores (Cabe destacar que le deje el mismo nombre a la funcion, por si se confunden pues)    
Código
  1. public function cambioCantidad() {
  2. $this->registros=mysqli_query($this->conex, "select precio,descripcion,cantidad from articulos where descripcion='$this->identificadorCantidad'") or die(mysqli_error($this->conex));
  3.     if ($reg2=mysqli_fetch_array($this->registros)) {
  4.     echo $reg2['descripcion'].'<br>';
  5.     echo $reg2['precio'].'<br>';
  6.     echo $reg2['cantidad'].'<br>';
  7.     echo '<hr>';
  8.     }


« Última modificación: 8 Mayo 2014, 00:06 am por #!drvy » En línea

JorgeEMX
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.615



Ver Perfil WWW
Re: Error en PHP+MySqli
« Respuesta #2 en: 6 Mayo 2014, 13:38 pm »

Intenta así

"update articulos set cantidad=cantidad-{$this->valorCantidad} where descripcion='{$this->identificadorCantidad}'"
En línea

spysecurityca

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Error en PHP+MySqli
« Respuesta #3 en: 7 Mayo 2014, 02:03 am »

Saludos Diego!

Ante todo muchas gracias por la participación.

Te cuento, he ingresado el query como me lo has indicado y el error sigue, me he fijado que la hacer el FILTER_STRING, me sigue envia las cantidades como string.

Osea que no me separa las variables _POST que tienen cantidad de las variables _POST que tienen la parte de la descripcion.

¿ Sabrás el porque ?.

Osea aveces hago una funcion de prueba que imprime las variables $valorCampo "filtradas" que son numericas por un lado y string por otro y me arroja algo así:

11 CocaCola
22 Pepsi
33 BigCola

Lo ideal debería ser

1(Numero) CocaCola (String)
2(Numero) Pepsi (String)
3(Numero) BigCola (String)

Saludos Amigo.
« Última modificación: 7 Mayo 2014, 02:10 am por spysecurityca » En línea

JorgeEMX
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.615



Ver Perfil WWW
Re: Error en PHP+MySqli
« Respuesta #4 en: 7 Mayo 2014, 02:37 am »

El error proviene en tu if.. siempre que mandas a llamar al método cambioCantidad() se llama con algunos de los dos parámetros que necesitas en el query, ya sea cantidad o la descripción y nunca ambos (y necesitas ambos para tener un sentencia SQL correcta). Deberás corregir eso, no tengo la menor idea de cómo es tu formulario pero es mejor que uses los nombres de los indices tal cuál como vienen en POST.

PD: Quién demonios es Diego?
En línea

spysecurityca

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Error en PHP+MySqli
« Respuesta #5 en: 7 Mayo 2014, 04:43 am »

Jajajajaj perdón Jorge! Estaba pensando en un novio (?)

Muchas gracias de nuevo!, pues te cuento todo lo que has dicho con mucho gusto lo hice, no me daba resultado.

Comprobé cuantos POST estaba recibiendo en el array por medio de un print_r($_POST)

y vi que estaba enviando 2 veces las descripciones (Esto es por error en el lado HTML + Javasciript).

He quitado ese error que me clonaba la descripción, luego user un for each con una llave y a $this->descripcionblabla le asigné el valor (osea el name) del $_POST y en el $this->valorCantidad le envié el value de cada llave.

Y santo remedio, al momento de hacer la consulta por seguridad hice un if para verificar que ninguno de los 2 tanto descripción como cantidad llegue en blanco y allí procedí a hacer el Query.

Muchísimas gracias George! de verdad, a pesar de que las soluciones dadas por tí no fueron mi definitiva aprecio mucho tu capacidad de ayuda.

Saludos desde Venezuela!
En línea

spysecurityca

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: Error en PHP+MySqli
« Respuesta #6 en: 7 Mayo 2014, 04:52 am »

Por si acaso, aquí está el codigo
Código
  1. <?php
  2.    class extraerCantidad{
  3.     private $identificadorCantidad;
  4.     private $valorCantidad;
  5.     private $conex;
  6.     private $registros;
  7.     public function __construct($desc,$cant){
  8.     $this->identificadorCantidad=$desc;
  9.     $this->valorCantidad=$cant;
  10.     $this->conex=mysqli_connect('localhost', 'root', '', 'base1') or die("Error en la conexion");
  11.     $this->cambioCantidad();
  12.     }
  13.  
  14.     public function cambioCantidad() {
  15.  
  16.     if ($this->valorCantidad!=="" and $this->identificadorCantidad!=="") {
  17.     $this->registros=mysqli_query($this->conex, "update articulos set cantidad=cantidad-$this->valorCantidad where descripcion='$this->identificadorCantidad'")
  18.     or die("Error en la consulta");
  19.     mysqli_close($this->conex);
  20.     }
  21.     }
  22.    }
  23.     foreach ($_POST as $descripcion => $cantidad) {
  24. $nuevaOrden=new extraerCantidad($descripcion, $cantidad);
  25.     }
  26. ?>
« Última modificación: 8 Mayo 2014, 00:06 am por #!drvy » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
GiE 4.7 - MySQLi « 1 2 »
Nivel Web
Pony-Magic 10 6,926 Último mensaje 6 Abril 2010, 04:24 am
por isseu
mysqli
Desarrollo Web
tecasoft 2 1,473 Último mensaje 24 Noviembre 2012, 20:47 pm
por tecasoft
[Mysqli] error al usar una función el objeto
PHP
moikano→@ 2 1,469 Último mensaje 26 Diciembre 2012, 16:31 pm
por moikano→@
mysqli error
Bases de Datos
jalbtercero 1 1,033 Último mensaje 6 Marzo 2016, 00:52 am
por jalbtercero
Mysqli error ayuda [ SOLUCIONADO ]
Desarrollo Web
noobcoder 3 1,729 Último mensaje 20 Marzo 2016, 18:46 pm
por noobcoder
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines