Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema importazione CSV in php

    Salve a tutti, ho scritto questo pezzo di codice:


    codice:
    <? 
    	include_once 'connessione_db.php'; 
    
    	
    	if(($invio=="Carica il nuovo listino")&&($listino_name!=""))
    	{
    		
    		$listino_name=str_replace("\'", "_", $listino_name);
    		$listino_name=str_replace("%20", "_", $listino_name);
    		$listino_name=str_replace(" ", "_", $listino_name);
    		if(!copy($listino, "listini_caricati/$listino_name"))
    		{
    			echo "Caricamento non riuscito
    ";
    		}
    		else
    		{
    			aggiorna_listino($listino,";");
    		}
    	}
    ?>
    
    	<center>
    	
    
    
    	
    
    
    	<form method="post" action="leggi_csv.php" enctype="multipart/form-data">
    		<table border="1">
    			<tr>
    				<td>
    					Inserisci il nuovo listino
    				</td>
    				<td>
    					<input type="file" name="listino" id="listino">
    				</td>
    			</tr>
    			<tr>
    				<td colspan="2" align="center">
    					<input type="submit" name="invio" value="Carica il nuovo listino">
    				</td>
    			</tr>
    		</table>
    	</form>
    
    
    
    
    
    
    
    <?
    
    function aggiorna_listino( $file, $delimiter) 
    {
    	//apro il file
    	if (($fp = fopen($file, "r")) != false) 
    	{
    	//per ogni riga del file...
    		$res=mysql_query($query);
    		$num=mysql_num_rows($res); 
    
    		for ($i=0;$i<$num;$i++)  //cancello tutte le righe della tabella prezzi e relative righe della tabella livello
    		{
    			$id_prezzo=mysql_result($res,$i,"id_prezzo");
    			$id_prodotto=mysql_result($res,$i,"id_prodotto");
    			
    			$query2="delete from livello where id='$id_prodotto'";
    			$res2=mysql_query($query2);
    			
    			$query2="delete from prezzi where id_prezzo='$id_prezzo'";
    			$res2=mysql_query($query2);
    		}
    		$i=0;
    		while (($data = fgetcsv($fp, 1000, $delimiter)) != false) 
    		{
    			$tipo=addslashes(htmlentities($data[6]));
    			$descrizione=addslashes(htmlentities($data[3]));
    			$prezzo=$data[7];
    			$id_prezzo=$data[0];
    			$id_prodotto=$data[1];
    			$produttore=addslashes(htmlentities($data[4]));
    			$nome=addslashes(htmlentities($data[5]));
    			$online=$data[8];
    			$dimensioni=addslashes(htmlentities($data[9]));
    			$materiale[10]=addslashes(htmlentities($data[10]));
    			$tipo_lampadina=addslashes(htmlentities($data[11]));
    			$colore=addslashes(htmlentities($data[12]));
    			$altre_misure=addslashes(htmlentities($data[13]));
    			$completata_da=addslashes(htmlentities($data[14]));
    			
    			$query="insert into prezzi (id_prezzo, id_prodotto, tipo, prezzo, valuta) values ('$id_prezzo','$id_prodotto','$tipo','$prezzo', '€')";
    			$res=mysql_query($query);
    			
    			$query2="insert into livello (id, id_n, descrizione, produttore_l, nome, on_line, dimensioni_l, materiale_l, tipo_lampadina_l, colore_l, altre_misure_l, completata_da_l) values ('$data[1]', '$data[2]', '$descrizione', '$produttore', '$nome', '$online', '$dimensioni', '$materiale', '$tipo_lampadina', '$colore', '$altre_misure', '$completata_da')";
    			$res2=mysql_query($query2);
    		}
    		$query3="delete from prezzi where tipo='TIPO'";
    		$res3=mysql_query($query3);
    		
    		$query4="delete from livello where descrizione='DESCRIZIONE'";
    		$res4=mysql_query($query4);
    		
    		
    		fclose($fp);
    	}
    	else
    	{
    		echo "File non trovato
    ";
    	}
    	return 0;
    }
    ?>

    Che salva sull'ftp un file csv inserito dall'utente, poi lo legge e salva nel DB i dati letti...tutto ok, se non fosse che nella tabella prezzi mi salva i campi 2 volte o_O

    avete qualche idea del perchè?

  2. #2
    aggiornamento:

    ho trovato l'errore, nelle varie prove che avevo fatto mi ero scordato un $query="select * from prezzi order by prezzi"...ora l'ho aggiunto e non duplica più i risultati

    (praticamente non è che li duplicasse...semplicemente non li cancellava :P )


    ora però mi salva più righe del previsto nella tabella livello...294 anzichè 229 o_O

  3. #3
    Difficilmente gli script "sbagliano", più che altro siamo noi che sbagliamo qualcosa senza accorgercene...

    Controlla bene e vedrai che troverai l'errore

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.