Oi, estou iniciando na área, já fiz cursos, e agora estou tentando me aprofundar, além de ler muita coisa, pego alguns scripts para ver na prática o funcionamento das coisas... vamos ao problema.. Tenho os códigos abaixo, um formulário html (carro_psq.html) que passa as informações para tratar no php (carros_psq.php). Comecei montando com uma pesquisa relacional, e funcionou certinho... agora quando eu simplifiquei, ele não reconhece os filtros... se não insiro nenhum filtro de pesquisa, ele retorna todos os dados do banco de dados, mas com qualquer filtro dá o seguinte erro: SQLSTATE[42000]: Syntax error or access violation: 1064 Você tem um erro de sintaxe no seu SQL próximo a 'AND sexo ='M'' na linha 2 sendo que varia, as vezes ele fala que é na linha de cima, depois na linha de baixo.. enfim, agora os códigos: Formulário de pesquisa personalizada <form method="POST" action="carros_psq.php"><!-- action="nome do arquivo php que recebe" -->
<p>Relatório de clientes</p>
<p>Nome: </p> <input type="text" name="clientes">
<p>Sexo: </p>
<select name="sexo">
<option value=""></option>
<option value="M">Masculino</option>
<option value="F">Feminino</option>
</select>
<p>Pessoa Física/Jurídica: </p>
<select name="pf_pj">
<option value=""></option>
<option value="PF">Pessoa Física</option>
<option value="PJ">Pessoa Jurídica</option>
</select>
<input type="submit" value="Enviar"\>
</form>
Aquivo para tratar os dados
<?php
try
{
//... conexão do bdd...
// cria um estilo para o cabeçalho
$estilo_cabecalho = new TStyle('cabecalho');
$estilo_cabecalho->font_family = 'verdana,sans-serif';
// cria um estilo para os dados
$estilo_dados = new TStyle('dados');
$estilo_dados->font_family = 'arial,verdana,sans-serif';
// define a consulta
$sql = "SELECT id, nome, endereco, bairro, cep, pf_pj, cpf_cnpj, cnh, rg_ie, dt_nascimento, telefone, celular, obs, email FROM clientes";
// detecta filtro por nome do clientes
if (!empty($_REQUEST['clientes']))
{
$client = addslashes($_REQUEST['clientes']);
$sql .= " AND nome like '%{$client}%'";
}
// detecta filtro por sexo
if (!empty($_REQUEST['sexo']))
{
$sexo = addslashes($_REQUEST['sexo']);
$sql .= " AND sexo ='{$sexo}'";
}
// detecta filtro por pf_pj
if (!empty($_REQUEST['pf_pj']))
{
$pf_pj = addslashes($_REQUEST['pf_pj']);
$sql .= " AND pf_pj ='{$pf_pj}'";
}
// executa a instrução SQL
$result = $conn->query($sql);
// instancia objeto tabela
$tabela = new TTable;
// define algumas propriedades da tabela
$tabela->border= 1;
$tabela->style = "border-collapse:collapse";
// instancia uma linha para o cabeçalho
$cabecalho = $tabela->addRow();
// adiciona células (se add lá em cima, insere aqui)
$cabecalho->addCell('Código');
$cabecalho->addCell('Nome');
$cabecalho->addCell('Endereço');
$cabecalho->addCell('Bairro');
$cabecalho->addCell('CEP');
$cabecalho->addCell('Física/Jurídica');
$cabecalho->addCell('CPF/CNPJ');
$cabecalho->addCell('CNH');
$cabecalho->addCell('RG/IE');
$cabecalho->addCell('Aniversário');
$cabecalho->addCell('Telefone');
$cabecalho->addCell('Celular');
$cabecalho->addCell('E-Mail');
$cabecalho->addCell('Observações');
$cabecalho->class = 'cabecalho';
// inicializa variáveis de controle
$colore = FALSE;
// percorre os resultados
foreach ($result as $row)
{
// verifica qual cor irá utilizar para o fundo
$bgcolor = $colore ? '#f5f5f5' : '#e8e8e8';
// adiciona uma linha para os dados
$linha = $tabela->addRow();
$linha->bgcolor = $bgcolor;
$linha->class = 'dados';
// lê a data de nascimento
$dt_nascimento = date_parse($row['dt_nascimento']);
$dt_nascimento = str_pad($dt_nascimento['day'], 2, '0', STR_PAD_LEFT).'/'.
str_pad($dt_nascimento['month'], 2, '0', STR_PAD_LEFT).'/'.
$dt_nascimento['year'];
// adiciona as células
$cell1 = $linha->addCell($row['id']);
$cell2 = $linha->addCell($row['nome']);
$cell3 = $linha->addCell($row['endereco']);
$cell4 = $linha->addCell($row['bairro']);
$cell5 = $linha->addCell($row['cep']);
$cell6 = $linha->addCell($row['pf_pj']);
$cell7 = $linha->addCell($row['cpf_cnpj']);
$cell8 = $linha->addCell($row['cnh']);
$cell9 = $linha->addCell($row['rg_ie']);
$cell10 = $linha->addCell($dt_nascimento);
$cell11 = $linha->addCell($row['telefone']);
$cell12 = $linha->addCell($row['celular']);
$cell13 = $linha->addCell($row['email']);
$cell14 = $linha->addCell($row['obs']);
// define o alinhamento das células
$cell1->align = 'center';
$cell2->align = 'left';
$cell3->align = 'left';
$cell4->align = 'left';
$cell5->align = 'center';
$cell6->align = 'center';
$cell7->align = 'center';
$cell8->align = 'center';
$cell9->align = 'center';
$cell10->align = 'center';
$cell11->align = 'center';
$cell12->align = 'center';
$cell13->align = 'center';
$cell14->align = 'center';
// inverte cor de fundo
$colore = !$colore;
}
$tabela->show();
}
catch (Exception $e)
{
// exibe a mensagem de erro
echo $e->getMessage();
}
?> To pedindo demais, mas gostaria de saber se alguém vê algum erro de sintaxe no código... pra mim não tá fazendo sentido, mas como meu conhecimento é inicial, nem conta né?!