Foros del Web » Programando para Internet » PHP »

Update a toda una tabla con calculos diferentes para las filas

Estas en el tema de Update a toda una tabla con calculos diferentes para las filas en el foro de PHP en Foros del Web. Soy nuevo en esto de php y estoy programando una aplicacion para una granja de cerdos la cual me solicita que calcule los dias en ...
  #1 (permalink)  
Antiguo 19/07/2011, 08:59
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 1
Pregunta Update a toda una tabla con calculos diferentes para las filas

Soy nuevo en esto de php y estoy programando una aplicacion para una granja de cerdos la cual me solicita que calcule los dias en los que los lotes de estos han estado en la granja pero tengo un problema con el update mi codigo es el siguiente lo tengo en una funcion

Código PHP:
function dias($diasingreso)
{
//$i=0;

mysql_connect("localhost""root""") or die ("Error al Conectar!");
mysql_select_db("porkyadmin") or die ("Base de Datos incorrecta");
$consulta "Select * From Lote";
$respuesta mysql_query ($consulta);
//$numero = mysql_num_rows($respuesta);

while ($fila mysql_fetch_array($respuesta))
{

$fechaingreso $fila['FechaIngreso'];
echo 
$fechaingreso;
$fecha explode("-",$fila['FechaIngreso']);

//echo $fecha[0]; // Imprime "año"
//echo $fecha[1]; // Imprime "mes"
//echo $fecha[2];  //dia

$cuando mktime(0,0,0,$fecha[1],$fecha[2],$fecha[0]);
$hoy time();
$resta $hoy $cuando;
$total round($resta/86400);


mysql_query("Update Lote Set DiasEntrada=($total)"); //me actualiza con el ultimo registro toda la tabla lo cual no quiero que pase sino que actualice registro por registro calculado


 
}


espero su respuesta muchas gracias
  #2 (permalink)  
Antiguo 19/07/2011, 09:16
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Update a toda una tabla con calculos diferentes para las filas

Buenas, el problema lo tienes en la sentencia SQL:
Update Lote Set DiasEntrada=($total)

Tienes que añadir un WHERE a esta sentencia. Si tienes algún campo identificador (primary key o, al menos, unique) y aprovechando que en $fila tienes todos los datos de esa fila, tienes que hacer lo siguiente:
UPDATE Lote SET DianEntrada=($total) WHERE id=$fila['id']

Esto suponiendo que tu identificador se llame id.

Espero que te sirva, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 19/07/2011, 09:16
 
Fecha de Ingreso: diciembre-2010
Mensajes: 51
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: Update a toda una tabla con calculos diferentes para las filas

La verdad no sé mucho de update. Te paso este link: http://dev.mysql.com/doc/refman/5.0/es/update.html.
Supongo que el error es poner $total entre paréntesis
Probá así:
Update Lote Set DiasEntrada=$total
Espero que te sirva
Saludos

Edito: jeje ahora que actualizo la página y leo la respuesta de @vgonga1986 creo que tiene toda la razón
  #4 (permalink)  
Antiguo 19/07/2011, 09:21
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Update a toda una tabla con calculos diferentes para las filas

Gracias por sus prontas respuesta vgonga1986 tengo un id como tu dices tambien intente lo del where para decirle que es lo que quiero que actualice pero lo intente con la fecha de ingreso que seria casi lo mismo que lo que dices del id pero siempre me actualiza todas con el ultimo algo asi

Código PHP:
Ver original
  1. mysql_query("Update Lote Set DiasEntrada=($total) where FechaIngreso=$fechaingreso");


pero siempre me actualiza con el ultimo registro que lleva la variable $total
  #5 (permalink)  
Antiguo 19/07/2011, 09:37
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Update a toda una tabla con calculos diferentes para las filas

Gracias ya lo solucione


Pueden cerrar el tema
  #6 (permalink)  
Antiguo 19/07/2011, 09:42
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Update a toda una tabla con calculos diferentes para las filas

Pues es que no tiene más vuelta de hoja, el set no da para mucho más.

EDITO: te me adelantaste, qué pasaba? Que me quedo con la duda.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #7 (permalink)  
Antiguo 19/07/2011, 10:48
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Update a toda una tabla con calculos diferentes para las filas

pues mira lo solucione con lo de la fecha pero el formato estaba al revés por ese motivo la actualizacion no se realizaba y como en $fecha[0]...[2] tenia los meses dias y años separados solo lo ordene y funciono muchas gracias amigos por sus respuestas
  #8 (permalink)  
Antiguo 19/07/2011, 12:20
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Update a toda una tabla con calculos diferentes para las filas

Bueno, me alegro que lo hayas arreglado, pero te recomiendo que controles con id, que para eso están. Si da la casualidad de que dos registros tienen la misma fecha, te los va a modificar los dos. Si el campo id es clave primaria, qué mejor que eso para condicionar el where del update?

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #9 (permalink)  
Antiguo 19/07/2011, 14:15
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Update a toda una tabla con calculos diferentes para las filas

si los dos tienen la misma fecha quiere decir q los dos ingresaron el mismo dia y entonces tienen el mismo tiempo de ingreso pero tomare en cuenta lo q dices del id creo q funcionaria igual
  #10 (permalink)  
Antiguo 19/07/2011, 15:47
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Update a toda una tabla con calculos diferentes para las filas

Buenas,

A ver, esto ya es algo más complejos, pero ya puestos, te comento. Como bien dices, si dos registros tienen la misma fecha es que se ingresaron el mismo día y tienen el mismo tiempo de ingreso, pero realmente el bucle que haces recorre toda la tabla, así que dicha fecha se actualizará dos veces. Por ejemplo, si tienes los registros 24 y 63 con la misma fecha, cuando el bucle llegue al 24, actualizará 24 y 63 por tener la misma fecha y, cuando llegue al 63, volverá a actualizar en 24 y el 63 de nuevo. En este caso, el resultado es el mismo, pero los recursos que utiliza la base de datos para modificar los registros no lo son. Por qué? Pues muy sencillo, las bases de datos tienen más optimizadas las búsquedas por clave primera (o campos unique). Si modificas por id, la base de datos se irá directamente al registro, hará el update y, sabiendo que es unique, no tendrá que mirar más. Sin embargo, si miras por fechas (que no es unique), tendrá que repasar cada vez toda la tabla para ver si la fecha es la que tiene que ser. Es mucho menos eficiente.

En fin, el resultado es el mismo, pero son estos detalles los que en aplicaciones de gran volumen de datos hacen que una modificación pase de tardar 2 horas a tardar unos cuantos segundos.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #11 (permalink)  
Antiguo 20/07/2011, 16:01
 
Fecha de Ingreso: julio-2011
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Update a toda una tabla con calculos diferentes para las filas

tiene toda la razón ya modifique el codigo por la primary_key y pues funciona a la perfección muchas gracias por tu respuesta

Etiquetas: mysql, update
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 02:04.