Foros del Web » Programando para Internet » PHP »

Problema al insertar valores en una BD.

Estas en el tema de Problema al insertar valores en una BD. en el foro de PHP en Foros del Web. Hola. Tengo un código que toma valores de un archivo CSV (Excel) que está de ésta forma: Código PHP: clave           nombre       id        apellidos          J                  juan           87        perez               J                 pedro         75        rodriguez B                  mario         98        gonzalez  Lo que ...
  #1 (permalink)  
Antiguo 26/06/2009, 16:02
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Problema al insertar valores en una BD.

Hola.

Tengo un código que toma valores de un archivo CSV (Excel) que está de ésta forma:

Código PHP:
clave           nombre       id        apellidos         

J                  juan           87        perez              
J                 pedro         75        rodriguez
B                  mario         98        gonzalez 
Lo que quiero es que suba estos valores y los acomode en una tabla, eso no es el problema, el problema es que, por ejemplo en clave tengo "J" en la primera fila, tengo que relacionar esa letra con otros valores que tengo en OTRA tabla en la BD, el valor sería algo como "J12345", pero hay más valores, supongamos que en la tabla ésa tengo los valores así:

Código PHP:
Tabla'tabla2'

clave completa                          (Campo)

J2485                                        (Valores)
B8789
J1589
B8796 
Ahora si en la primera fila del archivo CSV que estoy subiendo, la clave es "J", sólo debe de tomar en cuenta los que empiecen con la letra "J" y tomar el que sea más grande, en este caso sería "J2485", entonces quiero que ese valor se le sume uno y lo inserte en la tabla principal donde voy a subir todo, así igual con si cambia de "J" a "B" o viceversa y me quede algo así:

Código PHP:
Tabla'tabla_principal'
clave           nombre       id        apellidos         

J2486                juan      87        perez              
J2487                pedro    75        rodriguez
B8797               mario     98        gonzalez 

Aquí está el pedazo del código que hace eso, está CASI completo, pero me marca algunos errores:
Código PHP:
$data2=0;
while ((
$data fgetcsv($handle4096',')) !== FALSE) {
$data str_replace("'","''",$data);

if(
$data[0]!=$data2){

$sintaxis=$data[0]."%";


  
$query_Recordset "SELECT * from tabla2 WHERE clave_completa like '".$sintaxis."' order by clave_completa ASC limit 0,1";
$Recordset mysql_query($query_Recordset$conex) or die(mysql_error());
$row_Recordset mysql_fetch_assoc($Recordset);
$clave=$row_Recordset['llave'];
$data2=$data[0];
}
$clave++;
$import="INSERT into tabla_principal(clave,nombre,id,apellidos) values('$clave','$data[1]','$data[2]','$data[3]')";
$runq mysql_query($import) or die(mysql_error());
echo 
$import;
echo 
"<br>";

Y me marca éstos errores:

Código PHP:
NoticeUndefined variableclave in C:wampwwwsitiopruebacsv2.php on line 41

Notice
Undefined offset1 in C:wampwwwsitiopruebacsv2.php on line 42

Notice
Undefined offset2 in C:wampwwwsitiopruebacsv2.php on line 42

Notice
Undefined offset3 in C:wampwwwsitiopruebacsv2.php on line 42

Notice
Undefined offset4 in C:wampwwwsitiopruebacsv2.php on line 42 
Ésta es la línea 42:
Código PHP:
$import="INSERT into tabla_principal(clave,nombre,id,apellidos) values('$clave','$data[1]','$data[2]','$data[3]')"
Espero puedan ayudarme, por más que le busco al código no le encuentro el problema, gracias de antemano.

Saludos.
  #2 (permalink)  
Antiguo 26/06/2009, 17:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema al insertar valores en una BD.

Código php:
Ver original
  1. // Despues de:
  2. $Recordset = mysql_query($query_Recordset, $conex) or die(mysql_error());
  3. // Verifica si hay resultados para mostrar
  4. if(mysql_num_rows($Recordset) < 1)
  5.     continue; // Si no los hay, continua el while con el siguiente registro
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 26/06/2009, 17:15
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Problema al insertar valores en una BD.

Hice eso que me dijiste, lo puse así:

Código PHP:
  $query_Recordset "SELECT * from tabla2 WHERE clave_completa like '".$sintaxis."' order by clave_completa ASC limit 0,1"
$Recordset mysql_query($query_Recordset$conex) or die(mysql_error());
if(
mysql_num_rows($Recordset) < 1)
    continue;
$row_Recordset mysql_fetch_assoc($Recordset); 
Y me sigue marcando los mismos errores, además de que no se guarda la 'clave' como quiero. ¿Alguna idea?

Saludos y gracias por tu ayuda.
  #4 (permalink)  
Antiguo 28/06/2009, 14:28
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Problema al insertar valores en una BD.

¿Alguien tiene alguna idea?

Gracias de antemano, saludos.
  #5 (permalink)  
Antiguo 29/06/2009, 09:07
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Problema al insertar valores en una BD.

Me interesa mucho resolver este problema, y no encuentro por donde, ¿alguien sabe qué es lo que está mal o me falta poner?

Disculpen la insistencia, saludos.
  #6 (permalink)  
Antiguo 29/06/2009, 11:45
Avatar de lukas4  
Fecha de Ingreso: octubre-2008
Ubicación: frente al pc
Mensajes: 496
Antigüedad: 15 años, 6 meses
Puntos: 12
Respuesta: Problema al insertar valores en una BD.

mira, checate este post, tal vez te sirva:

http://www.forosdelweb.com/f18/probl...offset-564497/
  #7 (permalink)  
Antiguo 29/06/2009, 12:02
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Problema al insertar valores en una BD.

El problema es que no son valores indefinidos, ya que sí me los inserta en las tablas de la BD, pero me sigue marcando el error.

Además, aún sigo trabado con el problema de relacionar la otra tabla de la BD, con la primera columna del archivo CSV. Espero puedan ayudarme.

Saludos y gracias por tu ayuda.
  #8 (permalink)  
Antiguo 30/06/2009, 11:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema al insertar valores en una BD.

Revisa lo que tienes en $row_Recordset antes de agregar los datos a la tabla:

Código php:
Ver original
  1. echo '<pre>';
  2. var_dump($row_Recordset);
  3. echo '</pre>';
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 30/06/2009, 12:25
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Problema al insertar valores en una BD.

Ésto es lo que me devuelve:

Código PHP:
bool(false
Pego el código completo, por si acaso, gracias por tu ayuda.

Código PHP:
<?php
require_once('Connections/conex.php');
mysql_select_db($database_conex$conex);
//DbOpen();
echo '<form action="' $_SERVER['PHP_SELF'] . '" method="post" enctype="multipart/form-data">';
if(isset(
$_POST['submit'])) {
 
if (
move_uploaded_file($_FILES['filename']['tmp_name'], "archivo.csv")) {
echo 
"File sucessfully uploaded."."<BR>";
$filename "archivo.csv";
$handle fopen($filename'r');
} else {
echo 
"Error : " $uploaddir basename($_FILES['filename']['name'])  . '\n' $_FILES['filename']['error'] . "<BR>";

 
$data2='S';
 
while ((
$data fgetcsv($handle4096',')) !== FALSE) {
$data str_replace("'","''",$data);
 
$prueba=$data[0]; /// M
 
if($prueba!=$data2){
 
$sintaxis=$prueba."%";
 
$query_Recordset "SELECT * from tabla2 WHERE clave_completa like '".$sintaxis."' order by clave_completa DESC limit 0,1";
$Recordset mysql_query($query_Recordset$conex) or die(mysql_error());
$row_Recordset mysql_fetch_assoc($Recordset);
$totalRows_Recordset mysql_num_rows($Recordset);
$clave=$row_Recordset['llave'];
 
 
 
$clave++;
 
$data2=$prueba// se asigna el valor anterior para poder comparar en el if
}
 
 
$import="INSERT into tabla_principal(clave,nombre,id,apellidos) values('$clave','$data[1]','$data[2]','$data[3]')";
$import2="INSERT into tabla2(clave_completa) values('".$clave."')";
$runq mysql_query($import) or die(mysql_error());
$runq2 mysql_query($import2) or die(mysql_error());
echo 
$import;
echo 
"<br>";
}
fclose($handle);
print 
"Import done";
 
}
else {
print 
"Type file name to import:<br>";
print 
"<input type='file' name='filename' size='20'><br>";
print 
"<input type='submit' name='submit' value='submit'>";
}
$import="select * from tabla_principal";
$runq mysql_query($import) or die(mysql_error());
$import2="select * from tabla2";
$runq2 mysql_query($import2) or die(mysql_error());
 
//DbClose();
?>
Saludos.
  #10 (permalink)  
Antiguo 01/07/2009, 08:14
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Problema al insertar valores en una BD.

Revivo el tema para ver si alguien puede ayudarme.

Saludos.
  #11 (permalink)  
Antiguo 02/07/2009, 07:47
 
Fecha de Ingreso: junio-2009
Mensajes: 250
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Problema al insertar valores en una BD.

Ya le moví al código y creo que lo tengo casi completo :

Código PHP:
<?php
require_once('Connections/conex.php');
mysql_select_db($database_conex$conex);
if(isset(
$_POST['submit']))
{
 if (
move_uploaded_file($_FILES['filename']['tmp_name'], "archivo.csv"))
 {
  echo 
"File sucessfully uploaded."."<BR>";
  
$filename "archivo.csv";
  
$handle fopen($filename'r');
  }
 else
 {
  echo 
"Error : " $uploaddir basename($_FILES['filename']['name'])  . '\n' $_FILES['filename']['error'] . "<BR>";
  }
 
$data2='S';
 
$sw=0;
 while ((
$data fgetcsv($handle4096',')) !== FALSE)
 {
  
$data str_replace("'","''",$data);
  
$prueba $data[0]; /// M
  
if(!empty($sw))
  {
   if(
$prueba!=$data2)
   {
    
$sintaxis=$prueba."%";
    
$query_Recordset "SELECT * from tabla2 WHERE clave_completa like '".$sintaxis."' order by clave_completa DESC limit 0,1";
    
$Recordset mysql_query($query_Recordset$conex) or die(mysql_error());
    
$row_Recordset mysql_fetch_assoc($Recordset);
    
$clave_completa $row_Recordset['clave_completa'];
    
$clave=explode($prueba,$clave_completa);
    
$clave[1]++;
    
$clave$prueba.$clave[1];
    
$import="INSERT INTO tabla_principal(clave,nombre,id,apellidos) values('$clave','$data[1]','$data[2]','$data[3]')";
    
$import2="UPDATE tabla2 SET clave_completa = '$clave' WHERE clave_completa= '$clave_completa";
    
$runq mysql_query($import) or die(mysql_error());
    
$runq2 mysql_query($import2) or die(mysql_error());
    }
   }
  
$sw=1;
  }
 
fclose($handle);
 print 
"Import done";
 }
else
{
 echo 
'<form action="#" method="post" enctype="multipart/form-data">
          Select file to import:<br>
          <input type="file" name="filename" size="20"><br>
          <input type="submit" name="submit" value="submit">
          </form>'
;
 }
//$import="select * from main_table";
//$runq = mysql_query($import) or die(mysql_error());
//$import2="select * from table2";
//$runq2 = mysql_query($import2) or die(mysql_error());
//DbClose();
?>
Y me marca sólamente estos errores:

Código PHP:
NoticeUndefined offset1 in site on line 42

You have an error in your SQL syntax
check the manual that corresponds to your MySQL server version for the right syntax to use near ''at line 1 
Ésta es la línea 42:

Código PHP:
 $clave[1]++; 
¿Alguna idea para resolver esto?

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 14:53.