Foros del Web » Programando para Internet » PHP »

Actualizacion de base de datos

Estas en el tema de Actualizacion de base de datos en el foro de PHP en Foros del Web. HOLA, TENGO UN PROBLEMA CON UNA ARCHIVO PHP, QUE SE ENCARGA DE ACTUALIZAR UNA BASE DE DATOS, RESULTA QUE ES DE UNA DB DE UNA ...
  #1 (permalink)  
Antiguo 06/06/2009, 20:28
 
Fecha de Ingreso: mayo-2009
Mensajes: 27
Antigüedad: 10 años, 6 meses
Puntos: 0
Actualizacion de base de datos

HOLA, TENGO UN PROBLEMA CON UNA ARCHIVO PHP, QUE SE ENCARGA DE ACTUALIZAR UNA BASE DE DATOS, RESULTA QUE ES DE UNA DB DE UNA PLANTA METEOROLOGICA, ENTONCES POR CADA PLANTA, YO TENGO UNA CARPETA, Y DENTRO DE ESA CARPETA ESTAN LOS DATOS QUE SE ENVIAN DESDE LA PLANTA EN UN ARCHIVO DENOMINADO DOWNLOAD.TXT ALGUNOS DE ESOS ARCHIVOS SON LOS QUE TENGO QUE INSERTAR CADA DIEZ MINUTOS EN UNA BASE DE DATOS. HASTA AHI CASI TODO LO HACE BIEN, ESTE ES EL CODIGO QUE TENGO:

<?php
include("conexion.php");
$m=0;
$path_folder1 = "C:\wamp\www\prueba_leer\Estaciones/"; // mira el / final!
$results = array();
if ($dh = opendir($path_folder1)) {
while (($dir = readdir($dh)) !== false) {
if(is_dir($path_folder1.$dir) && $dir!="." && $dir!=".." && $dir!="EstacionNula") $results1[] = $dir;
}
closedir($dh);
}
foreach($results1 as $r1) {


$results = array();
$fp = fopen("C:\wamp\www\prueba_leer\download.txt", "r");
if($fp) {
$cnt_line = 1;
while(!feof($fp)) {
$line = fgets($fp, 4096);
$line = trim($line);
$line = preg_replace("/\s+/", " ", $line); // esto hace que muchos espacios se vuelvan en uno
$results[$cnt_line] = explode(" ", $line);
$cnt_line++;

}
fclose($fp);

}
$key=2;
foreach($results as $key=>$value) {
//echo "Linea numero $key<br/>";
foreach($value as $k=>$v) {}
$sql="INSERT INTO estaciones_meteorologicas (`id_estacion`, `nombre_estacion`, `numero_estacion`, `fecha`, `hora`, `radiacion`, `temperatura_exterior`, `temperatura_interior`, `humedad_relativa`, `velocidad_viento`, `direccion_viento`, `THWS`, `lluvia_recreativa_Q1`) VALUES ('', '$results1[$m]','','$value[0]','$value[1]','$value[19]','$value[2]','$value[27]','$value[28]','$value[7]','$value[8]','$value[15]','$value[18]')";
mysql_query($sql);
echo $sql."<br/>";
echo "<hr/>";
}
$m++;
}

?>

AHORA, LOS PROBLEMAS:


PRIMERO: EMPIEZA A METER LOS DATOS BIEN, PERO LLEGA AL FINAL Y ME DICE : UNDEFINED OFFSET 19 IN LINEA 35 (LA LINEA 35 ES DONDE HAGO EL INSERT)
UNDEFINED OFFSET 2 IN LINEA 35
UNDEFINED OFFSET 27 IN LINEA 35
UNDEFINED OFFSET 28 IN LINEA 35

SEGUNDO:
COMO PODRIA HACER PARA QUE LOS DATOS SE ACTUALICEN DE MANERA QUE SE AGREGUEN SOLO LOS DATOS NUEVOS, ES DECIR, USAR UN UPDATE DE FORMA QUE SE FIJE QUE NOMBRE DE PLANTA TIENE, Y LA HORA Y FECHA DEL ULTIMO CAMPO INSERTADO YA EN LA TABLA, PARA ASI DESDE ESE EN ADELANTE, AGREGAR LOS QUE FALTAN

TERCERO: HICE UN .BAT, PARA EJECUTAR ESTO, Y RESULTA QUE SI LO EJECUTO A MANO, ME INSERTA BIEN, HASTA LOS ERRORES ESOS DEL OFFSET, PERO SI LO PROGRAMO EN "TAREAS PROGRAMADAS" SE EJECUTA, VEO EL CMD QUE SE ABRE Y SE CIERRA, Y LUEGO CUANDO ME FIJO EN LA BASE DE DATOS, NO AGREGO NADA, VOY A TAREAS PROGRAMADAS Y EN ULTIMO RESULTADO, ME DA COMO RESPUESTA 0X1, ESTO PUEDE SER POR LO DE OFFSET TAMBIEN? O SINO PORQUE PUEDE SER???
DESDE YA MUCHISIMAS GRACIAS, Y DE VERDAD AGRADECERIA SI ALGUIEN ME ECHA UNA MANO. CUALQUIER COSA QUE NO ME HAYA EXPLICADO BIEN, O SI NECESITAN ALGUN OTRO DATO, PREGUNTARMELO.
GRACIAS.
  #2 (permalink)  
Antiguo 11/09/2009, 22:03
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 10 años, 3 meses
Puntos: 214
Respuesta: Actualizacion de base de datos

Hola
1. Pues al parecer wamp tiene problemas con esto, en un foro anterior paso lo mismo y la persona lo solucionó cambiando de paquete de servidor (no con wamp sino con xampp)
2. Pues en el foreach hacer un select antes con los datos que quieras de filtro, y si coinciden todos los filtros con algún registro, es decir, si el mysql_num_rows de esa consulta es mayor a 0 entonces que haga el update con ese registro, y si el mysql_num_rows es 0, entonces que haga el insert
3. Si, esto puede ser consecuencia de lo primero
Bueno, prueba y nos cuentas
Saludos
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 06:34.