Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Non funziona upload file .csv con insert record in tabella

    Ciao,
    sto cominciando a imparare il php attraverso vari tutorial in rete e ho un mio sito di test in Joomla sul quale sto provando per ora qualche funzione di base.

    Attualmente sto provando a accodare dei record presenti in un file .csv a una tabella del db.

    In rete ho trovato del codice che ho riadattato al mio caso ma non riesco a farlo funzionare.

    Parto da una pagina "insert.php" :
    codice:
    <?php $db = "XXX";
     $host = "xxx";
     $username = "xxx";
     $password = "xxx";
     $conn = mysql_connect($host,$username,$password);
     if (!$conn)
     {
     die('Could not connect: ' . mysql_error());
     }
     else
     {
     echo 'Connected to MySql'
     }
     mysql_select_db($db,$conn) or die('not connected to db' . mysql_error());
    
     if (!mysql_select_db)
     {
     die('Could not connect to db: ' . mysql_error());
     }
     else { echo 'Connected to db';
     }
     ?>
    
     <form action='insert_data.php' method='POST' enctype='multipart/form-data'>
     Import File : <input type='file' name='sel_file' id='sel_file'>
     <input type='submit' name='submit' value='SUBMIT'>
     </form>
    
    <?php
     HtmlFooter();
     ?>
    La prima parte l'ho inserita per controllare la corretta connessione al mio DB e mi dà risultato corretto.

    Questa è la "insert_data.php" che mi dovrebbe caricare il file che seleziono, trasformare le righe in un array e accodare i valori alla tabella "sti_esami" tramite la query sql :

    codice:
    <?php
         $fname = $_FILES['sel_file']['name'];
        
         $filename = $_FILES['sel_file']['tmp_name'];
         $handle = fopen($filename, "r");
         echo $filename;
         echo $handle;
    	 
         while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
         {
             $sql = "INSERT into sti_esami(esame,descrizione,codice) values('$data[0]','$data[1]','$data[2]')";
             mysql_query($sql)
    	 }
    		 
    	 echo "Records added";
    	 
    ?>
    Qualche "echo" l'ho inserito solo per controllare passo passo che funzionassero correttamente le funzioni. Beh in conclusione funziona tutto ma non il "while", mi viene restituito "Errore del Server - 500"

    Il file .csv è un semplice :

    "Aaaa;Bbbbb bbbb;12345"

    Qualcuno mi sa aiutare e dirmi dove sbaglio?

    Grazie

  2. #2

    Re: Non funziona upload file .csv con insert record in tabella

    Originariamente inviato da Simonetgl
    Ciao,
    sto cominciando a imparare il php attraverso vari tutorial in rete e ho un mio sito di test in Joomla sul quale sto provando per ora qualche funzione di base.

    Attualmente sto provando a accodare dei record presenti in un file .csv a una tabella del db.

    In rete ho trovato del codice che ho riadattato al mio caso ma non riesco a farlo funzionare.

    Parto da una pagina "insert.php" :
    codice:
    <?php $db = "XXX";
     $host = "xxx";
     $username = "xxx";
     $password = "xxx";
     $conn = mysql_connect($host,$username,$password);
     if (!$conn)
     {
     die('Could not connect: ' . mysql_error());
     }
     else
     {
     echo 'Connected to MySql'
     }
     mysql_select_db($db,$conn) or die('not connected to db' . mysql_error());
    
     if (!mysql_select_db)
     {
     die('Could not connect to db: ' . mysql_error());
     }
     else { echo 'Connected to db';
     }
     ?>
    
     <form action='insert_data.php' method='POST' enctype='multipart/form-data'>
     Import File : <input type='file' name='sel_file' id='sel_file'>
     <input type='submit' name='submit' value='SUBMIT'>
     </form>
    
    <?php
     HtmlFooter();
     ?>
    La prima parte l'ho inserita per controllare la corretta connessione al mio DB e mi dà risultato corretto.

    Questa è la "insert_data.php" che mi dovrebbe caricare il file che seleziono, trasformare le righe in un array e accodare i valori alla tabella "sti_esami" tramite la query sql :

    codice:
    <?php
         $fname = $_FILES['sel_file']['name'];
        
         $filename = $_FILES['sel_file']['tmp_name'];
         $handle = fopen($filename, "r");
         echo $filename;
         echo $handle;
    	 
         while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
         {
             $sql = "INSERT into sti_esami(esame,descrizione,codice) values('$data[0]','$data[1]','$data[2]')";
             mysql_query($sql)
    	 }
    		 
    	 echo "Records added";
    	 
    ?>
    Qualche "echo" l'ho inserito solo per controllare passo passo che funzionassero correttamente le funzioni. Beh in conclusione funziona tutto ma non il "while", mi viene restituito "Errore del Server - 500"

    Il file .csv è un semplice :

    "Aaaa;Bbbbb bbbb;12345"

    Qualcuno mi sa aiutare e dirmi dove sbaglio?

    Grazie
    A colpo d'occhio non vedo dove "salvi" il file caricato!! fai l'upload, ma dovresti salvarlo in una cartella con i vari permessi di scrittura...il dubbio si fa più certo quando mi dici che l'errore e di tipo 500 ovvero non trova qualcosa! Io credo non trovi il file CSV!

  3. #3
    E quindi cosa dovrei scrivere per farlo salvare da qualche parte, oppure per far pescare il file (già uploadato) da una cartella del server??

    Grazie x la risposta.

  4. #4
    ma perche' non utilizzi LOAD DATA [LOCAL] INFILE ?

    http://dev.mysql.com/doc/refman/5.1/en/load-data.html

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5

    Re: Non funziona upload file .csv con insert record in tabella

    Originariamente inviato da Simonetgl
    Ciao,
    sto cominciando a imparare il php attraverso vari tutorial in rete e ho un mio sito di test in Joomla sul quale sto provando per ora qualche funzione di base.

    Attualmente sto provando a accodare dei record presenti in un file .csv a una tabella del db.

    In rete ho trovato del codice che ho riadattato al mio caso ma non riesco a farlo funzionare.

    Parto da una pagina "insert.php" :
    codice:
    <?php $db = "XXX";
     $host = "xxx";
     $username = "xxx";
     $password = "xxx";
     $conn = mysql_connect($host,$username,$password);
     if (!$conn)
     {
     die('Could not connect: ' . mysql_error());
     }
     else
     {
     echo 'Connected to MySql'
     }
     mysql_select_db($db,$conn) or die('not connected to db' . mysql_error());
    
     if (!mysql_select_db)
     {
     die('Could not connect to db: ' . mysql_error());
     }
     else { echo 'Connected to db';
     }
     ?>
    
     <form action='insert_data.php' method='POST' enctype='multipart/form-data'>
     Import File : <input type='file' name='sel_file' id='sel_file'>
     <input type='submit' name='submit' value='SUBMIT'>
     </form>
    
    <?php
     HtmlFooter();
     ?>
    La prima parte l'ho inserita per controllare la corretta connessione al mio DB e mi dà risultato corretto.

    Questa è la "insert_data.php" che mi dovrebbe caricare il file che seleziono, trasformare le righe in un array e accodare i valori alla tabella "sti_esami" tramite la query sql :

    codice:
    <?php
         $fname = $_FILES['sel_file']['name'];
        
         $filename = $_FILES['sel_file']['tmp_name'];
         $handle = fopen($filename, "r");
         echo $filename;
         echo $handle;
    	 
         while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
         {
             $sql = "INSERT into sti_esami(esame,descrizione,codice) values('$data[0]','$data[1]','$data[2]')";
             mysql_query($sql)
    	 }
    		 
    	 echo "Records added";
    	 
    ?>
    Qualche "echo" l'ho inserito solo per controllare passo passo che funzionassero correttamente le funzioni. Beh in conclusione funziona tutto ma non il "while", mi viene restituito "Errore del Server - 500"

    Il file .csv è un semplice :

    "Aaaa;Bbbbb bbbb;12345"

    Qualcuno mi sa aiutare e dirmi dove sbaglio?

    Grazie
    Ti rispondo velocemente..
    crea una certella "upload" e prova ad aggiungere prima del wile:

    move_uploaded_file($_FILES['sel_file']['tmp_name'],
    "upload/" . $_FILES['sel_file']['tmp_name']);

    echo "File salavto in: " . "upload/" . $_FILES["file"]["name"];

    non posso testare adesso vado a naso, sono in ufficio ;-) !!!
    fammi sapere
    ciao

  6. #6
    Sembra proprio che comunque il file già alla base non venga importato nemmeno nella /tmp.

    Infatti in essa non trovo il file che dovrebbe avere "tmp_name", anche senza spostarlo nella "upload/" né applicarci poi la query sql di inserimento nella tabella.

    Nel caso in cui invece il file temporaneo "giustamente" non si riesca a vedere nella "/temp", ho provato a spostarlo nella cartella che voglio con la funzione che mi hai suggerito ma non ne vedo traccia.

    Devo avere qualche permesso particolare alla base del mio spazio web?

  7. #7
    Originariamente inviato da Simonetgl
    Sembra proprio che comunque il file già alla base non venga importato nemmeno nella /tmp.

    Infatti in essa non trovo il file che dovrebbe avere "tmp_name", anche senza spostarlo nella "upload/" né applicarci poi la query sql di inserimento nella tabella.

    Nel caso in cui invece il file temporaneo "giustamente" non si riesca a vedere nella "/temp", ho provato a spostarlo nella cartella che voglio con la funzione che mi hai suggerito ma non ne vedo traccia.

    Devo avere qualche permesso particolare alla base del mio spazio web?

    controlla i permessi di scrittura e limite di peso...

  8. #8
    Ho provveduto a impostare sul server il permesso 777 alla cartella /php (dove intendo caricare il file) e alle sue sottocartelle..
    Permesso corretto?

    Limiti di dimensione del file non intervengono, è ampiamente sotto..

    Comunque continuo a non vedere caricato il file nella cartella che imposto con move_upload nel codice della pagina insert_data :

    codice:
    	 $fname = $_FILES['sel_file']['name'];
         
         $filename = $_FILES['sel_file']['tmp_name'];
    	 
    move_uploaded_file($_FILES['sel_file']['tmp_name'], "php/elencoesami/".$_FILES['sel_file']['tmp_name']);

  9. #9
    Originariamente inviato da Simonetgl
    Ho provveduto a impostare sul server il permesso 777 alla cartella /php (dove intendo caricare il file) e alle sue sottocartelle..
    Permesso corretto?

    Limiti di dimensione del file non intervengono, è ampiamente sotto..

    Comunque continuo a non vedere caricato il file nella cartella che imposto con move_upload nel codice della pagina insert_data :

    codice:
    	 $fname = $_FILES['sel_file']['name'];
         
         $filename = $_FILES['sel_file']['tmp_name'];
    	 
    move_uploaded_file($_FILES['sel_file']['tmp_name'], "php/elencoesami/".$_FILES['sel_file']['tmp_name']);

    Ciao si i permessi sono corretti attenzione che anche la cartella "elencoesami" deve avere gli stessi permessi 777:

    prova cosi:

    <?php

    $uploaddir = '/php/elencoesami/';
    $uploadfile = $uploaddir.basename($_FILES['sel_file']['name']);

    $fname = $_FILES['sel_file']['name'];

    if (move_uploaded_file($_FILES['sel_file']['tmp_name'], $uploadfile)) {
    echo "Il file è stato caricato!.\n";
    } else {
    echo "Upload fallito!";
    }

    $filename = $_FILES['sel_file']['tmp_name'];
    $handle = fopen($filename, "r");

    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
    {
    $sql = "INSERT into sti_esami(esame,descrizione,codice) values('$data[0]','$data[1]','$data[2]')";
    mysql_query($sql)
    }


    ?>

    fammi sapere!
    ciao

  10. #10
    Questo è quanto l'assistenza del mio provider mi ha risposto alla mia richiesta di avere dei log dettagliati degli errori:

    a livello di error log mi rislutano i seguenti errori:
    [Thu Jul 04 11:38:57 2013] [warn] [client 151.76.39.250] mod_fcgid: stderr: PHP Warning: move_uploaded_file(/php/elencoesami/importdati.csv): failed to open stream: No such file or directory in /xxx/xxx/public_html/php/elencoesami/insert_data.php on line 66, referer: http://xxx/php/elencoesami/insert.php

    [Thu Jul 04 11:38:57 2013] [warn] [client 151.76.39.250] mod_fcgid: stderr: PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpt7q4hG' to '/php/elencoesami/importdati.csv' in /xxx/xxx/public_html/php/elencoesami/insert_data.php on line 66, referer: http://xxx/php/elencoesami/insert.php

    La invito a controllare la configurazione degli scripts adottati


    Quindi è come se le cartelle non ci fossero?
    Vi assicuro che esistono..qual'è il problema? sto uscendo matto..sicuramente sarà una cavolata alla fine..

    Grazie comunque per le risposte

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.