Ir para conteúdo
Fórum Script Brasil
  • 0

Problema em Query com Like


Geraldo Kuster

Pergunta

Ola Srs,

Estou aprendendo PHP e SQL ainda e tentando trabalhar com ambos, tenho um sisteminha que faz uma busca de pacientes e usa essa busca para imprimir as etiquetas.

Tudo funcionando desde que eu não faça a busca ele imprime normalmente, se eu colocar qualquer nome na busca ele coloca no codigo os dois %% da query e da erro 400.

A busca arquivo pesquisa_ajax.php

<?php
    $_GET['pesquisa'] = utf8_decode ( htmlspecialchars( utf8_encode($_GET['pesquisa']) , ENT_QUOTES | ENT_COMPAT, 'utf-8') );
	$pacientes = new TPacientes();
	if($_GET[campo] == 'nascimento') {

        if ( strlen ( $_GET['pesquisa'] ) <= 2 ) {
            $where .= "MONTH(nascimento) = '".$_GET['pesquisa']."'";
        } else {

            $pesq = explode ( '_' , $_GET['pesquisa'] );
            foreach ( $pesq as $k => $v ) {
                $v = explode ( '-' , $v );
                $v[1] = str_pad($v[1], 2, '0', STR_PAD_LEFT);
                $pesq[$k] = implode ( '-' , $v );
            }

            $where = "RIGHT(nascimento, 5) = '".$pesq[0]."'";
            if ( count ( $pesq ) > 1 ) {
                $where = "DATE_FORMAT(nascimento, '%m-%d') BETWEEN '".$pesq[0]."' AND '".$pesq[1]."'";
            }

        }

	} elseif($_GET[campo] == 'nome') {
		$where = "nome LIKE '%".$_GET[pesquisa]."%'";
	} elseif($_GET[campo] == 'telefone') {
		$where = "telefone1 = '".$_GET[pesquisa]."' OR telefone2 = '".$_GET[pesquisa]."' OR celular = '".$_GET[pesquisa]."'";
	} elseif($_GET[campo] == 'matricula') {
		$where = "codigo = '".$_GET[pesquisa]."'";
	} elseif($_GET[campo] == 'cidade') {
		$where = "cidade LIKE '".$_GET[pesquisa]."%'";
	} elseif($_GET[campo] == 'cep') {
		$where = "cep LIKE '".$_GET[pesquisa]."%'";
	} elseif($_GET[campo] == 'profissao') {
		$where = "profissao LIKE '%".$_GET[pesquisa]."%'";
	} elseif($_GET[campo] == 'area') {
		$where = "tratamento LIKE '%".$_GET[pesquisa]."%'";
	} elseif($_GET[campo] == 'procurado') {
		$where = "codigo_dentistaprocurado = '".$_GET[pesquisa]."'";
	} elseif($_GET[campo] == 'atendido') {
		$where = "codigo_dentistaatendido = '".$_GET[pesquisa]."'";
	} elseif($_GET[campo] == 'indicacao') {
        $where = "indicadopor LIKE '%".$_GET[pesquisa]."%'";
    } elseif($_GET[campo] == 'endereco') {
        $where = "endereco LIKE '%".$_GET[pesquisa]."%'";
    }
	if($_GET[pg] != '') {
		$limit = ($_GET[pg]-1)*PG_MAX;
	} else {
		$limit = 0;
		$_GET[pg] = 1;
	}
	$sql = "SELECT * FROM `pacientes` WHERE ".$where." ORDER BY `nome` ASC";

    if($_GET['campo'] == 'debito') {
        $sql = "SELECT DISTINCT(vo.codigo_paciente), tp.* FROM pacientes tp INNER JOIN v_orcamento vo ON tp.codigo = vo.codigo_paciente WHERE data < '".date('Y-m-d')."' AND pago = 'Não' AND confirmado = 'Sim' AND baixa = 'Não' ORDER BY `nome` ASC";
    }
    if($_GET['campo'] == 'agendados') {
        $sql = "SELECT DISTINCT ta.codigo_paciente, tp.* FROM agenda ta INNER JOIN pacientes tp ON ta.codigo_paciente = tp.codigo WHERE ta.data = CURDATE()";
    }
	$lista = $pacientes->ListPacientes($sql.' LIMIT '.$limit.', '.PG_MAX);
	$total_regs = $pacientes->ListPacientes($sql);
	$par = $odev = "F0F0F0";
	$impar = "F8F8F8";
	for($i = 0; $i < count($lista); $i++) {
		if($i % 2 == 0) {
			$odev = $par;
		} else {
			$odev = $impar;
		}
?>

Quando rodo a busca e mando imprimir ele puxa essa query do sql:

 <td width="43%" align="right">
        <a href="relatorios/pacientes.php?sql=<?php echo $sql;?>" target="_blank" style="text-decoration:none;">
            <button class="btn btn-warning">
                <span class="glyphicon glyphicon-print"></span> <?php echo $LANG['patients']['print_report']?>
            </button>
        </a>
        <a href="etiquetas/print_etiqueta.php?sql=<?php echo $sql; ?><?php echo ($_GET['campo']=='nascimento' ? '&nasc=true' : '')?>" target="_blank">
            <button class="btn btn-warning">
                <span class="glyphicon glyphicon-print"></span> <?php echo $LANG['patients']['print_labels']?>
            </button>
        </a>
      </td>

Apresenta esse resultado na barra de endereços o que gera o erro.

pacientes.php?sql=SELECT%20*%20FROM%20`pacientes`%20WHERE%20nome%20LIKE%20%27%%%27%20ORDER%20BY%20`nome`%20ASC

Espero que possam me ajudar já pesquisei e já estou rodando aqui mais meu conhecimento ainda e pouco.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...