Foros del Web » Programando para Internet » PHP »

incremantar dentro del Update..no funciona

Estas en el tema de incremantar dentro del Update..no funciona en el foro de PHP en Foros del Web. Estimados tengo el siguiente problema espero me puedan ayudar: en el update siguiente no incrementa el campo iddecreto me mantiene el mismo desde el primero ...

  #1 (permalink)  
Antiguo 21/04/2011, 10:39
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
incremantar dentro del Update..no funciona

Estimados tengo el siguiente problema espero me puedan ayudar:

en el update siguiente no incrementa el campo iddecreto me mantiene el mismo desde el primero hasta el ultimo registro...he probado con distintos codigos de incremento pero ninguno me funciona espero puedan ayudarme

Código PHP:
Ver original
  1. $sql1 = "update decretos set iddecreto = '$numero + 1' Where fecha_ini between('$textfield2') and ('$textfield13')and iddecreto='0' ";
  2.     mysql_query ( $sql1 , $link );

Código PHP:
Ver original
  1. $sql1 = "update decretos set iddecreto = $numero ++ Where fecha_ini between('$textfield2') and ('$textfield13')and iddecreto='0' ";
  2.     mysql_query ( $sql1 , $link );

Código PHP:
Ver original
  1. $sql1 = "update decretos set iddecreto = $numero + 1 Where fecha_ini between('$textfield2') and ('$textfield13')and iddecreto='0' ";
  2.     mysql_query ( $sql1 , $link );
  #2 (permalink)  
Antiguo 21/04/2011, 10:47
 
Fecha de Ingreso: octubre-2008
Mensajes: 365
Antigüedad: 16 años, 1 mes
Puntos: 12
Respuesta: incremantar dentro del Update..no funciona

si declaras iddecreto com autonumerico en tu bd ya no necesitas hacer incrementos desde código.

Salu2
__________________
No hay mail que por internet no venga
  #3 (permalink)  
Antiguo 21/04/2011, 10:56
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

no me sirve dejarlo como autonumerico, ya que le debe asignar el numero posteior al ingreso..
  #4 (permalink)  
Antiguo 21/04/2011, 11:53
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: incremantar dentro del Update..no funciona

Probaste ingresando el update dentro de un ciclo, conuna variable que se incremente
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #5 (permalink)  
Antiguo 21/04/2011, 12:13
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
Probaste ingresando el update dentro de un ciclo, conuna variable que se incremente
ya pero como seria eso..??
  #6 (permalink)  
Antiguo 21/04/2011, 12:22
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 14 años
Puntos: 48
Respuesta: incremantar dentro del Update..no funciona

Y ya intentaste asi ?
Código PHP:
Ver original
  1. $sql1 = "update decretos set iddecreto = iddecreto + 1 Where fecha_ini between('$textfield2') and ('$textfield13')and iddecreto='0' ";
  2.         mysql_query ( $sql1 , $link );
  #7 (permalink)  
Antiguo 21/04/2011, 12:32
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

no funciono tambien lo habia probado...sigo reciviendo opciones nada funciona...PLEASE...
  #8 (permalink)  
Antiguo 21/04/2011, 12:33
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por jodanihm Ver Mensaje
ya pero como seria eso..??
con un for simple dices tu??
  #9 (permalink)  
Antiguo 21/04/2011, 12:47
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 14 años
Puntos: 48
Respuesta: incremantar dentro del Update..no funciona

Una simple cosa porque al final pones iddecreto='0', ya que luego de aumentar ya no habra ninguna que contenga ello y tambien usando el between verifica con un select aver si te devuelve datos, si es asi entonces quiere decir que el update esta fallando sino regresa ningun valor el select es entonces por lo del where
  #10 (permalink)  
Antiguo 21/04/2011, 12:57
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por s00rk Ver Mensaje
Una simple cosa porque al final pones iddecreto='0', ya que luego de aumentar ya no habra ninguna que contenga ello y tambien usando el between verifica con un select aver si te devuelve datos, si es asi entonces quiere decir que el update esta fallando sino regresa ningun valor el select es entonces por lo del where
El iddecreto='0' es porque al ingresar el decreto parte por defecto con el valor "0" entonces se que decreto que esta con valor 0 le tengo que asignar un numero.
y el select funciona impecable pero el uldate no...me actualiza todos los registros pero no realiza la incrementacion...
  #11 (permalink)  
Antiguo 21/04/2011, 13:03
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

Realicé la consulta con el select y me trae los datos, el problema esta en $numero=$numero+1

Código PHP:
Ver original
  1. select * from  decretos Where fecha_ini between('2011-01-04') and ('2011-05-04')and iddecreto='0'
  #12 (permalink)  
Antiguo 21/04/2011, 13:36
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: incremantar dentro del Update..no funciona

De esta forma :

Código PHP:
Ver original
  1. for ($i=0;$i<=$TUCONDICION;$i++)
  2.         {
  3.             $numero=$numero+$i;
  4.             $sql1 = "update decretos set iddecreto = $numero Where fecha_ini between('$textfield2') and ('$textfield13')and iddecreto='0' ";
  5.         }

Modifica la condición en el For, saludos
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #13 (permalink)  
Antiguo 21/04/2011, 18:29
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 18 años, 1 mes
Puntos: 20
Respuesta: incremantar dentro del Update..no funciona

Pero a la variable $numero de donde le asignas el valor, porque si nunca toma valor de ningun lado siempre será cero, por lo tanto cuando realizas la consulta

iddecreto = '$numero + 1' ===> iddecreto = '0 + 1' ==> siempre será 1

Si lo tienes bien definido sumalo antes de la consulta
Código PHP:
$numero++;
    
$sql1 "update decretos set iddecreto = '$numero'  
Where fecha_ini between('$textfield2') 
and ('$textfield13')and iddecreto='0' "
;
        
mysql_query $sql1 $link ); 
  #14 (permalink)  
Antiguo 25/04/2011, 05:34
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

Le agradezco la ayuda y las diferentes opciones.. pero ninguna me funciona, el ciclo for me cambia todos los registros...al igual que el siguiente codigo...

Código PHP:
Ver original
  1. $numero++;
  2.     $sql1 = "update decretos set iddecreto = '$numero'  
  3. Where fecha_ini between('$textfield2')  
  4. and ('$textfield13')and iddecreto='0' ";
  5.         mysql_query ( $sql1 , $link );

no me quedan mas opciones para provar.......??
aun esperando otro poco mas de ayuda..
gracias..
  #15 (permalink)  
Antiguo 25/04/2011, 05:57
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 18 años, 1 mes
Puntos: 20
Respuesta: incremantar dentro del Update..no funciona

Entonces el problema lo tienes en otro lado, habría que mirar todo el código, porque con lo que te hemos puesto si o si se tiene que incrementar en uno.
  #16 (permalink)  
Antiguo 25/04/2011, 06:25
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

encontre el problema, pero no la solucion....miren..
Código PHP:
Ver original
  1. update decretos set iddecreto = '13' + 1 Where fecha_ini between('2011-01-04') and ('2011-05-13')and iddecreto='0'
lo que hace en la primera consulta es incrementar el valor de la variable iddecreto el problema es que cambia todas las que sean iddecreto = '0' por lo tanto son todas...enconces con el primer update cambia TODO...por lo tanto al pasar a la siguiente consulta no encuentra iddecreto ='0' ya que en la consulta anterior se modificaron todos...ahora como soluciono esto...NO LOSE...
  #17 (permalink)  
Antiguo 25/04/2011, 09:07
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 18 años, 1 mes
Puntos: 20
Respuesta: incremantar dentro del Update..no funciona

Pues yo lo solucionaría poniendo todo a cero:

Cita:
$sql = mysql_query("UPDATE decretos set iddecreto = 0 WHERE iddecreto != 0");
después con un blucle los cambiaría:
Código PHP:
Ver original
  1. $sql = mysql_query("SELECT * FROM decretos WHERE iddecreto = 0");
  2. $nums = mysql_num_rows($sql);
  3.  
  4. for($i=1; $i<=$nums; $i++){    
  5.   $sql = mysql_query("UPDATE decretos SET iddecreto = ".$i." WHERE iddecreto = 0");  
  6. }

Espero que te sirva
  #18 (permalink)  
Antiguo 25/04/2011, 09:13
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
De esta forma :

Código PHP:
Ver original
  1. for ($i=0;$i<=$TUCONDICION;$i++)
  2.         {
  3.             $numero=$numero+$i;
  4.             $sql1 = "update decretos set iddecreto = $numero Where fecha_ini between('$textfield2') and ('$textfield13')and iddecreto='0' ";
  5.         }

Modifica la condición en el For, saludos
Cita:
Iniciado por ESNOLA Ver Mensaje
Pero a la variable $numero de donde le asignas el valor, porque si nunca toma valor de ningun lado siempre será cero, por lo tanto cuando realizas la consulta

iddecreto = '$numero + 1' ===> iddecreto = '0 + 1' ==> siempre será 1

Si lo tienes bien definido sumalo antes de la consulta
Código PHP:
$numero++;
    
$sql1 "update decretos set iddecreto = '$numero'  
Where fecha_ini between('$textfield2') 
and ('$textfield13')and iddecreto='0' "
;
        
mysql_query $sql1 $link ); 

Error Si esta dentro de un ciclo es imposible que vuelva a cero si no es seteada y por cierto la variable $numero creo que se recoje de un formulario
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #19 (permalink)  
Antiguo 25/04/2011, 09:24
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

me pasa lo mismo, sigue actualizandome todo con el primer numero que encuentra....
  #20 (permalink)  
Antiguo 25/04/2011, 09:25
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
Error Si esta dentro de un ciclo es imposible que vuelva a cero si no es seteada y por cierto la variable $numero creo que se recoje de un formulario
efectivamente la variable $numero se la asigna otro variable que esta un poco mas arriba..
por lo tanto $numero viene con un valor predefinido
  #21 (permalink)  
Antiguo 25/04/2011, 09:29
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 18 años, 1 mes
Puntos: 20
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
Error Si esta dentro de un ciclo es imposible que vuelva a cero si no es seteada y por cierto la variable $numero creo que se recoje de un formulario
Si está dentro del ciclo si, por eso he propuesto el bucle y luego la consulta, me refería a esta propuesta en concreto

Código PHP:
$sql1 "update decretos set iddecreto = iddecreto + 1 Where fecha_ini between('$textfield2') and ('$textfield13')and iddecreto='0' "
  #22 (permalink)  
Antiguo 25/04/2011, 09:31
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 18 años, 1 mes
Puntos: 20
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por jodanihm Ver Mensaje
me pasa lo mismo, sigue actualizandome todo con el primer numero que encuentra....
Envíame los archivos a esnola arroba gmail punto como
  #23 (permalink)  
Antiguo 25/04/2011, 09:32
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por jodanihm Ver Mensaje
me pasa lo mismo, sigue actualizandome todo con el primer numero que encuentra....
Te fijasteste en tu Where ? creo que la condición es igual a todos los archivos de tu Bd y por esto te los actualiza, tal vez te falte un dato
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #24 (permalink)  
Antiguo 25/04/2011, 09:39
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por bUllan9ebrio Ver Mensaje
Te fijasteste en tu Where ? creo que la condición es igual a todos los archivos de tu Bd y por esto te los actualiza, tal vez te falte un dato
ESE ES MI PROBLEMA.....ahora como lo soluciono..?????
  #25 (permalink)  
Antiguo 25/04/2011, 09:56
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 18 años, 1 mes
Puntos: 20
Respuesta: incremantar dentro del Update..no funciona

Aunque sea el Where de fechas identico, tienes un AND depues, si ejecutas el script que te he pasado arriba ya no es el iddecreto igual a todos y por lo tanto ya hay diferencia.

http://www.forosdelweb.com/f18/incre...1/#post3829080


Código PHP:
Ver original
  1. $sql = mysql_query("SELECT * FROM decretos WHERE iddecreto = 0");
  2.     $nums = mysql_num_rows($sql);
  3.      
  4.     for($i=1; $i<=$nums; $i++){    
  5.       $sql = mysql_query("UPDATE decretos SET iddecreto = ".$i." WHERE iddecreto = 0");  
  6.     }
  #26 (permalink)  
Antiguo 25/04/2011, 09:59
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por jodanihm Ver Mensaje
ESE ES MI PROBLEMA.....ahora como lo soluciono..?????
En tú BD, utilizas algún campo para diferenciar el primero con el segundo, tercero, etc??? creo que el problema va en tu modelamiento
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #27 (permalink)  
Antiguo 25/04/2011, 12:51
 
Fecha de Ingreso: abril-2011
Ubicación: Valdivia
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 1
Respuesta: incremantar dentro del Update..no funciona

Estimado amigos lo solucione,
Código PHP:
Ver original
  1. $sql = mysql_query("SELECT * FROM decretos WHERE iddecreto = 0");
  2. $nums = mysql_num_rows($sql);
  3. $numero2 =0;
  4. $iddecreto2 = 0;
  5. $numero2=$MAXIMO;
  6.  
  7. $query_IMPRIME = "Select * From decretos Where fecha_ini between('$textfield2') and ('$textfield13') and (iddecreto = $iddecreto2)";
  8. $resultado6 = mysql_query($query_IMPRIME);
  9. $num_rows = mysql_num_rows($resultado6);
  10. if($num_rows > 0){
  11. while ($row = mysql_fetch_assoc($resultado6))   {
  12. $Id=$row['Id'];
  13. $numero2 = $numero2 +1;
  14. $sql1 = "update decretos set iddecreto = $numero2 Where fecha_ini between('$textfield2') and ('$textfield13')and (iddecreto = $iddecreto2) and Id=$Id";
  15. mysql_query ( $sql1, $link );
  16. $iddecreto2 = $numero2;
  17. echo  $sql1. "<br>";
  18. }
  19. }
  20. }

les dejo el codigo por si alguin tiene el mismo problema...

con este codigo me hace lo que quiero pero no me actualiza la bd.....
que me faltara???
  #28 (permalink)  
Antiguo 25/04/2011, 13:08
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: incremantar dentro del Update..no funciona

Ingresas al while, verifica esa info y si ingresa pega tu echo $sql1 en el PhpMyAdmin para ver si te actualiza
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #29 (permalink)  
Antiguo 25/04/2011, 13:30
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: incremantar dentro del Update..no funciona

yo habría hecho esto:

Código MySQL:
Ver original
  1. while(!$out){
  2.     $q = mysql_query("SELECT * FROM decretos WHERE iddecreto = 0");
  3.     if(mysql_num_rows($q)){
  4.         $sql = mysql_query("UPDATE decretos SET iddecreto = (SELECT MAX(iddecreto)+1 FROM decretos) WHERE iddecreto = 0 LIMIT 1");
  5.     }else{
  6.         $out=1;
  7.     }
  8. }

ya que en todas las opciones pusieron "WHERE iddecreto = 0", mientras pongan eso todos los registros que tengan 0 se actualizaran al mismo tiempo, por tanto creo que todas las soluciones que pusieron están mal...

por suerte jodanihm encontró solo la solución al poner "WHERE Id=$Id" incrementando $Id según las columnas ingresadas, bUllan9ebrio también se dio cuenta pero no quiso publicar la solución XD.

que FAIL para Foros del web!

(por cierto en mi solucion tambien pongo "WHERE iddecreto = 0" pero pongo "LIMIT 1" para que solo se actualice un registro, aunque no se si sirve...)
  #30 (permalink)  
Antiguo 25/04/2011, 14:00
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 9 meses
Puntos: 128
Respuesta: incremantar dentro del Update..no funciona

Cita:
Iniciado por stramin Ver Mensaje
yo habría hecho esto:

Código MySQL:
Ver original
  1. while(!$out){
  2.     $q = mysql_query("SELECT * FROM decretos WHERE iddecreto = 0");
  3.     if(mysql_num_rows($q)){
  4.         $sql = mysql_query("UPDATE decretos SET iddecreto = (SELECT MAX(iddecreto)+1 FROM decretos) WHERE iddecreto = 0 LIMIT 1");
  5.     }else{
  6.         $out=1;
  7.     }
  8. }

ya que en todas las opciones pusieron "WHERE iddecreto = 0", mientras pongan eso todos los registros que tengan 0 se actualizaran al mismo tiempo, por tanto creo que todas las soluciones que pusieron están mal...

por suerte jodanihm encontró solo la solución al poner "WHERE Id=$Id" incrementando $Id según las columnas ingresadas, bUllan9ebrio también se dio cuenta pero no quiso publicar la solución XD.

que FAIL para Foros del web!

(por cierto en mi solucion tambien pongo "WHERE iddecreto = 0" pero pongo "LIMIT 1" para que solo se actualice un registro, aunque no se si sirve...)

No es por eso compadre, pero ahi veces que es necesario el esfuerzo del usuario , asi se aprende de una mejor manera, bueno por lo menos eso pienso yo
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón

Etiquetas: Ninguno
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 12:52.