CSV doppi apici e punto e virgola da Excel tramite PHP

  • Creatore Discussione Creatore Discussione nofcfro
  • Data di inizio Data di inizio

nofcfro

Utente Attivo
27 Mag 2012
72
0
6
Salve a tutti,
questo script php permette di caricare un file csv. Tuttavia accetta una formattazione punto e virgola e doppi apici, ovvero: "gianni";"rossi";"23", tuttavia quando si esporta da Excel in formato csv la formattazione è gianni;rossi;23. Come si può creare una formattazione come la prima da excel? oppure si può modificare lo script in modo da accettare la seconda formattazione?

PHP:
// Apro la connessione al DB
// ------
// ------


// Recupero il file
$file = $_FILES['filecsv'];

$nome_file = $file['tmp_name']; # Nome temporaneo file
$size_file = $file['size']; # Dimensione file

// Controllo che il file sia stato inserito e che quindi esista
if ( ($handle = fopen($nome_file, "r") ) !== FALSE) {
	// Uso un contatore per vedere se sono nella prima riga dei campi
	$cont = 0;
	
	// Uso la funzione fgetcsv per recuperare le informzioni nel modo corretto dal CSV
	// Il secondo parametro è la dimesione del file, che abbiamo recuperato sopra	
	// Come si vede il 3 parametro è il separatore dei campi (;)
	// Il separatore per ogni riga in automatico è l'a capo
	while ( ( $data = fgetcsv($handle, $size_file, ";") ) !== FALSE ) {
		if ( $cont == 0 ) {
			$cont++;
			
			// Assegno ad una variabile $campi_tabella, la prima riga del nome dei campi del CSV
			$campi_tabella = $data;
		}
		else {
			// Recupero i nomi dei campi
			$campo_nome = $campi_tabella[0];
			$campo_cognome = $campi_tabella[1];
			$campo_indirizzo = $campi_tabella[2];
			$campo_mail = $campi_tabella[3];
			$campo_telefono = $campi_tabella[4];			
			
			// Recupero i valori dei campi
			$nome = $data[0];
			$cognome = $data[1];
			$indirizzo = $data[2];
			$mail = $data[3];
			$telefono = $data[4];

			// Creo una query di inserimento e la eseguo
			$sql = "
				INSERT INTO utenti SET 
					$campo_nome = '$nome',
					$campo_cognome = '$cognome',
					$campo_indirizzo = '$indirizzo',
					$campo_mail = '$mail',
					$campo_telefono = '$telefono'
			";
			$rssql = mysql_query( $sql );
			
			// Controllo che l'importazione sia avvenuta con successo
			echo ( $rssql ) ? "Importazione avvenuta con successo" : "Errore nella query o connessione al DB mancante";			
		}
	}
}
else
	echo "Nessun file inserito";
 
Ciao, sei sicuro che lo script permette solamente di importare file csv con i dati tra i doppi apici? perchè l'ho sto usando e importo file che non hanno ".
 

Discussioni simili