Foros del Web » Programando para Internet » PHP »

comparar variable con campo mysql

Estas en el tema de comparar variable con campo mysql en el foro de PHP en Foros del Web. Hola Amigos , recien estube en el foro de mysql y gnzsoloyo muy amablemente me explico como tenia que hacer un update mysql mediante switch ...
  #1 (permalink)  
Antiguo 29/05/2011, 11:07
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
comparar variable con campo mysql

Hola Amigos , recien estube en el foro de mysql y gnzsoloyo muy amablemente me explico como tenia que hacer un update mysql mediante switch , el problema es que lo estoy intentando pero no lo puedo lograr
pongo el codigo hasta donde lo pude hacer :
Código MySQL:
Ver original
  1. $sql2="update  articulos set  pr1        = '$final',
  2.                                                         gar_art     = '$gar[$i]',
  3.                                                          proce      = '$pro[$i]',";
  4.                                    
  5.                                     switch ($stk[$i]) {
  6.                                         case 0:
  7.                                             $sql2 .= "stk1 = stk1 + $can[$i] ";
  8.                                             break;
  9.                                         case 1:
  10.                                             $sql2 .= "stk2 = stk2 + $can[$i] ";
  11.                                             break;
  12.                                         case 2:
  13.                                             $sql2 .= "stk3 = stk3 + $can[$i] ";
  14.                                             break;
  15.                                         case 3:
  16.                                             $sql2 .= "stk4 = stk4 + $can[$i] ";
  17.                                             break;
  18.                                                     }"
  19.                                    
  20.                                     where arti_id='".$art[$i]."'";
lo que necesito hacer es que la variable $can[$i] se actualize segun el valor que contenga $stk[$i] , es decir, actualizame el campo X donde el valor de la variable $stk[$i] es igual al campo X
no los molesto mas Saludos y gracias por ayudar a un novato
  #2 (permalink)  
Antiguo 29/05/2011, 11:59
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 16 años, 6 meses
Puntos: 188
Respuesta: comparar variable con campo mysql

No comprendo muy bien amigo, pero podemos empezar a analizar las primeras lineas

Código PHP:
Ver original
  1. sql2="UPDATE  articulos SET  pr1 = '".$final."',
  2.                                                        gar_art     = '".$gar[$i]."',
  3.                                                         proce      = '".$pro[$i];

Que es la forma correta en la que debería estar

y en
Código PHP:
Ver original
  1. switch ($stk[$i]) {
  2.                                         CASE 0:
  3.                                             $sql2 .= "stk1 = stk1 + $can[$i] ";
  4.                                             break;
  5.                                         CASE 1:
  6.                                             $sql2 .= "stk2 = stk2 + $can[$i] ";
  7.                                             break;
  8.                                         CASE 2:
  9.                                             $sql2 .= "stk3 = stk3 + $can[$i] ";
  10.                                             break;
  11.                                         CASE 3:
  12.                                             $sql2 .= "stk4 = stk4 + $can[$i] ";
  13.                                             break;
  14.                                                     }" //<--- Aqui hay una comilla doble que no debería existir

Esta parte de aquí nos indica que ésta mal planteado el código.
Código PHP:
Ver original
  1. where arti_id='".$art[$i]."'";

No comprendo bien el código, pero ésta parte está mal codificada.
Cuentanos que es lo que quieres lograr


Un saludo.
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 29/05/2011, 12:54
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: comparar variable con campo mysql

Hola como estas gracias por tu interes en ayudarme
estuve analizando todo el codigo de nuevo y estaba lleno de errores pero ahora me esta dando un error de comillas que no lo puedo encontrar , mi codigo es este
Código MySQL:
Ver original
  1. $sql2="update  articulos set  pr1       = '".$final."',
  2.                                
  3.                                     gar_art   = '".$gar[$i]."',
  4.                                     proce     = '".$pro[$i]."',";
  5.                                    
  6.                                     switch ($stk[$i]) {
  7.                                         case "suc01":
  8.                                             $sql2 .= "stk1 = stk1 + $can[$i] where arti_id='".$art[$i]."'";
  9.                                             break;
  10.                                         case "suc02":
  11.                                             $sql2 .= "stk2 = stk2 + $can[$i] where arti_id='".$art[$i]."'";
  12.                                             break;
  13.                                        
  14.                                                     }"
  15.                                    
  16.                                     where arti_id='".$art[$i]."'";
  #4 (permalink)  
Antiguo 29/05/2011, 13:04
Avatar de nicolaslt  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 119
Antigüedad: 15 años
Puntos: 5
Respuesta: comparar variable con campo mysql

Hola darion..

Código PHP:
switch ($stk[$i]) {
                                        CASE 
0:
                                            
$sql2 .= "stk1 = stk1 + $can[$i] ";
                                            break;
                                        CASE 
1:
                                            
$sql2 .= "stk2 = stk2 + $can[$i] ";
                                            break;
                                        CASE 
2:
                                            
$sql2 .= "stk3 = stk3 + $can[$i] ";
                                            break;
                                        CASE 
3:
                                            
$sql2 .= "stk4 = stk4 + $can[$i] ";
                                            break;
                                                    }
" //<--- comillas de mas 
como dijo el compañero, creo uqe esa comilla señalada está de mas..
  #5 (permalink)  
Antiguo 29/05/2011, 13:12
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: comparar variable con campo mysql

hola nicolaslt te agradezco tu ayuda
si al case agrego un numero entero ejem
CASE 0: instruccion
CASE 1: instruccion
funciona bien, pero yo necesito agregarle al case un string
CASE suc01:
CASE suc02:
pero de esta forma tengo que agregarle comillas y al agregarle las comillas me da error
}" //<--- comillas de mas (ya la saque y sigue dandome error)
Muchas gracias por cualquier ayuda que puedan brindarme
saludos
  #6 (permalink)  
Antiguo 29/05/2011, 14:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: comparar variable con campo mysql


Hola de nuevo...
El problema es que copiaste mal el código. Mira de nuevo:
Código PHP:
Ver original
  1. $sql2 = "UPDATE articulos SET descripcion =  '$final',  ";
  2. $sql2 .= "precio = '$prec[$i]', ";
  3. switch ($select) {
  4.     case 0:
  5.         $sql2 .= "stk1 = stk1 + $can[$i] ";
  6.         break;
  7.     case 1:
  8.         $sql2 .= "stk2 = stk2 + $can[$i] ";
  9.         break;
  10.     case 2:
  11.         $sql2 .= "stk3 = stk3 + $can[$i] ";
  12.         break;
  13.     case 3:
  14.         $sql2 .= "stk4 = stk4 + $can[$i] ";
  15.         break;
  16. }
  17. $sql2 .= "WHERE arti_id = ".$art[$i];
¿Notas la diferencia?
Lo que se pretende es que luego de insertar en la consulta SQL el bloque correspondiente, lo cierre agregando la condición WHERE necesaria. Pero sólo el SQL...
Si miras con cuidado esa llave es parte del código PHP y no pertenece al SQL, sino que corresponde al cierre de las opciones del switch.

Sugerencia: Usa un editor de PHP con analizador sintáctico, como NetBeans por ejemplo. Ayuda mucho a ver inmediatamente los errores de sintaxis como este, ya que hubiera resaltado que el "switch" no estaba correctamente cerrado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 29/05/2011, 15:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: comparar variable con campo mysql

Hola de nuevo
gracias por la aclaracion y el consejo

Saludos!!!
  #8 (permalink)  
Antiguo 29/05/2011, 16:03
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: comparar variable con campo mysql

Amigos No hay caso
Ya no se me ocurre mas nada
Dejo el codigo a ver que me dicen
Código PHP:
Ver original
  1. $sql2="update  articulos set  pr1       = '".$final."',
  2.                                     pr2       = '".$final."',
  3.                                     pr3       = '".$final."',
  4.                                     pr4       = '".$final."',
  5.                                     pr5       = '".$final."',
  6.                                     pr6       = '".$final."',
  7.                                     pr7       = '".$final."',
  8.                                     pr8       = '".$final."',
  9.                                     pr9       = '".$final."',
  10.                                     pr10      = '".$final."',
  11.                                     gar_art   = '".$gar[$i]."',
  12.                                     proce     = '".$pro[$i]."',";
  13.                                    
  14.                                     switch ($stk[$i]) {
  15.                                         case 'suc01':
  16.                                             $sql2 .= "stk1 = stk1 + $can[$i] where arti_id='".$art[$i]."'";
  17.                                             break;
  18.                                         case 'suc02':
  19.                                             $sql2 .= "stk2 = stk2 + $can[$i] where arti_id='".$art[$i]."'";
  20.                                             break;
  21.                                         case 'suc03':
  22.                                             $sql2 .= "stk3 = stk3 + $can[$i] where arti_id='".$art[$i]."'";
  23.                                             break;
  24.                                         case 'suc04':
  25.                                             $sql2 .= "stk4 = stk4 + $can[$i] where arti_id='".$art[$i]."'";
  26.                                             break;
  27.                                         case 'suc05':
  28.                                             $sql2 .= "stk5 = stk5 + $can[$i] where arti_id='".$art[$i]."'";
  29.                                             break;
  30.                                         case 'suc06':
  31.                                             $sql2 .= "stk6 = stk6 + $can[$i] where arti_id='".$art[$i]."'";
  32.                                             break;
  33.                                         case 'suc07':
  34.                                             $sql2 .= "stk7 = stk7 + $can[$i] where arti_id='".$art[$i]."'";
  35.                                             break;
  36.                                         case 'suc08':
  37.                                             $sql2 .= "stk8 = stk8 + $can[$i] where arti_id='".$art[$i]."'";
  38.                                             break;
  39.                                         case 'suc09':
  40.                                             $sql2 .= "stk9 = stk9 + $can[$i] where arti_id='".$art[$i]."'";
  41.                                             break;
  42.                                         case 'suc10':
  43.                                             $sql2 .= "stk10 = stk10 + $can[$i] where arti_id='".$art[$i]."'";
  44.                                             break; }" and arti_id='".$art[$i]."'";
el error que me esta dando es este
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 '' at line 12
les agradezco un monton Saludos y muchas gracias
  #9 (permalink)  
Antiguo 29/05/2011, 17:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: comparar variable con campo mysql

Te está faltando el segmento de asignar la cadena " and arti_id='".$art[$i]."'" a la variable. Además no tiene ninguna utilidad ni sentido repetir un pedazo de la cadena en los case. Si siempre está, ponla por fuera.
- Trata de revisar bien el código, especialmente el SQL creado con el PHP.
- Usa un editor con analizador de sintaxis. Te hubieses ahorrado el error.
- El hecho de que puedas poner la sentencia escrita en varias líneas sin cortar la sentencia, no significa que debas hacerlo. Trata de escribir código de modo en que puedas revisarlo bien, sin tener que recorrerlo de punta a punta.
- Cuando recibas un error de sintaxis de SQL, revisa primero qué es lo que realmente queda armado en la consulta antes que nada.

Código php:
Ver original
  1. $sql2="update  articulos set  pr1       = '".$final."', ";
  2. $sql2 .= "pr2       = '".$final."',";
  3. $sql2 .= "pr3       = '".$final."',";
  4. $sql2 .= "pr4       = '".$final."',";
  5. $sql2 .= "pr5       = '".$final."',";
  6. $sql2 .= "pr6       = '".$final."',";
  7. $sql2 .= "pr7       = '".$final."',";
  8. $sql2 .= "pr8       = '".$final."',";
  9. $sql2 .= "pr9       = '".$final."',";
  10. $sql2 .= "pr10      = '".$final."',";
  11. $sql2 .= "gar_art   = '".$gar[$i]."',";
  12. $sql2 .= "proce     = '".$pro[$i]."',";
  13.     switch ($stk[$i]) {
  14.         case 'suc01':
  15.             $sql2 .= "stk1 = stk1 + $can[$i]";
  16.             break;
  17.         case 'suc02':
  18.             $sql2 .= "stk2 = stk2 + $can[$i]";
  19.             break;
  20.         case 'suc03':
  21.             $sql2 .= "stk3 = stk3 + $can[$i]";
  22.             break;
  23.         case 'suc04':
  24.             $sql2 .= "stk4 = stk4 + $can[$i]";
  25.             break;
  26.         case 'suc05':
  27.             $sql2 .= "stk5 = stk5 + $can[$i]";
  28.             break;
  29.         case 'suc06':
  30.             $sql2 .= "stk6 = stk6 + $can[$i]";
  31.             break;
  32.         case 'suc07':
  33.             $sql2 .= "stk7 = stk7 + $can[$i]";
  34.             break;
  35.         case 'suc08':
  36.             $sql2 .= "stk8 = stk8 + $can[$i]";
  37.             break;
  38.         case 'suc09':
  39.             $sql2 .= "stk9 = stk9 + $can[$i]";
  40.             break;
  41.         case 'suc10':
  42.             $sql2 .= "stk10 = stk10 + $can[$i]";
  43.             break; }
  44. $sql2 .= " where arti_id='".$art[$i]."'";
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 29/05/2011, 17:34
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: comparar variable con campo mysql

Hola otra vez
Gracias otra vez
estoy usando dreamweaver como editor, siempre me marca los errores en las comillas o en otro punto
pero esta vez no me marca nada,
si no hago esto
arti_id='".$art[$i]."'" en todos los case , lo que hace es actualizar todos los registros que tengo en la tabla articulos
Bueno muchas gracias de nuevo y que tengas un buen dia
  #11 (permalink)  
Antiguo 29/05/2011, 18:06
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: comparar variable con campo mysql

Cita:
arti_id='".$art[$i]."'" en todos los case , lo que hace es actualizar todos los registros que tengo en la tabla articulos
En ese caso tienes o un error en la variable, o un error en la definición de la tabla, o un error de lógica en el script. Se supone que el campo arti_id contiene la PK de la tabla, ¿no es así? En ese caso no debería estar produciéndose lo que dices.
¿Cómo queda armada la consulta UPDATE? ¿Hiciste un echo precio para ver qué le estás mandando a MySQL en realidad?

Por otra parte, yo que tu editaría los PHP con otra cosa, porque evidentemente Dreamweaver no es un buen editor para eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 30/05/2011, 04:23
 
Fecha de Ingreso: octubre-2010
Mensajes: 233
Antigüedad: 13 años, 6 meses
Puntos: 3
Respuesta: comparar variable con campo mysql

Ya lo solucione
y el codigo me quedo asi
Código PHP:
Ver original
  1. $sql2="update  articulos set  pr1       = '".$final."', ";
  2.                             $sql2 .= "pr2       = '".$final."',";
  3.                             $sql2 .= "pr3       = '".$final."',";
  4.                             $sql2 .= "pr4       = '".$final."',";
  5.                             $sql2 .= "pr5       = '".$final."',";
  6.                             $sql2 .= "pr6       = '".$final."',";
  7.                             $sql2 .= "pr7       = '".$final."',";
  8.                             $sql2 .= "pr8       = '".$final."',";
  9.                             $sql2 .= "pr9       = '".$final."',";
  10.                             $sql2 .= "pr10      = '".$final."',";
  11.                             $sql2 .= "gar_art   = '".$gar[$i]."',";
  12.                             $sql2 .= "proce     = '".$pro[$i]."',";
  13.                                    
  14.                                     switch ($stk[$i]) {
  15.                                         case 1:
  16.                                             $sql2 .= "stk1 = stk1 + $can[$i] ";
  17.                                             break;
  18.                                         case 2:
  19.                                             $sql2 .= "stk2 = stk2 + $can[$i] ";
  20.                                             break;
  21.                                         case 3:
  22.                                             $sql2 .= "stk3 = stk3 + $can[$i] ";
  23.                                             break;
  24.                                         case 4:
  25.                                             $sql2 .= "stk4 = stk4 + $can[$i]";
  26.                                             break;
  27.                                         case 5:
  28.                                             $sql2 .= "stk5 = stk5 + $can[$i]";
  29.                                             break;
  30.                                         case 6:
  31.                                             $sql2 .= "stk6 = stk6 + $can[$i] ";
  32.                                             break;
  33.                                         case 7:
  34.                                             $sql2 .= "stk7 = stk7 + $can[$i] ";
  35.                                             break;
  36.                                         case 8:
  37.                                             $sql2 .= "stk8 = stk8 + $can[$i] ";
  38.                                             break;
  39.                                         case 9:
  40.                                             $sql2 .= "stk9 = stk9 + $can[$i] ";
  41.                                             break;
  42.                                         case 10:
  43.                                             $sql2 .= "stk10 = stk10 + $can[$i] ";
  44.                                             break; 
  45.                                                      }
  46.                                         $sql2 .= " where arti_id='".$art[$i]."'";
aparentemente no me estaba tomando esto ultimo
" where arti_id='".$art[$i]."'";
voy a seguir tu consejo y voy a empezar a utilizar otro editor php
voy a probar netbeans
Saludos y muchas gracias

Etiquetas: mysql, variables, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:19.