Ajuda com erro de sintaxe com PHP


(Gabriel) #1

Olá,
Preciso criar uma página que gere um arquivo xls baseado em uma consulta no banco, porém esta retornando o seguinte erro :
Parse error: syntax error, unexpected 'include' (T_INCLUDE) in C:\xampp\htdocs\triagem\exportou_dados_2.php on line 3

Esse é o código

   <?php
 // Inclui a conexão
include("config.php");

//Pega os dados por POST
$data_inicial = $_POST["data_inicial"];
$data_final = $_POST["data_final"];
$tecnico = $_POST["tecnico"];


 // Nome do Arquivo do Excel que será gerado
 $arquivo = 'notas.xls';

 // Criamos uma tabela HTML com o formato da planilha para excel
 $tabela = '<table border="1">';
 $tabela .= '<tr>';
 $tabela .= '<td colspan="2">Notas</tr>';
 $tabela .= '</tr>';
 $tabela .= '<tr>';
 $tabela .= '<td><b>id</b></td>';
 $tabela .= '<td><b>Data e Hora</b></td>';
 $tabela .= '<td><b>Data</b></td>';
 $tabela .= '<td><b>Valor</b></td>';
 $tabela .= '<td><b>Foto</b></td>';
 $tabela .= '<td><b>Estado</b></td>';
 $tabela .= '<td><b>Cidade</b></td>';
 $tabela .= '<td><b>Cliente</b></td>';
 $tabela .= '<td><b>Status</b></td>';
 $tabela .= '<td><b>Genero</b></td>';
 $tabela .= '<td><b>Observação</b></td>';
 $tabela .= '<td><b>Motivo da reprova</b></td>';

 $tabela .= '</tr>';

 // Puxando dados do Banco de dados
 $resultado = mysql_query("SELECT * FROM `nota` WHERE `data` BETWEEN '$data_inicial' AND '$data_final' AND `tecnico` LIKE '$tecnico' ORDER BY `id` ASC");

 while($dados = mysql_fetch_array($resultado))
 {
  $tabela .= '<tr>';
  $tabela .= '<td>'.$dados['id'].'</td>';
  $tabela .= '<td>'.$dados['data_hora'].'</td>';
  $tabela .= '<td>'.$dados['data'].'</td>';
  $tabela .= '<td>'.$dados['valor'].'</td>';
  $tabela .= '<td>'.$dados['foto'].'</td>';
  $tabela .= '<td>'.$dados['estado'].'</td>';
  $tabela .= '<td>'.$dados['cidade'].'</td>';
  $tabela .= '<td>'.$dados['cliente'].'</td>';
  $tabela .= '<td>'.$dados['status'].'</td>';
  $tabela .= '<td>'.$dados['genero'].'</td>';
  $tabela .= '<td>'.$dados['observacao'].'</td>';
  $tabela .= '<td>'.$dados['motivo_rep'].'</td>';


  $tabela .= '</tr>';
 };

 $tabela .= '</table>';

 // Força o Download do Arquivo Gerado
 header ('Cache-Control: no-cache, must-revalidate');
 header ('Pragma: no-cache');
 header('Content-Type: application/x-msexcel');
 header ("Content-Disposition: attachment; filename=\"{$arquivo}\"");
 echo $tabela;
?>

(Maykel Esser) #2

Esta página que mostrou o código é a exportou_dados_2.php?
Se não, qual o conteúdo da mesma?


(Gabriel) #3

Sim, esse código é da exportou_dados_2.php


(Maykel Esser) #4

Cara, tem diversas coisas que bati o olho que podem ocasionar. Basicamente, tente comentar os trechos de códigos aos poucos e ir liberando eles para ver onde o erro está. Mas de cara, vi que você não concatenou corretamente o $arquivo no header no fim do código. O mesmo acontece na sua query do MySQL.


(Maykel Esser) #5

Troca:
header ("Content-Disposition: attachment; filename=\"{$arquivo}\"");

Por:
header ("Content-Disposition: attachment; filename=\"".{$arquivo}."\");


(Gabriel) #6

Continuo recebendo o mesmo erro Maykel, tentei debugar o código para tentar achar o erro mas mesmo assim não tive sucesso.
Troquei também o header e nada. Você comentou que a query do MySQL também não está concatenada corretamente, mas em qual parte?


(Luan Maik) #7

Parse error: syntax error, unexpected 'include'
Significa que foi inesperado o termo 'include'.

O include não é um método que recebe argumento, por isso começe por remover os parênteses (boas práticas) e utilize-o assim:

include 'config.php';

Outro detalhe, se o arquivo config.php contem os dados da conexão do banco de dados e isso é fundamental para o conteúdo da página o mesmo deve ser carregado usando o require:

require 'config.php';

Se o include não conseguir carregar o arquivo ele vai dar a mensagem de erro, porém carregará o restante do código, já no require, se ele não conseguir carregar ele finaliza a aplicação.

Caso o problema persistir, poste o código do config.php (mude os dados da conexão), pode ser que o erro esteja neste arquivo.


(Maykel Esser) #8

@LuanMalk sempre utilizo o include com parênteses e nunca tive problemas.
Isso ficou obsoleto com as novas versões do PHP? Pois continuo utilizando include('xxxyyy.php'); sem problemas.


(Luan Maik) #9

O motivo do uso do include se refere a boas práticas.


(Luan Maik) #10

Pelo que pesquisei deve estar faltando ; (ponto e virgula) em algum lugar dos dois arquivos