Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Danilo Ramon

Erro Função PDO - Pesquisar

Recommended Posts

Olá Pessoal, segue abaixo os códigos, ele não está retonando a pesquisa, o erro está na consulta MYSQL. Alguém pode me ajudar...

 

FUNÇÃO BUSCAR ALUNO

<?php

function buscarAluno($buscar) {

    $pdo = conectarBanco();
    
    try {
        $listar = $pdo -> prepare("SELECT * FROM alunos WHERE nome_aluno LIKE '%?%' ORDER BY nome_aluno ASC");
        // $listar ->bindValue(1, $buscar);
        $listar -> execute();
     
        if ($listar -> rowCount() > 0):
            return $listar->fetch(PDO::FETCH_ASSOC);
        endif;
        
    } catch(PDOException $error){
        echo "Erro: " . $error ->getMessage();
    }
}

?>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

<?php
 
function buscarAluno($buscar) {
 
  $pdo = conectarBanco();
    
  try {
    $listar = $pdo->prepare("SELECT * FROM alunos WHERE nome_aluno LIKE '%:busca%' ORDER BY nome_aluno ASC");
    $listar->bindValue(":busca", $buscar);
    $listar->execute();

    if ($listar -> rowCount() > 0):
     return $listar->fetch(PDO::FETCH_ASSOC);
    endif;

  } catch(PDOException $error){
     echo "Erro: " . $error ->getMessage();
  }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

como vc deixou? com o array?

Compartilhar este post


Link para o post
Compartilhar em outros sites

vi mais aplicquei o exemplo e naum funcionaou

 

function buscarAluno($buscar) {
 
  $pdo = conectarBanco();
    
  try {
    $listar = $pdo->prepare("SELECT * FROM alunos WHERE nome_aluno LIKE '%:buscar%' ORDER BY nome_aluno ASC");
    //$listar->bindValue(1, $buscar);
    $listar = $prep->execute(array(':buscar' => $buscar));
    
    //$listar->bindParam(1, $buscar);
    $listar->execute();

    if ($listar -> rowCount() > 0):
     return $listar->fetch(PDO::FETCH_ASSOC);
    endif;

  } catch(PDOException $error){
     echo "Erro: " . $error ->getMessage();
  }
}

 

Erro: Notice: Undefined variable: prep in

 

Linha: $listar = $prep->execute(array(':buscar' => $buscar));

Compartilhar este post


Link para o post
Compartilhar em outros sites

$prep? da onde veio essa variavel?

 

tente assim:

 

 

$listar = $pdo->prepare("SELECT * FROM alunos WHERE nome_aluno LIKE :buscar ORDER BY nome_aluno ASC");
 
$listar->execute(array(':buscar' => '%'. $buscar .'%'));
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O filtro faz, porém retorna os dados da tabela irreconhecíveis... as colunas com um dígito.

 

function buscarAluno($buscar) {

$pdo = conectarBanco();

try {
    
$listar = $pdo->prepare("SELECT * FROM alunos WHERE nome_aluno LIKE :buscar ORDER BY nome_aluno ASC");
 
$listar->execute(array(':buscar' => '%'. $buscar .'%'));

//$listar -> execute();

if ($listar -> rowCount() > 0):
return $listar->fetch(PDO::FETCH_ASSOC);
endif;

} catch(PDOException $error){
echo "Erro: " . $error ->getMessage();
}
}

 

Código Chamada: Função :$dados = buscarAluno($buscar);

 

<form action="" method="post" name="buscar" target="_self">
  <p>Pesquisar:</p>
  <p>
  <input name="buscar" type="text" /><input type="submit" name="pesquisar" value="Pesquisar" />
  </p>

  
</form>     
<table width="100%" border="1" cellspacing="5" cellpadding="5">
    <thead>
        <tr>
            <th>Nome</th>
            <th>RG</th>
            <th>Editar?</th>
            <th>Deletar?</th>
        </tr>
    </thead>
    <tbody>      
<?php    
if (isset($_POST['pesquisar'])) {
    
    if (!empty($_POST['buscar'])){
        $buscar = $_POST['buscar'];

         $dados = buscarAluno($buscar); 
        
    } else {
        
        $dados = listarAlunos();
        
    }
    
   
    
} else {
    
$dados = listarAlunos();

}  
$params = array(
    'mode'       => 'Sliding',
    'perPage'    => 5,
    'delta'      => 2,
    'itemData'   => $dados
);

$pager = & Pager::factory($params);
$data  = $pager->getPageData();
$links = $pager->getLinks();
$d = new ArrayIterator($data);

while($d->valid()):
    $alunos = $d->current();
?>
        <tr>
            <td><?=$alunos['nome_aluno']?></td>   
            <td><?=$alunos['rg']?></td>   
            <td><a href="?id=<?=$alunos['id_aluno']?>&acao=editar" target="_self">Editar</a></td>  
            <td><a href="?id=<?=$alunos['id_aluno']?>&acao=excluir" target="_self">Excluir</a></td>   
        </tr>
<?php    
    $d->next();
endwhile;
?>
    </tbody>
</table>  
<p>
<?php 

echo $links['all'];
echo " - Total de Registro(s) ";
echo $pager->numItems();

echo "<br />";

print_r($dados);
?>
</p>    
<?php
/////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************//
/////////////////////////////////////////////////////////////////////////////////////////////
?> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste o retorno da consulta mesmo zoado.

qual versão do php vc usa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resultado com Erro na Busca:

 

Array ( [id_aluno] => 17 [nome_aluno] => DANIELLE SOPHIA PINHEIRO ALVES [idade] => 6 [rg] => 11.11111111 [situacao] => 123 )

 

Resultado de Todos os Registros:

 

Array ( [0] => Array ( [id_aluno] => 3 [nome_aluno] => FELIPE RAMIRES [idade] => 54 [rg] => 55.654.654-88 [situacao] => CANCELADO ) [1] => Array ( [id_aluno] => 4 [nome_aluno] => MICHAEL TAINAN [idade] => 96 [rg] => 88.546.654-87 [situacao] => ATIVO ) [2] => Array ( [id_aluno] => 6 [nome_aluno] => DANILO [idade] => 27 [rg] => 45465456 [situacao] => MUITO BOM ) [3] => Array ( [id_aluno] => 7 [nome_aluno] => DANILO [idade] => 27 [rg] => 33.964.135-6 [situacao] => MUITO BOM ) [4] => Array ( [id_aluno] => 9 [nome_aluno] => DANILO [idade] => 27 [rg] => 22.222.333 [situacao] => MUITO BOM ) [5] => Array ( [id_aluno] => 10 [nome_aluno] => DANILO [idade] => 27 [rg] => 5454654654 [situacao] => MUITO BOM ) [6] => Array ( [id_aluno] => 15 [nome_aluno] => DANILO [idade] => 27 [rg] => 21222221212 [situacao] => MUITO BOM ) [7] => Array ( [id_aluno] => 16 [nome_aluno] => DANILO [idade] => 27 [rg] => 33.964.135-6 [situacao] => MUITO BOM ) [8] => Array ( [id_aluno] => 17 [nome_aluno] => DANIELLE SOPHIA PINHEIRO ALVES [idade] => 6 [rg] => 11.11111111 [situacao] => 123 ) )

image.jpg

 

 

foto.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

use um foreach para exibir o resultado

 

 

$data = $pager->getPageData();
foreach($data as $item){
 <tr>
    <td><?php echo $item['nome_aluno']; ?></td>   
     <td><?php echo $item['rg']; ?></td>   
     <td><a href="?id=<?php echo $item['id_aluno']; ?>&acao=editar" target="_self">Editar</a></td>  
     <td><a href="?id=<?php echo $item['id_aluno']; ?>&acao=excluir" target="_self">Excluir</a></td>   
</tr>
 
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

n entendi, vc n deveria iterar $dados ao inves de $data?

 

if (!empty($_POST['buscar'])){ 
   $buscar = $_POST['buscar'];
   $dados = buscarAluno($buscar);
 } else {
   $dados = listarAlunos();
 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ei tente isso, concatene os sinais de "%" antes de adicionar ao sql tipo assim:

    <?php
     
    function buscarAluno($buscar) {
    $busca = "%".$buscar."%";     
    $pdo = conectarBanco();
    try {
    $listar = $pdo->prepare("SELECT * FROM alunos WHERE nome_aluno LIKE ? ORDER BY nome_aluno ASC");
    $listar->bindValue(1, $busca);
    $listar->execute();    
    return $listar->fetch(PDO::FETCH_ASSOC);
    } catch(PDOException $error){
    echo "Erro: " . $error ->getMessage();
    }
    }
     
    ?>

e ai la no lugar onde você quer exibir os dados coloca algo do tipo:

 

 

$buscar = $_POST['nome'];

$resultados = buscarAluno($buscar);

if(count($resultados) == 0) $resultados = listaAlunos();

foreach($resultados as $resultado): 
echo $resultado['nome_aluno']."<br/>".$resultado['rg']; 
endforeach;

 

Desculpa ai não ter adaptado melhor para o seu código é que to meio com pressa. Mas acho que isso resolve a parte principal do problema o resto é só estrutura a exibição do resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.