Hola nuevamente,
te paso un ejemplo como guia solamente, ya que no conosco tu caso particular.
Supongamos que tenes una tabla de personas te quedaria algo asi:
Código:
+++++++++++++++++++
ID + NOMBRE + DNI +
+++++++++++++++++++
1 + MARCOS + 123 +
2 + MARIA + 234 +
3 + JOSE + 345 +
Tu archivo CSV seria igual, a excepcion del ID que supongamos es autonumerico.
Código:
++++++++++++++
NOMBRE + DNI +
++++++++++++++
MARCOS + 123 +
MARIA + 234 +
JOSE + 345 +
Yo haria algo asi:
1 - Upload simple a un directorio llamado "temp" con permiso de lectura y escritura
2 - Apertura del archivo subido
3 - Cadena SQL para la insercion en la DB
4 - Confirmacion exitosa o no de la operacion
Archivo "carga_csv.php"
Código PHP:
<?php
if(isset($_POST['up'])){
$result = 'mal';
if($_FILE['csv']['name']!=''){ // VERIFICAMOS SI TRAE ALGO
if(is_uploaded_file($_FILE['csv']['tmp_name'])){ // SE REALIZO EL UPLOAD?
$nombre_temporal = 'CSV_'.time().'.csv'; // CREAMOS UN NOMBRE CON LA MARCA DE TIEMPO
if(copy($_FILE['csv']['tmp_name'],'temp/'.$nombre_temporal)){ // LO COPIAMOS AL DIRECTORIO TEMP
$tmpSQL = array(); // DECLARAMOS UN ARRAY EN DONDE ESTARAN LOS DATOS PARA DESPUES COMPLETAR EL SQL
$fp = fopen('temp/'.$nombre_temporal,'r'); // ABRIMOS EL ARCHIVO
while(($linea = fgetcsv($fp,1000,';','"'))!==FALSE){ // RECORREMOS EL ARCHIVO HASTA EL FIN DE LINEA, SE ESPECIFICA SEPARADOR DE CAMPOS
if($linea[0]!='' && $linea[1]!=''){ // QUE NO SEA UNA LINEA EN BLANCO
$tmpSQL[] = "('".$linea[0]."','".$linea[1]."')";
}
}
fclose($fp); // CERRAMOS EL ARCHIVO, NO SE NECESITA MAS
if(count($tmpSQL)>0){ // SI TIENE AL MENOS UN ELEMENTO HAREMOS EL INSERT
$SQL = "INSERT INTO personas(NOMBRE,DNI) VALUES".implode(',',$tmpSQL); // ACOMODO EL ARRAY CREADO ANTERIORMENTE EN LA CADENA SQL FINAL
$r = mysql_query($SQL);
if($r) $result = 'ok';
}
}
}
}
// REDIRECCIONAMOS HACIA ESTA MISMA PAGINA CON LA VARIABLE DE RESULTADO
header('Location: '.$_SERVER['PHP_SELF'].'?result='.$result);exit();
}
?>
Código HTML:
<form name="frm" action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" enctype="multipart/form-data">
<label><input name="csv" type="file" /> Archivo CSV</label>
<input type="hidden" name="up" />
<input type="submit" value="Cargar..." />
</form>
Tanto el codigo PHP como el HTML estarian en la misma pagina, como es corto....
Es solo un ejemplo, tal cual puede no funcionar, pero mas o menos es la logica de como lo haria, antes del insert habria que tener una conexion abierta al servidor MySQL, verificar que realmente es un CSV, que la cantidad de campos es la correcta, etc, pero creo que como referencia te podria servir.
Saludos!