Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/03/2012, 11:27
marx-pola
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años
Puntos: 1
Problema al relacionar tablas con archivo csv.

Hola a todos! Me surgió un problema inesperado en este código. Resulta que en el momento que me ayudaron a resolver este tema (AQUÍ MISMO) no me percaté de algo... fíjense en el id_categoría nro. 4... al tener solo 2 caractares, cuando hace la comparación para crear la relación ME DEVUELVE CERO

Creo que el problema está en esta líena del código: $idcategoria=$categoria[substr($data[3],0,3)];
¿Puede ser? ¿Se puede corregir para que me tome si hay 2 o 3 caracteres para que lo realice igual?
Les muestro como serían las tablas y el código más abajo que uso:
tabla CATEGORIA
Código:
id_categoria 	desc_categoria 	cod_categoria
1               Abrazaderas     ABR
2               Garef 	        GAR
3               Antenas 	ANT
4               Carbones G.V.   GV
tabla LINEAS
Código:
id_linea | desc_linea         | relacion | cod_linea
1        | Banda Mini         | 1        | ABR01
2        | Banda Standard     | 1        | ABR02
3        | Banda Reforzada    | 1        | ABR03
4 	 | Reguladores  A     | 2        | GAR01
5 	 | Reguladores  B     | 2        | GAR02
6        | Antenas A          | 3        | ANT01
7        | Antenas B          | 3        | ANT02
8        | Carbones A         | 0        | GV 01
9        | Carbones B         | 0        | GV 02
.......
Código PHP:
$row 1;
$fp fopen ('productos.csv','r'); 

$categoria=array();
$result=mysql_query("select * from categoria");
while(
$row=mysql_fetch_array($result)) $categoria[$row['cod_categoria']]=$row['id_categoria'];  

while (
$data fgetcsv ($fp1000";")) 

    
$num count ($data); 
    print 
" <br>"
    
$row++; 
    
    echo 
"$row- ".$data[4].$data[3];
     
    foreach (
$data as $pos=>$dato) { 
        
$data[$pos] = trim($dato);
    } 
  
    if (!
in_array($data[3],$ids)) {
       
   
$ids[] = $data[3];

   
$idcategoria=$categoria[substr($data[3],0,3)];  

   
$insertar="INSERT INTO lineas (desc_linea,relacion,cod_linea) VALUES ('$data[4]','$idcategoria','$data[3]')"
    
mysql_query($insertar);
    }

fclose ($fp); 
El máximo de caracteres que tiene que chequear son 3... más NO.
¿Se puede corregir para que me tome si hay 2 o 3 caracteres para que lo realice igual?

Muchas gracias a todos y saludos.
Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.