1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP - upload xls para tabela SQL

Discussão em 'Web Development' iniciada por The Dealer, 4 de Março de 2009. (Respostas: 4; Visualizações: 1543)

  1. The Dealer

    The Dealer Power Member

    Criei uma tabela teste com campos numero int e nome char(60), (como teste coloquei no ficheiro na coluna A 12345 e em B abcde) e quando corro este código:

    Código:
    <?php
            
    include("Connections\connectDB.php");
    mysql_select_db("notasgest",$connectDB);
    
    $handle = fopen("test.xls", "r");
    if ($handle)
        {
        $array = explode("\n", fread($handle, filesize("test.xls")));
        }
     
    $total_array = count($array);
    $i = 0;
     
    while($i < $total_array)
        {
        $data = explode(",", $array[$i]);
        $sql = mysql_query("insert into test values ('$data[0]','$data[1]')"); 
        $result = mysql_query($sql,$connectDB);
     
        $i++;
        }
        echo "sucesso";
    ?>
    No entanto dá-me erro:
    Dá-me esse erro...

    Qual será o problema?
     
    Última edição: 4 de Março de 2009
  2. zoidberg

    zoidberg Folding Member

    experimenta fazer o ciclo de outra forma ( não testei )

    PHP:

    include("Connections\connectDB.php");
    mysql_select_db("notasgest",$connectDB);


    $file fopen("test.xls","r");
    while (!
    feof($file))
    {
    $line fgets($file);
    $data explode("\t"$line);
    $sql mysql_query("insert into test values ('$data[0]','$data[1]')"); 
    $result mysql_query($sql,$connectDB);
    }
    fclose($file);

    qualquer das formas falta-te aí o fclose não sei se fará diferença
     
  3. naoliveira

    naoliveira Power Member

    tu estás a assumir que o explode retorna sempre 1 array com 2 posições, o que, pelo erro que surge, nem sempre é verdade.
     
  4. oscarolim

    oscarolim Power Member

    Ele retorna sempre uma linha extra vazia no fim. Coloca um if no line para verificar se line ta vazio ou nao.
     
  5. The Dealer

    The Dealer Power Member

    Não dá...
     

Partilhar esta Página