Foros del Web » Programando para Internet » PHP »

Importacion de csv a mysql con php

Estas en el tema de Importacion de csv a mysql con php en el foro de PHP en Foros del Web. Hola amigos, estoy con un problema, tengo este php de la exportacion de mi tabla: Cita: <?php header ("Last-Modified: " . gmdate("D,d M YH:i:s") . ...
  #1 (permalink)  
Antiguo 09/12/2016, 08:22
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 10 meses
Puntos: 1
Importacion de csv a mysql con php

Hola amigos, estoy con un problema, tengo este php de la exportacion de mi tabla:

Cita:
<?php
header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header ("Content-type: application/x-msexcel");
header ("Content-Disposition: attachment; filename=Sancus.xls" );
//Conexion MySQL
$link=mysql_connect('localhost','user','password') ;

mysql_select_db('basededatos',$link); //-Seleccion Database

$query='SELECT code,name,description,cost_price,sell_price,discou nt_price,rent_price_15_days,rent_price_45_days,sto ck,stock_rental,size,providers_id,brands_id,provid er_code FROM items '; // Script SQL
$result=mysql_query($query,$link);//-Consulta

$field = mysql_num_fields( $result ); //-Número de Columnas

// Resultado
echo '<table>';
//Mostrando los nombres de Columnas
for ( $i = 0; $i < $field; $i++ ) {
echo '<td>'.mysql_field_name( $result, $i ).'</td>'; } //Mostrando Registros
while($row=mysql_fetch_array($result)){
echo '<tr>';
for ( $i = 0; $i < $field; $i++ ) { echo '<td>'.$row[$i].'</td>'; }
echo '</tr>';
}
echo '</table>';
//Cerrando la Conexion
mysql_close($link);
?>
El cual me funciona correctamente y me exporta mi DB a excel sin problemas.

Y tengo este otro php que es el de importación:

Cita:
<!DOCTYPE html>
<body>
<h1>Importando archivo CSV</h1>
<form action='<?php echo $_SERVER["PHP_SELF"];?>' method='post' enctype="multipart/form-data">
Importar Archivo : <input type='file' name='sel_file' size='20'>
<input type='submit' name='submit' value='submit'>
</form>
</body>
</html>

<?php

//conexiones, conexiones everywhere
ini_set('display_errors', 1);
error_reporting(E_ALL);
$db_host = 'localhost';
$db_user = 'user';
$db_pass = 'password';

$database = 'basededatos';
$table = 'items';
if (!mysql_connect($db_host, $db_user, $db_pass))
die("No se pudo establecer conexión a la base de datos");

if (!mysql_select_db($database))
die("base de datos no existe");
if(isset($_POST['submit']))
{
//Aquí es donde seleccionamos nuestro csv
$fname = $_FILES['sel_file']['name'];
echo 'Cargando nombre del archivo: '.$fname.' ';
$chk_ext = explode(".",$fname);

if(strtolower(end($chk_ext)) == "csv")
{
//si es correcto, entonces damos permisos de lectura para subir
$filename = $_FILES['sel_file']['tmp_name'];
$handle = fopen($filename, "r");

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
//Insertamos los datos con los valores...
$sql = "INSERT into items(code,name,description,cost_price,sell_price, discount_price,rent_price_15_days,rent_price_45_da ys,stock,stock_rental,size,providers_id,brands_id, provider_code) values('$code[code]','$name[name]','$description[description]','$cost_price[cost_price]','$sell_price[sell_price]','$discount_price[discount_price]','$rent_price_15_days[rent_price_15_days]','$rent_price_45_days[rent_price_45_days]','$stock[stock]','$stock_rental[stock_rental]','$size[size]','$providers_id[providers_id]','$brands_id[brands_id]','$provider_code[provider_code]')";
mysql_query($sql) or die(mysql_error());
}
//cerramos la lectura del archivo "abrir archivo" con un "cerrar archivo"
fclose($handle);
echo "Importación exitosa!";

}
else
{
//si aparece esto es posible que el archivo no tenga el formato adecuado, inclusive cuando es cvs, revisarlo para //ver si esta separado por " , "
echo "Archivo invalido!";
}
}

?>
El problema radica que cuando quiero subir el archivo me genera este error:

Notice: Undefined variable: code in /home/admin/domains/ddominio.com/public_html/importar.php on line 43


Alguien podria ayudarme

Salu2 y gracias
  #2 (permalink)  
Antiguo 09/12/2016, 08:59
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Importacion de csv a mysql con php

Eso sucede porque no tienes declarada la variable. Por lo general los errores NOTICE no son significativos (a menos que te sea totalmente necesario).

En tu código tienes esta línea

error_reporting(E_ALL);

Eso hace que el código sea totalmente estricto con los errores. Quitandolo debería "funcionar" de todos modos siempre deberías declarar tus variables.
  #3 (permalink)  
Antiguo 09/12/2016, 09:16
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Importacion de csv a mysql con php

muchas gracias lo pruebo y te confirmo
  #4 (permalink)  
Antiguo 09/12/2016, 09:23
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Importacion de csv a mysql con php

ahi lo probe y me tira el siguiente mensaje
Cargando nombre del archivo: Prueba.csv Duplicate entry '' for key 2

en realidad lo que necesito es que me actualice la tabla que tengo

Salu2
  #5 (permalink)  
Antiguo 09/12/2016, 09:55
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 21 años
Puntos: 154
Respuesta: Importacion de csv a mysql con php

Hola hollowmanf,

El script de importación lo que hace es insertar los datos, si lo que necesitas es actualizar, deberías modificar esa parte:

Código PHP:
Ver original
  1. //Insertamos los datos con los valores...
  2. $sql = "INSERT into items(code,name,description,cost_price,sell_price, discount_price,rent_price_15_days,rent_price_45_da ys,stock,stock_rental,size,providers_id,brands_id, provider_code) values('$code[code]','$name[name]','$description[description]','$cost_price[cost_price]','$sell_price[sell_price]','$discount_price[discount_price]','$rent_price_15_days[rent_price_15_days]','$rent_price_45_days[rent_price_45_days]','$stock[stock]','$stock_rental[stock_rental]','$size[size]','$providers_id[providers_id]','$brands_id[brands_id]','$provider_code[provider_code]')";

Ahí claramente te está diciendo que inserta los datos, lo que debería hacer es actualizarlos, pero para eso, es conveniente que tengas un identificador del registro que deseas actualizar, en caso contrario, te actualizará todos...
  #6 (permalink)  
Antiguo 09/12/2016, 10:56
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Importacion de csv a mysql con php

muchas gracias probare y te cuento como me fue

Etiquetas: csv, importacion, mysql, registro, select, sql, tabla
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:44.