utilize este formato:
<style>body{font-family:Verdana, Arial, Helvetica, sans-serif}
span {font-size:11px;}
</style>
<body>
<?php
$host="localhost";
$usuario="root";
$senha="123";
$banco="banco_dados";
$row = 1;
$handle = fopen ("arquivo.csv","r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count ($data);
echo "<p> $num campos na linha $row: <br /></p>";
$row++;
$sql = "Insert into tb_tabela (campo1,campo2,campo3,campo4) values ('";
for ($c=0; $c < $num; $c++) {
$exp1 = str_replace(chr(13),"')*****'",str_replace(";","','",$data[$c]));
$sql .= str_replace("*****",", (",$exp1);
$sql.="');";
$conn = mysql_connect($host, $usuario, $senha) or die("erro na conexao: ".mysql_error());
$select = mysql_select_db($banco) or die("erro no banco: ".mysql_error());
// run the queries individually
}
}
echo '<span>Query executada: '.$sql.'</span>';
$exec=mysql_query($sql, $conn) or die(mysql_error());
if($exec==true)
echo '<H3>OS DADOS DO EXCEL FORAM INSERIDOS COM SUCESSO!</H3>';
fclose ($handle);
?>
</body>
Boa tarde pessoal!
Tenho pesquisado na internet uma maneira para importar dados de uma tabela excel para o banco (mysql), então achei várias soluções. Uma delas consiste em transformar os arquivos .xls em .csv então com um script em php enviá-los ao mysql.
O problema é que nos scripts que eu tenho os dados sempre são importados com um algarismo especial junto, aquele algarismo de parágrafo.. eh como se eu inserisse um dado e junto fosse um parágrafo, então no banco ele insere um caracter especial.
Já abri o código e tentei modificar mas o caracter especial sempre fica lá.
Já consegui efetuar essa tarefa com sucesso de outras maneiras, mas estas não atendem minhas necessidades, ou dá problema com o id que não pode ser auto incremento e tem q ser varchar ou então eu tenho q criar o sql fazendo o dump e criando um if para verificar se a tabela existe, apaga-la e recria-la
A tabela tem q ser criada somente uma vez, e então o script php deve ler e inserir os dados que estão nas linhas do arquivo .csv ou .xls
Vou postar um dos scripts que eu tenho aqui.. esse é o mais simples..
$host = "localhost";
$user = "root";
$pass = "senha";
$banco = "nome_banco";
$con = mysql_connect($host, $user, $pass);
mysql_select_db($banco, $con);
$handle = fopen("arquivo.csv", "r");
if ($handle) {
$array = explode("\n", fread($handle, filesize("arquivo.csv")));
} $total_array = count($array);
$i = 0;
while($i < $total_array) {
$data = explode(",", $array[$i]);
$sql = "SELECT * FROM `tabela` WHERE campo='" . $data[0] . "' LIMIT 1";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0) {
$valor = $data[0];
mysql_query("insert into tabela values (null, '$valor')");
}
$i++;
}
Se alguém puder ajudar-me ou indicar um tutorial p mim ver..
Desde já grato pela atenção!
Att
Junior
Também tem outra forma, até melhor:
<?php
echo '<style>body{font-family:Verdana, Arial, Helvetica, sans-serif}
span {font-size:11px;}
</style>
<body>';
$fileName = $_GET['arquivo'];
$host="localhost";
$usuario="username";
$senha="password";
$banco="nome_banco_dados";
$conexao = mysql_connect($host, $usuario, $senha) or die("erro na conexao: ".mysql_error());
$selecao = mysql_select_db($banco) or die("erro no banco: ".mysql_error());
if($fileName){
echo '<h4>Começando a Execução...</h4>';
$x=0;
//open file read only
$file=fopen($fileName.".csv","r");
while (!feof($file))
{
$row=fgetcsv($file,0); //explode can be used instead
$x++;
echo "<span>Query Nº $x<br>";
if($row[0]!='')
$sqlx = "INSERT INTO tb_convidados (campo1, campo2, campo3) VALUES ('".str_replace(";","','",$row[0])."')";
echo $sqlx."</span><br>";
$go=mysql_query($sqlx) or die("Insert error: ".mysql_error());
}
//close file
fclose($file);
if($go==true)
echo '<h2>'.$x.' Registros incluídos com sucesso!</h2>';
}
else
{
?>
<?php
if(!$_FILES){
echo 'Selecione o Arquivo (Máximo: 10MB)';
}
else if($_FILES['file']['size'] > 10485760){
echo 'Arquivo deve ter no máximo 10MB';
}
else{
$file_name = $_FILES['file']['name'];
$file_type = $_FILES['file']['type'];
$file_size = $_FILES['file']['size'];
$file_tmp_name = $_FILES['file']['tmp_name'];
$error = $_FILES['file']['error'];
$nome_arquivo = $_FILES['file']['name'];
$file_ext = preg_split("/\./",$file_name);
$nome_arquivo = "importado.".end($file_ext);
$extensoes_permitidas = array('CSV', 'csv',);
// $extensoes4 = array('docx', 'jpge');
$ext=substr($nome_arquivo, -3, 3);
// $ext_4=substr($arq, -4, 4);
if (in_array($ext, $extensoes_permitidas)){
move_uploaded_file($_FILES["file"]["tmp_name"], $dir . $nome_arquivo);}
header('Location:'.$_SERVER['PHP_SELF'].'?arquivo=importado');
}//se existir arquivo
?>
<br /><h1>Upload do CSV</h1>
<form class="upload" name="up_arquivo" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF'];?>" >
<fieldset >
<label>Arquivo:</label>
<input type="file" name="file"/><br>
<input type="submit" name="go" value="ENVIAR AGORA >>" />
</fieldset>
</form>
<?php
}
echo '</body>';
?>
Boa tarde pessoal!
Tenho pesquisado na internet uma maneira para importar dados de uma tabela excel para o banco (mysql), então achei várias soluções. Uma delas consiste em transformar os arquivos .xls em .csv então com um script em php enviá-los ao mysql.
O problema é que nos scripts que eu tenho os dados sempre são importados com um algarismo especial junto, aquele algarismo de parágrafo.. eh como se eu inserisse um dado e junto fosse um parágrafo, então no banco ele insere um caracter especial.
Já abri o código e tentei modificar mas o caracter especial sempre fica lá.
Já consegui efetuar essa tarefa com sucesso de outras maneiras, mas estas não atendem minhas necessidades, ou dá problema com o id que não pode ser auto incremento e tem q ser varchar ou então eu tenho q criar o sql fazendo o dump e criando um if para verificar se a tabela existe, apaga-la e recria-la
A tabela tem q ser criada somente uma vez, e então o script php deve ler e inserir os dados que estão nas linhas do arquivo .csv ou .xls
Vou postar um dos scripts que eu tenho aqui.. esse é o mais simples..
$host = "localhost";
$user = "root";
$pass = "senha";
$banco = "nome_banco";
$con = mysql_connect($host, $user, $pass);
mysql_select_db($banco, $con);
$handle = fopen("arquivo.csv", "r");
if ($handle) {
$array = explode("\n", fread($handle, filesize("arquivo.csv")));
} $total_array = count($array);
$i = 0;
while($i < $total_array) {
$data = explode(",", $array[$i]);
$sql = "SELECT * FROM `tabela` WHERE campo='" . $data[0] . "' LIMIT 1";
$result = mysql_query($sql);
if(mysql_num_rows($result) == 0) {
$valor = $data[0];
mysql_query("insert into tabela values (null, '$valor')");
}
$i++;
}
Se alguém puder ajudar-me ou indicar um tutorial p mim ver..
Desde já grato pela atenção!
Att
Junior