Foros del Web » Programando para Internet » PHP »

Hacer un calculo durante el load data infile

Estas en el tema de Hacer un calculo durante el load data infile en el foro de PHP en Foros del Web. Hola amigos, Queria hacerles la siguiente consulta: Tengo una tabla de existencia de puntos acumulados con los siguientes campos: IDSocio entran salen existencia fecha articulo ...
  #1 (permalink)  
Antiguo 08/05/2002, 14:41
Avatar de locojars  
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 15 años, 7 meses
Puntos: 4
Hacer un calculo durante el load data infile

Hola amigos,

Queria hacerles la siguiente consulta:

Tengo una tabla de existencia de puntos acumulados con los siguientes campos:

IDSocio entran salen existencia fecha articulo cantidad

Esta tabla sirve para que el cliente cambie puntos acumulados por articulos promocionales, los campos salen,existencia,fecha,articulo,cantidad se llena cuando el usuario cambia sus puntos acumulados por un articulo promocional, y el campo entran se llena unicamente con un archivo que recibido todos los meses y trae los puntos acumulados. El campo sale es la cantidad de puntos que necesita para cambiar un articulo y existencia se actualiza de "existencia anterior - salen" me da la existencia actual despues del cambio.
Por ejemplo una salida seria
IDSocio entran salen existencia fecha articulo cantidad
565 0 450 700 2002-04-25 Camisa 1
732 0 175 2002-04-15 Boligrafo 1

El archivo que me envian es el siguiente para actualizar los puntos club acumulados es el siguiente:

IDSocio acumulados fecha
565 730 2002-04-30

El problema es que si yo importo este archivo a la tabla no me actualiza la existencia.. lo que quisiera hacer es saber la forma de hacer la operacion de actualizar existencia antes de que el registro se inserte. Que deberia de ser
"existencia anterior + acumulados = existencia" pero como hacer esta operacion en un loaddata u otro comando que se utilize para importar los datos.

Gracias por su atencion.
Salu2 :)
pd: He pensado mejor hacer tres tablas para manejar esto.. pero sera optimo??
  #2 (permalink)  
Antiguo 08/05/2002, 16:25
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: Hacer un calculo durante el load data infile

osea tu haces el update y necesitas la existencia que tenia para operarlo con acumulados y el valor que te da dejarlo en el mismo campo existencia , (eso es lo que te entendi), bueno lo podrias hacer haciendo la consulta y sacando la existencia con un select(tienes la Id del registro) y preguntas solo por el campo existencia, luego lo pasas a una variable y haces la operacion con las variable que tiene el valor de la exitencia actual y con la variable que tiene los acumulados, y el valor que te da lo usas en el update.
Código:
//saco el valor actual de la existencia
$result = mysql_query("select existencia from tabla where id = $idparametro");

//lo guardo en una variable y lo sumo a los acomulados
list($existencia) = mysql_fetch_row($result);
$existencia_UPD = $existencia + $acumulados;

//ahora hago el update
mysql_query("update tabla set existencia='$existencia_UPD' where id = '$idparametro'");

//listo... :)
  #3 (permalink)  
Antiguo 09/05/2002, 11:37
Avatar de locojars  
Fecha de Ingreso: mayo-2002
Mensajes: 265
Antigüedad: 15 años, 7 meses
Puntos: 4
Re: Hacer un calculo durante el load data infile

Gracias d^_^b siempre por tus respuestas,

Pues mira.. esto esta muy bien y lo he hecho para desplegar la info en el browser pero mi problema es que me va a dar una archivo .txt el cual tengo que cargar dentro de la tabla de puntos y hacer la operacion tal como tu me lo dices pero tendria que hacerla en la consola de MySQL.

La operacion que tu me has dado me va a servir mucho para el mantenimiento de los puntos.. pero como hago la operacion antes durante el LOAD DATA infile.. etc..etc.. .txt para que me actulize la existencia.

Salu2
JARS
estoy de tanto pensar.
  #4 (permalink)  
Antiguo 09/05/2002, 18:32
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: Hacer un calculo durante el load data infile

ah, aver si entendi, a ti te mandan el archivo con los datos en este formato

565 730 2002-04-30

tu quieres leer este archivo y tener los 3 valores y asi poder actualizar la base automaticamente.

entonces puedes hacerlo abriendo el archivo con las funciones del sistema de ficheros

mira aqui te doy un ejemplo como cargar los datos de tu archivo de texto

// abres el archivo de solo lectura
fp = fopen("archivoquetemandan.txt","r&q uot;);

// ahora haces un ciclo para leer todas las lineas
// hasta que se acabe el archivo, y asi
// poder procesar sujeto por sujeto (o liena por linea)
while(!feof($fp)){

// lees la linea actual
$linea = fgets($fd, 4096);

// separas las linea por los espacios
$losdatos = explode(" ",$linea);

// ahora tienes los tres datos en un arreglo
$IdSocio = $losdatos[0]; // primer dato
$Acumulados = $losdatos[1]; // sgdo dato
$Fecha = $losdatos[2]; // tercer dato

// ahora que tienes los tres datos puedes
// procesarles aqui te servirian las lineas
// que te escribi antes
// recuerda que estamos en un ciclo que
// procesa linea por linea, osea
// estamos porcesando persona por persona
// ...

}// fin while

// cierras el archivo
fclose($fp);

ojala que esta vez te haya respndido bien
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:40.