1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda a pesquisar nome na base de dados

Discussão em 'Web Development' iniciada por Aphex, 3 de Dezembro de 2012. (Respostas: 2; Visualizações: 600)

  1. Aphex

    Aphex Power Member

    Boas pessoal, tenho um questão, estou a tentar fazer com que ao carregar no botão pesquisar a minha função e query pesquisem na base de dados e apresente os resultados numa tabela...só que o resultado é sempre que não encontrou o que procuro, mesmo que esteja lá na base de dados o que escrevi.. não consigo perceber o porquê.

    aqui fica o meu código:


    FORM:

    <form action="" method="post">
    <p>
    <input type="text" name="pesquisar" size="60"> <input type="submit" value="Pesquisar"/>
    </p>
    </form>

    -----------------------------------------------------------------------

    CÓDIGO NA INDEX.PHP

    <?php

    if (isset($_POST['pesquisar'])) {
    $suffix = "";
    $pesquisar = mysql_real_escape_string(htmlentities(trim($_POST['pesquisar'])));

    $errors = array();

    if (empty($pesquisar)) {
    $errors[] = 'Por favor digite os dados a procurar!';
    } else if (strlen($pesquisar)<3) {
    $errors[] = 'O termo que procura deve ter pelo menos 3 caracteres!';
    } else if (pesquisar_cliente($pesquisar) === false) {
    $errors[] = 'Os resultados para '.$pesquisar.' não foram encontrados!';
    }

    if (empty($errors)) {

    $results = pesquisar_cliente($pesquisar);
    $results_num = count($results);

    $suffix = ($results_num !=1) ? 's' : '';

    echo '<p> A sua procura para <strong>', $pesquisar, '</strong> encontrou <strong>', $results_num, '</strong> resultado', $suffix, '!</p>';

    foreach($results as $result) {
    echo '<table>';
    echo '<tr>';
    echo '<th>ID</th>';
    echo '<th>Nome</th>';
    echo '<th>Telefone</th>';
    echo '<th>Morada</th>';
    echo '<th>Email</th>';
    echo '<th>Serviço</th>';
    echo '<th>NºPeças</th>';
    echo '<th>Arranjo</th>';
    echo '</tr>';

    echo '<tr>';
    echo '<td>', $result['id_cliente'], '</td>';
    echo '<td>', $result['nome_cliente'], '</td>';
    echo '<td>', $result['telefone_cliente'], '</td>';
    echo '<td>', $result['morada_cliente'], '</td>';
    echo '<td>', $result['email_cliente'], '</td>';
    echo '<td>', $result['servico'], '</td>';
    echo '<td>', $result['n_pecas'], '</td>';
    echo '<td>', $result['tp_arranjo'], '</td>';
    echo '</tr>';
    echo '</table>';

    echo '<br>';
    }

    } else {
    foreach($errors as $error) {
    echo $error, '</br>';
    }
    }
    }
    ?>

    ------------------------------------------------------------------------------

    CÓDIGO DA MINHA FUNÇÃO:

    function pesquisar_cliente($pesquisar) {
    $returned_results = array();
    $where = "";

    $pesquisar = preg_split('/[\s]+/', $pesquisar);
    $total_pesquisar = count($pesquisar);

    foreach($pesquisar as $key=>$keyword) {
    $where .= "`pesquisar` LIKE '%$keyword%'";
    if ($key != ($total_pesquisar -1)) {
    $where .= " AND ";
    }
    }
    $results = "SELECT `nome_cliente`, `telefone_cliente`, `morada_cliente`, `email_cliente`, `servico`, `n_pecas`, `tp_arranjo`, `descricao`
    FROM `clientes` WHERE $where";

    $results_num = ($results = mysql_query($results)) ? mysql_num_rows($results) : 0;

    if ($results_num === 0) {
    return false;

    } else {

    while ($results_row = mysql_fetch_assoc($results)) {
    $returned_results[] = array(
    'nome_cliente' => $results_row['nome_cliente'],
    'telefone_cliente' => $results_row['telefone_cliente'],
    'morada_cliente' => $results_row['morada_cliente'],
    'email_cliente' => $results_row['email_cliente'],
    'servico' => $results_row['servico'],
    'n_pecas' => $results_row['n_pecas'],
    'tp_arranjo' => $results_row['tp_arranjo']
    );

    }
    return $returned_results;
    }

    }
    --------------------------------------------------------------------------------------------------------

    Se me puderem ajudar ficava muito agradecido..

    Abraço
     
  2. paulo.correia

    paulo.correia Banido

    Não sei muito de PHP, mas assim de repente, o problema é na Condição do Where, onde metes AND. Ou seja, o campo tem que ter o texto X + o texto Y + o texto Z + o texto N... ou seja, basta não encontrar uma das condições que já não é escolhido. Nestes casos, tenta fazer um print da query final para identificares qual a query estás a executar e se está com a lógica correcta ou não....
     
  3. Aphex

    Aphex Power Member

    Resolvido!! Obrigado!
     

Partilhar esta Página