Tenho uma planilha de excel e gostaria de saber como importar para o phpMyAdmin.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Tenho uma planilha de excel e gostaria de saber como importar para o phpMyAdmin.
Oi Chadu, talvez este link te ajude http://www.webmaster.pt/importar-xls-mysql-via-php-phpmyadmin-10072.html
Abraços,
Estou um pouco confuso com os nomes dos arquivos (PHP) que devo criar...
index.php, ConectaBanco.class.php, tem outro???
Caros amigos!
Estou tentando a uma semana importar um arquivo excel para o phpMyAdmin, mas sem sucesso.
Utilizando o exemplo do Felipe apresento o seguinte erro:
( ! ) Parse error: syntax error, unexpected end of file in C:\wamp64\www\import\index.php on line 149
ou senha o erro está apontando para última linha que tem a syntax: <? } ?>
segue o código index.php:
<?php
include "ConectaBanco.class.php"; // conecta а base de dados
if($_POST['submit'] == 'Upload'){
$uploaded = $_FILES['arquivo'];
function trocar_acentos ($uploaded){
$uploaded = str_replace(' ','_',$uploaded);
$uploaded = str_replace('б','a',$uploaded);
$uploaded = str_replace('Б','a',$uploaded);
$uploaded = str_replace('а','a',$uploaded);
$uploaded = str_replace('А','a',$uploaded);
$uploaded = str_replace('й','e',$uploaded);
$uploaded = str_replace('Й','e',$uploaded);
$uploaded = str_replace('н','i',$uploaded);
$uploaded = str_replace('Н','i',$uploaded);
$uploaded = str_replace('у','o',$uploaded);
$uploaded = str_replace('У','o',$uploaded);
$uploaded = str_replace('ъ','u',$uploaded);
$uploaded = str_replace('Ъ','u',$uploaded);
$uploaded = str_replace('(','',$uploaded);
$uploaded = str_replace(')','',$uploaded);
$uploaded = str_replace('з','c',$uploaded);
$uploaded = str_replace('З','c',$uploaded);
$uploaded = strtolower($uploaded);
return $uploaded;
}
$uploaded = trocar_acentos ($_FILES['arquivo']['name']);
$uploaded_extensao = substr($uploaded,strpos($uploaded,'.')+1,strlen($uploaded)-strpos($uploaded,'.'));
$imagem_destaque_tamanho = $_FILES['uploaded']['size'];
$imagem_destaque_descricao = $_POST['uploaded'];
$imagem_destaque_data = date('d/m/Y');
$uploaddir = "../xls_mysql/";
$data = mktime();
if ($uploaded != ""){
if (file_exists($uploaddir.$uploaded)){ $uploaded = mktime()."_".$uploaded; }
move_uploaded_file($HTTP_POST_FILES['arquivo']['tmp_name'], $uploaddir . $uploaded);
}else{
$uploaded = "";
}
require_once 'Excel/reader.php';
$excel = new Spreadsheet_Excel_Reader();
$excel->setOutputEncoding('CP1251');
$excel->read($uploaded);
$x=1;
$sep = ",";
ob_start();
while($x<=$excel->sheets[0]['numRows']) {
$y=1;
$row="";
while($y<=$excel->sheets[0]['numCols']) {
$cell = isset($excel->sheets[0]['cells'][$x][$y]) ? $excel->sheets[0]['cells'][$x][$y] : '';
$row.=($row=="")?"\"".$cell."\"":"".$sep."\"".$cell."\"";
$y++;
}
echo $row."\n";
$x++;
}
$fp = fopen($uploaded.".csv",'w');
fwrite($fp,ob_get_contents());
fclose($fp);
ob_end_clean();
$conectar = new ConectaBanco();
$tabela = "tbl_carros";
$handle = file($arquivocsv);
for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0)
$values .= "'".addslashes($val)."',";
else
$values .= "NULL,";
} // fecha foreach ($valori as $val){
$values = trim(substr($values,0,-1));
$query = "INSERT INTO $tabela VALUES (null, ".trim($values).");";
$resultado = mysql_query($query);
} // fecha for ($i=1;$i<count($handle);$i++){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("importaзгo efetuada com sucesso")</SCRIPT>
<SCRIPT language="JavaScript">window.location.href="index.php";</SCRIPT>
<?
}else{
?>
<html>
<head>
<title>WebMaster.PT :: Importando Conteúdo do XLS ao MySQL Através do PHP</title>
<style type="text/css">
<!--
.style2 {
font-size: 24px;
font-weight: bold;
}
.style3 {font-size: 12px}
-->
</style>
</head>
<body bgcolor="#ffffff" text="#000000" id=all>
<form enctype="multipart/form-data" action="<? echo "$PHP_SELF"; ?>" method=POST>
<div align="center">
<p><span class="style2">WEBMASTER.PT </span><br>
<span class="style3">IMPORTANDO CONTEÚDO DO XLS PARA O MYSQL ATRAVÉS DO PHP <br>
<br>
<br>
<br>
</span></p>
<table border="0" cellpadding="5" cellspacing="5" width="100%" align="center">
<tr>
<td width="354" align="left" valign="top"><div align="right">ARQUIVO </div></td>
<td width="600" valign="top"><input name="arquivo" type="file">
<input type="submit" name="submit" value="Upload"> <br></td>
</tr>
<tr>
<td colspan="2" align="center"> </td>
</tr>
</table>
</div>
</form>
</body>
</html>
<? } ?>
Oi Chadu, me parece que o problema está neste trecho:
for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0)
$values .= "'".addslashes($val)."',";
else
$values .= "NULL,";
}
Repare que você não está usando chaves no if/else, e está adicionando espaços em branco entre eles (indente o conteúdo que vai ajudar).
Experimente assim:
for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0) {
$values .= "'".addslashes($val)."',";
} else {
$values .= "NULL,";
}
}
Após as edições sugeridas e execução do index no browser o erro continua...
( ! ) Parse error: syntax error, unexpected end of file in C:\wamp64\www\import\index.php on line 148
segue o trecho com edição:
for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0) {
$values .= "'".addslashes($val)."',";
} else {
$values .= "NULL,";
}
}
Está faltando fechar as chaves do foreach. Repare que ha 4 abre chaves e só 3 fecha chaves.
Caros amigos obrigado pela paciência em ajudar um iniciante.
Apresentou um outro erro...
Verifique se faltava alguma fechamento de '}' mas não encontrei.
O browser apresente o seguinte erro ao executar o index...
Parse error: syntax error, unexpected '}' in C:\wamp64\www\import\index.php on line 99
Abaixo o código até a linha 99
<?php
include "ConectaBanco.class.php"; // conecta а base de dados
if($_POST['submit'] == 'Upload'){
$uploaded = $_FILES['arquivo'];
function trocar_acentos ($uploaded){
$uploaded = str_replace(' ','_',$uploaded);
$uploaded = str_replace('б','a',$uploaded);
$uploaded = str_replace('Б','a',$uploaded);
$uploaded = str_replace('а','a',$uploaded);
$uploaded = str_replace('А','a',$uploaded);
$uploaded = str_replace('й','e',$uploaded);
$uploaded = str_replace('Й','e',$uploaded);
$uploaded = str_replace('н','i',$uploaded);
$uploaded = str_replace('Н','i',$uploaded);
$uploaded = str_replace('у','o',$uploaded);
$uploaded = str_replace('У','o',$uploaded);
$uploaded = str_replace('ъ','u',$uploaded);
$uploaded = str_replace('Ъ','u',$uploaded);
$uploaded = str_replace('(','',$uploaded);
$uploaded = str_replace(')','',$uploaded);
$uploaded = str_replace('з','c',$uploaded);
$uploaded = str_replace('З','c',$uploaded);
$uploaded = strtolower($uploaded);
return $uploaded;
}
$uploaded = trocar_acentos ($_FILES['arquivo']['name']);
$uploaded_extensao = substr($uploaded,strpos($uploaded,'.')+1,strlen($uploaded)-strpos($uploaded,'.'));
$imagem_destaque_tamanho = $_FILES['uploaded']['size'];
$imagem_destaque_descricao = $_POST['uploaded'];
$imagem_destaque_data = date('d/m/Y');
$uploaddir = "../xls_mysql/";
$data = mktime();
if ($uploaded != ""){
if (file_exists($uploaddir.$uploaded)){ $uploaded = mktime()."_".$uploaded; }
move_uploaded_file($HTTP_POST_FILES['arquivo']['tmp_name'], $uploaddir . $uploaded);
}else{
$uploaded = "";
}
require_once 'Excel/reader.php';
$excel = new Spreadsheet_Excel_Reader();
$excel->setOutputEncoding('CP1251');
$excel->read($uploaded);
$x=1;
$sep = ",";
ob_start();
while($x<=$excel->sheets[0]['numRows']) {
$y=1;
$row="";
while($y<=$excel->sheets[0]['numCols']) {
$cell = isset($excel->sheets[0]['cells'][$x][$y]) ? $excel->sheets[0]['cells'][$x][$y] : '';
$row.=($row=="")?"\"".$cell."\"":"".$sep."\"".$cell."\"";
$y++;
}
echo $row."\n";
$x++;
}
}
$fp = fopen($uploaded.".csv",'w');
fwrite($fp,ob_get_contents());
fclose($fp);
ob_end_clean();
$conectar = new ConectaBanco();
$tabela = "tbl_carros";
$handle = file($arquivocsv);
for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0) {
$values .= "'".addslashes($val)."',";
} else {
$values .= "NULL,";
}
}
} // fecha foreach ($valori as $val){
$values = trim(substr($values,0,-1));
$query = "INSERT INTO $tabela VALUES (null, ".trim($values).");";
$resultado = mysql_query($query);
} // fecha for ($i=1;$i<count($handle);$i++){
Oi Chadu
Você consegue nos mandar o código completo? Se existir alguma informação restrita, edite o valor ou trecho tomando cuidado pra não alterar a estrutura do código (e por acidente ofuscar o problema).
Tudo indica que o uso das chaves está desbalanceado.
Caro Rodrigo,
Segue o código inteiro...
<?php
include "ConectaBanco.class.php"; // conecta а base de dados
if($_POST['submit'] == 'Upload'){
$uploaded = $_FILES['arquivo'];
function trocar_acentos ($uploaded){
$uploaded = str_replace(' ','_',$uploaded);
$uploaded = str_replace('б','a',$uploaded);
$uploaded = str_replace('Б','a',$uploaded);
$uploaded = str_replace('а','a',$uploaded);
$uploaded = str_replace('А','a',$uploaded);
$uploaded = str_replace('й','e',$uploaded);
$uploaded = str_replace('Й','e',$uploaded);
$uploaded = str_replace('н','i',$uploaded);
$uploaded = str_replace('Н','i',$uploaded);
$uploaded = str_replace('у','o',$uploaded);
$uploaded = str_replace('У','o',$uploaded);
$uploaded = str_replace('ъ','u',$uploaded);
$uploaded = str_replace('Ъ','u',$uploaded);
$uploaded = str_replace('(','',$uploaded);
$uploaded = str_replace(')','',$uploaded);
$uploaded = str_replace('з','c',$uploaded);
$uploaded = str_replace('З','c',$uploaded);
$uploaded = strtolower($uploaded);
return $uploaded;
}
$uploaded = trocar_acentos ($_FILES['arquivo']['name']);
$uploaded_extensao = substr($uploaded,strpos($uploaded,'.')+1,strlen($uploaded)-strpos($uploaded,'.'));
$imagem_destaque_tamanho = $_FILES['uploaded']['size'];
$imagem_destaque_descricao = $_POST['uploaded'];
$imagem_destaque_data = date('d/m/Y');
$uploaddir = "../xls_mysql/";
$data = mktime();
if ($uploaded != ""){
if (file_exists($uploaddir.$uploaded)){ $uploaded = mktime()."_".$uploaded; }
move_uploaded_file($HTTP_POST_FILES['arquivo']['tmp_name'], $uploaddir . $uploaded);
}else{
$uploaded = "";
}
require_once 'Excel/reader.php';
$excel = new Spreadsheet_Excel_Reader();
$excel->setOutputEncoding('CP1251');
$excel->read($uploaded);
$x=1;
$sep = ",";
ob_start();
while($x<=$excel->sheets[0]['numRows']) {
$y=1;
$row="";
while($y<=$excel->sheets[0]['numCols']) {
$cell = isset($excel->sheets[0]['cells'][$x][$y]) ? $excel->sheets[0]['cells'][$x][$y] : '';
$row.=($row=="")?"\"".$cell."\"":"".$sep."\"".$cell."\"";
$y++;
}
echo $row."\n";
$x++;
}
}
$fp = fopen($uploaded.".csv",'w');
fwrite($fp,ob_get_contents());
fclose($fp);
ob_end_clean();
$conectar = new ConectaBanco();
$tabela = "tbl_carros";
$handle = file($arquivocsv);
for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0) {
$values .= "'".addslashes($val)."',";
} else {
$values .= "NULL,";
}
}
} // fecha foreach ($valori as $val){
$values = trim(substr($values,0,-1));
$query = "INSERT INTO $tabela VALUES (null, ".trim($values).");";
$resultado = mysql_query($query);
} // fecha for ($i=1;$i<count($handle);$i++){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("importaзгo efetuada com sucesso")</SCRIPT>
<SCRIPT language="JavaScript">window.location.href="index.php";</SCRIPT>
<?
}else{
?>
<html>
<head>
<title>WebMaster.PT :: Importando Conteúdo do XLS ao MySQL Através do PHP</title>
<style type="text/css">
<!--
.style2 {
font-size: 24px;
font-weight: bold;
}
.style3 {font-size: 12px}
-->
</style>
</head>
<body bgcolor="#ffffff" text="#000000" id=all>
<form enctype="multipart/form-data" action="<? echo "$PHP_SELF"; ?>" method=POST>
<div align="center">
<p><span class="style2">WEBMASTER.PT </span><br>
<span class="style3">IMPORTANDO CONTEÚDO DO XLS PARA O MYSQL ATRAVÉS DO PHP <br>
<br>
<br>
<br>
</span></p>
<table border="0" cellpadding="5" cellspacing="5" width="100%" align="center">
<tr>
<td width="354" align="left" valign="top"><div align="right">ARQUIVO </div></td>
<td width="600" valign="top"><input name="arquivo" type="file">
<input type="submit" name="submit" value="Upload"> <br></td>
</tr>
<tr>
<td colspan="2" align="center"> </td>
</tr>
</table>
</div>
</form>
</body>
</html>
<? } ?>
Oi Chadu
repara nesse trecho dos fors:
for ($i=1;$i<count($handle);$i++){
$valori = explode(";", $handle[$i]);
$values = "";
foreach ($valori as $val){
$val=trim($val);
if (eregi("NULL",$val) == 0) {
$values .= "'".addslashes($val)."',";
} else {
$values .= "NULL,";
}
}
} // fecha foreach ($valori as $val){
$values = trim(substr($values,0,-1));
$query = "INSERT INTO $tabela VALUES (null, ".trim($values).");";
$resultado = mysql_query($query);
} // fecha for ($i=1;$i<count($handle);$i++){
a segunda chave depois do else fecha o foreach, a terceira fecha o for de cima. No final do trecho, você está fechando o for novamente.
No trecho dos whiles você também fecha um a mais:
while($x<=$excel->sheets[0]['numRows']) {
$y=1;
$row="";
while($y<=$excel->sheets[0]['numCols']) {
$cell = isset($excel->sheets[0]['cells'][$x][$y]) ? $excel->sheets[0]['cells'][$x][$y] : '';
$row.=($row=="")?"\"".$cell."\"":"".$sep."\"".$cell."\"";
$y++;
}
echo $row."\n";
$x++;
}
}
`
a chave antes do echo fecha o while de dentro. A depois do echo fecha o while de fora. A outra sobra, e acaba fechando o if do começo do arquivo (que só deveria ser fechado no antes do else do final.
Uma sugestão é colocar o arquivo todo em um editor da sua preferencia e indentá-lo com calma. Ajuda bastante a identificar esses blocos com chave a mais ou a menos.
Srs. o que preciso é subir um arquivo em excel no phpMyAdmin, se houver outro código mas simples ou uma forma melhor de fazer por favor me oriente...
Mas continuando com o código que temos acredito que superamos o problema das chaves '{}'
Agora preciso do auxílio para resolver os seguintes erros...
1) Linha 5:
if($_POST['submit'] == 'Upload'){
Erro:
Notice: Undefined index: submit in C:\wamp64\www\import\index.php on line 5
2) Linha 48:
require_once 'Excel/reader.php';
Erro 1:
Warning: require_once(Excel/reader.php): failed to open stream: No such file or directory in C:\wamp64\www\import\index.php on line 48
Erro2:
Fatal error: require_once(): Failed opening required 'Excel/reader.php' (include_path='.;C:\php\pear') in C:\wamp64\www\import\index.php on line 48
Meus caros!
Por diversas formas tento subir um arquivo (xlsx ou csv), para o phpMyAdmin, utilizando as aulas dadas até aqui, mas sem sucesso.
Foi me passado o link: http://www.webmaster.pt/importar-xls-mysql-via-php-phpmyadmin-10072.html
também tentei executar outros dois códigos:
http://www.mauricioprogramador.com.br/posts/importando-dados-do-excel-para-mysql-com-php
e
http://www.devwilliam.com.br/banco-de-dados/como-importar-arquivos-xml-para-o-mysql
mas em todos os caso eu erro e não consigo terminar, acredito que por não compreender todos as funções para execução.
PRECISO MUITO DE AJUDA!!!!
Gostaria de ter um passo a passo de como realizar esta tarefa porquê estou nisto há bastante tempo! sem conseguir sair do lugar...
Oi Chadu
Por favor, abra um novo tópico, com o nome dizendo que é problema de importacao de XLS.
Ai coloca pra gente o codigo que está usando e a XLS que esta usando e tambem o erro que está dando.