Foros del Web » Programando para Internet » PHP »

Duda con insert desde txt

Estas en el tema de Duda con insert desde txt en el foro de PHP en Foros del Web. Estimados tengo un scripts que toma un archivo txt separado por ; y lo inserta en una base detos el ejemplo lo tome desde el ...
  #1 (permalink)  
Antiguo 12/04/2010, 23:15
 
Fecha de Ingreso: marzo-2009
Ubicación: Santiago
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Duda con insert desde txt

Estimados tengo un scripts que toma un archivo txt separado por ; y lo inserta en una base detos el ejemplo lo tome desde el foro pero lo modifique para que cuando se corriera nuevamente el scripts y a ese txt le agregaran o modificaran la informacion interna actualizara segun registros existente en la base de datos o insertara si es que no lo encontraba pero el problema que no me funciona ...

aca el scripts

Código PHP:
$filename "../txt/categorias.txt";

$handle fopen("$filename""r");

     while ((
$data fgetcsv($handle,5000,";")) !== FALSE)

     {

    
$consultaRegistro mysql_query("SELECT * FROM procategoria WHERE idcategoria='".$data['0']."'")or die(mysql_error());
    
$filas mysql_fetch_array($consultaRegistro)or die(mysql_error());
    
    
    if(
$data['0']==$filas['idcategoria']){
        

 
$actualizaRegistro "UPDATE procategoria SET nombrecat='$data[1]' WHERE idcategoria='".$data['0']."'";
        
        
mysql_query($actualizaRegistro) or die(mysql_error());
        
        print 
"Update done";  

        
    }else{



     
$import="INSERT into procategoria(idcategoria,nombrecat,catactiva) values('$data[0]','$data[1]','1')";

       
mysql_query($import) or die(mysql_error());


     print 
"Import done";
    

    }
     
    }

     
fclose($handle); 
el archivo txt esta asi

34;COBRE
35;ECOLOGICA
36;PROTECCION PERSONAL
37;TEXTIL

si saco la validacion que tengo el scripts inserta los datos sin ningun problema pero yo lo necesito con la validacion que no me funca y ya me cerre

les agradeceria si me pueden echar una manito para ver donde esta el problema

Saludos
  #2 (permalink)  
Antiguo 13/04/2010, 08:26
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años
Puntos: 2
Respuesta: Duda con insert desde txt

Saludos, estoy leyendo tu post pero...como ke no entendi mucho tu problema,si lo pudieras explicar un poco mas consiso...
  #3 (permalink)  
Antiguo 13/04/2010, 08:33
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda con insert desde txt

ten mucho cuidado con los índices numéricos... ya que si en tu base de datos las columnas de ID son INT las comparaciones deberías hacerlas sin comillas...

también en la forma de accesar el arreglo $data, ya que ahí usas también comillas y no deberías usarlas... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 13/04/2010, 08:33
 
Fecha de Ingreso: marzo-2009
Ubicación: Santiago
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
gracias xfletes.

Mira .. el script que postie en el post deberia realizar el siguiente trabajo al cargar el txt validaria que si esta creado el registro en la base de datos lo actualizara y si no esta lo creara, el problema es que solamente hace las actualizaciones, estoy probando con un txt que tiene nuevos registros pero no se an insertando, solo actualiza.

Nose si se entendio ...

Saludos

Hola pateketrueke gracias por tu respuesta, realize el cambio que tu me comentas pero sigue sin validar los que no estan en la base de datos.

que puede ser .. saludos

Última edición por GatorV; 13/04/2010 a las 08:49
  #5 (permalink)  
Antiguo 13/04/2010, 08:57
 
Fecha de Ingreso: abril-2010
Mensajes: 115
Antigüedad: 14 años
Puntos: 2
Respuesta: Duda con insert desde txt

mira, siento que tu problema esta en esta linea

Código PHP:
Ver original
  1. $actualizaRegistro = "UPDATE procategoria SET nombrecat='$data[1]' WHERE idcategoria='".$data['0']."'";

siento que deberia ir algo semejante a esto:
Código PHP:
Ver original
  1. $actualizaRegistro = "UPDATE procategoria SET nombrecat='".$data['1']."' WHERE idcategoria='".$data['0']."'";

intenta algo asi con las comitas, hace dias tuve muchos problemas por las comitas
jeje,
  #6 (permalink)  
Antiguo 13/04/2010, 09:02
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Duda con insert desde txt

Al menos sabes si está entrando al if del insert?? Si entra el if del insert, lo más probable es que sea problema de tu consulta insert.

Hazle un seguimiento al proceso mediante echo ó var_dump(), para que sepas qué está haciendo.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #7 (permalink)  
Antiguo 13/04/2010, 09:36
 
Fecha de Ingreso: marzo-2009
Ubicación: Santiago
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Duda con insert desde txt

Hola Carxl gracias por tu consejo,

empese seguimiento con var_dump(), y me encuentro que el registro nuevo se muere despues del select y no pasa al if del insert

Antes del select :

array(2) { [0]=> string(2) "48" [1]=> string(9) "SOMMELIER" } Update id 48
array(2) { [0]=> string(2) "49" [1]=> string(5) "MUJER" } Update id 49
array(2) { [0]=> string(2) "50" [1]=> string(7) "RELOJES" } Update id 50
array(2) { [0]=> string(2) "51" [1]=> string(17) "ELECTRONICA & USB" } Update id 51
array(2) { [0]=> string(2) "52" [1]=> string(22) "SEMINARIOS & CONGRESOS" } Update id 52
array(2) { [0]=> string(2) "53" [1]=> string(20) "OFICINA Y ESCRITORIO" } Update id 53
array(2) { [0]=> string(2) "54" [1]=> string(10) "BOLIGRAFOS" } Update id 54
array(2) { [0]=> string(2) "55" [1]=> string(8) "LLAVEROS" } Update id 55
array(2) { [0]=> string(2) "57" [1]=> string(9) "PACKAGING" } Update id 57
array(2) { [0]=> string(2) "58" [1]=> string(6) "PRUEBA" }

el ultimo registro con id 58 es el nuevo registro que se deberia insertar

despues del select :

rray(2) { [0]=> string(2) "48" [1]=> string(9) "SOMMELIER" } Update id 48
array(2) { [0]=> string(2) "49" [1]=> string(5) "MUJER" } Update id 49
array(2) { [0]=> string(2) "50" [1]=> string(7) "RELOJES" } Update id 50
array(2) { [0]=> string(2) "51" [1]=> string(17) "ELECTRONICA & USB" } Update id 51
array(2) { [0]=> string(2) "52" [1]=> string(22) "SEMINARIOS & CONGRESOS" } Update id 52
array(2) { [0]=> string(2) "53" [1]=> string(20) "OFICINA Y ESCRITORIO" } Update id 53
array(2) { [0]=> string(2) "54" [1]=> string(10) "BOLIGRAFOS" } Update id 54
array(2) { [0]=> string(2) "55" [1]=> string(8) "LLAVEROS" } Update id 55
array(2) { [0]=> string(2) "57" [1]=> string(9) "PACKAGING" } Update id 57

y asi hasta despues del if del insert osea no pasa para el if del insert el registro nuevo que se deberia insertar, no se que puede ser .... se te ocurre que podria ser

saludos y gracias por la ayuda
  #8 (permalink)  
Antiguo 13/04/2010, 09:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda con insert desde txt

podrías igualmente hacer lo siguiente:
Código PHP:
var_dump($data[0], $filas['idcategoria']); 
antes del if() para ver con que valores estas haciendo la comparación...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 13/04/2010, 09:45
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Duda con insert desde txt

No entendí bien eso de antes del select y después del select...

Si le haces un echo al insert, funciona? osea, te lo muestra?
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #10 (permalink)  
Antiguo 13/04/2010, 09:53
 
Fecha de Ingreso: marzo-2009
Ubicación: Santiago
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Duda con insert desde txt

Por el var_dump() que me comentas aparece esto :

string(2) "48" string(2) "48" Update id 48
string(2) "49" string(2) "49" Update id 49
string(2) "50" string(2) "50" Update id 50
string(2) "51" string(2) "51" Update id 51
string(2) "52" string(2) "52" Update id 52
string(2) "53" string(2) "53" Update id 53
string(2) "54" string(2) "54" Update id 54
string(2) "55" string(2) "55" Update id 55
string(2) "57" string(2) "57" Update id 57

entiendo que esta realizando la comparacion bien .... y por el echo al insert
el insert no aroja nada ..

gracias por tu ayuda
  #11 (permalink)  
Antiguo 13/04/2010, 10:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Duda con insert desde txt

en lugar de ejecutar la consulta, intenta imprimirla... y precisamente verificar que esté bien escrita...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 13/04/2010, 10:12
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Duda con insert desde txt

Entonces, si el echo del insert te arroja la sentencia Sql, cópiala y pégala, luego ejecútala directamente en mysql y ve que pasa...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #13 (permalink)  
Antiguo 14/04/2010, 18:44
 
Fecha de Ingreso: marzo-2009
Ubicación: Santiago
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Duda con insert desde txt

La consulta funciona sin ningun problema en mysql directamente, lo unico que logre ver despues de todas las pruebas que me recomendaron que directamente despues de :

Código PHP:
}else{

    
$import="INSERT into procategoria(idcategoria,nombrecat,catactiva) values('$data[0]','$data[1]','1')"
no ejecuta ninguna accion, no entiendo que puede tener mal la validacion del scripts ... a alguien mas se le ocurre que puede ser

muchas gracias por su ayuda
  #14 (permalink)  
Antiguo 23/04/2010, 22:51
 
Fecha de Ingreso: marzo-2009
Ubicación: Santiago
Mensajes: 9
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Duda con insert desde txt

No entiendo porque me amolestaron con este post, GatorV pero enfin solo queria ayuda pero ya lo solucione y devuelvo la mano.

Para los que necesitan insertar desde un archivo de texto validando que no esten los registros en la base de datos aca les dejo el codigo.


Código PHP:

include("../includes/configuracion.php");


$filename "../txt/categorias.txt";


$i=0;
foreach(
file("$filename") as $key => $value) {

if(
$temp=explode(";",$value)) {

      
$consultaRegistro mysql_query("SELECT idcategoria FROM procategoria WHERE idcategoria='$temp[0]'")or die(mysql_error());
      
$filas mysql_fetch_array($consultaRegistro);
      
     if(
$filas['idcategoria']==$temp[0]){
     
     
$sqlupdate "UPDATE procategoria SET nombrecat='$temp[1]' WHERE idcategoria='$temp[0]'";
     
$rs1 mysql_query($sqlupdate);
     
      echo 
"Update $temp[1]<br>";
     

      }else{
    
    
$sqlinsertar "INSERT INTO procategoria (idcategoria,nombrecat) VALUES ('$temp[0]','$temp[1]')";
    
$rs2 mysql_query($sqlinsertar);
          
     echo 
"insert $temp[1]<br>";
      
      }

$i++;
      }
   } 
Cambie la forma de tomar la informacion desde el archvio de texto en vez de utilizar fgetcsv ocupe foreach,

Espero les sirba.

y todabia no entiendo porque me amonestaron y me bajaron 3 puntos ja .... en fin no me voy a dar la paja de leer .. solamente devuelvo la mano y ya no me paseo mas por aca .. saludos

Etiquetas: insert, txt
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 09:51.