Tenho uma planilha de excel e gostaria de saber como importar para o phpMyAdmin.
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 for
s:
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 while
s 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.