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

Consulta: Registros iniciados pela letra "X"


Martinsrj

Pergunta

Olá pessoal, tudo bom?

Tenho uma consulta aproximada conforme nos mostra abaixo, mas não exibe na tela todos funcionários que estão cadastrado no banco de dados que começam com a letra P.

$declar = "select nome, unidade, telefone, email, cargo from funcionarios where nome LIKE '%$nome%'";

a consulta acima funciona numa boa, mas gostaria que exibise na tela vários funcionário. Exemplo: Eu digito pra, então gostaria que viesse a exibir na tela todos os Paulo que estão cadastrado.

Abaixo estão o codigo inteiro:

http://br.geocities.com/pauloleandrorj/consulta.html http://br.geocities.com/pauloleandrorj/consultaphp.html .

Desde já agradeço pela atenção :D

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Primeiramente, bem-vindo ao fórum.

Dê uma lida nas regras, pois o título que você deu ao tópico foi inadequado.

Título editado:

Ajuda Urgente: Consulta! -> Consulta: Registros iniciados pela letra "X"

Deixe sua consulta assim:

$declar = "select nome, unidade, telefone, email, cargo from funcionarios where nome LIKE '$nome%'"

O "%" antes de $nome fazia com que qualque caractere antes da variável fosse considerado.

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

tente isso

<?php

// Recebe variável global do formulário
global $nome;

// Tirar espaço em branco da variável recebida através do formulário
//$nome = trim ($nome);


// Consiste Nome
if (empty ($nome)) {

            $html = file ("consulta.html");
            $html = implode (" ",$html);
            $erro = "<center><font color=\"#ff0000\"> Preencha o campo <b> Nome </b></font></center>";
            $html = str_replace ("<!mensagem>",$erro,$html);
            echo ($html);
}else {
            echo ("<p><center>Teste width=\"640\" height=\"44\"></center></p>");
         
            // Cria uma conexão com o servidor Mysql
            // Parâmetros: host, username, senha
            $conec = mysql_connect ("localhost", "root", "root");

             // Declaração do SQL

          $declar = "select nome, unidade, telefone, email, cargo from funcionarios where nome LIKE '$nome%'";
 // Roda a query e verifica se encontrou registro

            $query = mysql_query ($declar, $conec) or die ("Erro no acesso ao banco");

            $achou = mysql_num_rows($query);

            // echo ($achou);

            // Se encontrou, guarda as variáveis

            if ($achou > 0) {

                        $row = mysql_fetch_row ($query);
                        $nome = $row[0];
                        $unidade = $row[1];
                        $telefone = $row[2];
                        $email = $row[3];
                        $cargo = $row[4];
                        echo ("<BR>");
                        echo ("<table width=\"640\" border=\"0\" cellspacing=\"0\" align=\"center\"> <tr><td>");
                        echo ("<b> Resultado da Consulta </b>");
                        echo ("<br><br>");
                        echo ("<b> Nome: </b> $nome <br>");
                        echo ("<b> Unidade: </b> $unidade <br>");
                        echo ("<b> Telefone: </b> $telefone <br>");
                        echo ("<b> E-mail: </br> $email <br>");
                        echo ("<b> Cargo: </b> $cargo <br>");
                        echo ("</td> </tr> </table>");
                        echo ("<center> <b> <a href=\"consulta.html\">Voltar</a></b></center>");
        }else {

                        echo ("<br>");
                        echo ("<center> <b> Funcionário não cadastro </b> </center>");
                        echo ("<br>");
                        echo ("<center> <b> <a href=\"consulta.html\">Voltar</a> </b> </center>");

            }

}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Mas pelo menos 1 aparece? Se é essa a dúvida, o problema está no mysql_fetch_array(). Desta forma, a função só retornará o primeiro registro encontrado.

Para os demais registros, você deve envolver as ações de quando se acha um registro (imprimir os dados na tela, por exemplo) dentro de um while. Assim, você deve fazer as seguintes alterações no seu arquivo:

Trocar disto:

if ($achou > 0) {
    $row = mysql_fetch_row ($query);
    $nome = $row[0];
    $unidade = $row[1];
    $telefone = $row[2];
    $email = $row[3];
    $cargo = $row[4];
    echo ("<BR>");
    echo ("<table width=\"640\" border=\"0\" cellspacing=\"0\" align=\"center\"> <tr><td>");
    echo ("<b> Resultado da Consulta </b>");
    echo ("<br><br>");
    echo ("<b> Nome: </b> $nome <br>");
    echo ("<b> Unidade: </b> $unidade <br>");
    echo ("<b> Telefone: </b> $telefone <br>");
    echo ("<b> E-mail: </br> $email <br>");
    echo ("<b> Cargo: </b> $cargo <br>");
    echo ("</td> </tr> </table>");
    echo ("<center> <b> <a href=\"consulta.html\">Voltar</a></b></center>");
}
Para isso:
if ($achou > 0) {
    while($row = mysql_fetch_row ($query)) {
        $nome = $row[0];
        $unidade = $row[1];
        $telefone = $row[2];
        $email = $row[3];
        $cargo = $row[4];
        echo ("<BR>");
        echo ("<table width=\"640\" border=\"0\" cellspacing=\"0\" align=\"center\"> <tr><td>");
        echo ("<b> Resultado da Consulta </b>");
        echo ("<br><br>");
        echo ("<b> Nome: </b> $nome <br>");
        echo ("<b> Unidade: </b> $unidade <br>");
        echo ("<b> Telefone: </b> $telefone <br>");
        echo ("<b> E-mail: </br> $email <br>");
        echo ("<b> Cargo: </b> $cargo <br>");
        echo ("</td> </tr> </table>");
        echo ("<center> <b> <a href=\"consulta.html\">Voltar</a></b></center>");
    }
}

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei dessa forma, mas deu o seguinte erro: Parse error: parse error, unexpected $end in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\projeto1\consulta.php on line 34

alguém poderia me ajudar a desvendar aonde que eu estou pecando?

Desde já agradeço a todos.

<?php
// Recebe variável global do formulário
// Tirar espaço em branco da variável recebida através do formulário
$nome = trim($_POST["nome"]);

// Consiste Nome
if (empty ($nome)) {
    $html = file ("consulta.html");
    $html = implode (" ",$html);
    $erro = "<center><font color=\"#ff0000\"> Preencha o campo <b> Nome </b></font></center>";
    $html = str_replace ("<!mensagem>",$erro,$html);
    echo ($html);
}
else {
    echo ("<p><center>Teste width=\"640\" height=\"44\"></center></p>");
        
    // Cria uma conexão com o servidor Mysql
    // Parâmetros: host, username, senha
    $conec = mysql_connect ("localhost", "root", "root") or die(mysql_error());
    mysql_select_db(tachion) or die(mysql_error());
    $query = mysql_query("SELECT $nome, $unidade, $telefone, $email, $cargo FROM funcionarios") or die                (mysql_error());
    while (list ($nome, $unidade, $telefone, $email, $cargo) = mysql_fetch_array($query)) {
    echo $nome . $unidade . $telefone . $email . $cargo;
}

?>
---- Tentei por esse codigo, mas da erro ao acesso ao banco. fiz uma pequena modificação, pois se não ele sempre informa preencha os campos. De: global $nome; para: $nome = trim($_POST["nome"]);
<?php

// Recebe variável global do formulário
// global $nome;
$nome = trim($_POST["nome"]);

// Tirar espaço em branco da variável recebida através do formulário
//$nome = trim ($nome);


// Consiste Nome
if (empty ($nome)) {

            $html = file ("consulta.html");
            $html = implode (" ",$html);
            $erro = "<center><font color=\"#ff0000\"> Preencha o campo <b> Nome </b></font></center>";
            $html = str_replace ("<!mensagem>",$erro,$html);
            echo ($html);
}else {
            echo ("<p><center>Teste width=\"640\" height=\"44\"></center></p>");
         
            // Cria uma conexão com o servidor Mysql
            // Parâmetros: host, username, senha
            $conec = mysql_connect ("localhost", "root", "root");

             // Declaração do SQL

          $declar = "select nome, unidade, telefone, email, cargo from funcionarios where nome LIKE '$nome%'";
// Roda a query e verifica se encontrou registro

            $query = mysql_query ($declar, $conec) or die ("Erro no acesso ao banco");

            $achou = mysql_num_rows($query);

            // echo ($achou);

            // Se encontrou, guarda as variáveis

           if ($achou > 0) {
    while($row = mysql_fetch_row ($query)) {
        $nome = $row[0];
        $unidade = $row[1];
        $telefone = $row[2];
        $email = $row[3];
        $cargo = $row[4];
        echo ("<BR>");
        echo ("<table width=\"640\" border=\"0\" cellspacing=\"0\" align=\"center\"> <tr><td>");
        echo ("<b> Resultado da Consulta </b>");
        echo ("<br><br>");
        echo ("<b> Nome: </b> $nome <br>");
        echo ("<b> Unidade: </b> $unidade <br>");
        echo ("<b> Telefone: </b> $telefone <br>");
        echo ("<b> E-mail: </br> $email <br>");
        echo ("<b> Cargo: </b> $cargo <br>");
        echo ("</td> </tr> </table>");
        echo ("<center> <b> <a href=\"consulta.html\">Voltar</a></b></center>");
    }
}
    else {

                        echo ("<br>");
                        echo ("<center> <b> Funcionário não cadastro </b> </center>");
                        echo ("<br>");
                        echo ("<center> <b> <a href=\"consulta.html\">Voltar</a> </b> </center>");

            }

}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Opa..

Não havia prestado atenção. Pode não ser este, o erro principal, mas troca de mysql_fetch_row por mysql_fetch_array, dentro do while.

Outra coisa: você esqueceu de selecionar qual base de dados ele deverá usar. Você definiu a tabela, no SELECT, mas esta tabela está em que base?

Use: mysql_select_db("base", $conec); antes do mysql_query.

No OR DIE() do mysql_query, tire a mensagem que está e coloque a função mysql_error().

$query = mysql_query(...) or die(mysql_error());

Isto irá mostrar qual o erro que o mysql retornou. Me ajuda muito, a descobrir alguns erros.

Tenta aí. Qualquer coisa, é só postar.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá pessoal, consegui através desse código abaixo, mas vou testar também o codigo acima do ikkinet.

$nome = trim($_POST["nome"]);
if (empty ($nome)) {
    $html = file ("consulta.html");
    $html = implode (" ",$html);
    $erro = "<center><font color=\"#ff0000\"> Preencha o campo <b> Nome </b></font></center>";
    $html = str_replace ("<!mensagem>",$erro,$html);
    echo ($html);
}
else {
    echo ("<p><center>Resultado</center></p>");    
    $conec = mysql_connect ("localhost", "root", "root") or die(mysql_error());
    mysql_select_db(tachion) or die(mysql_error());
    $query = mysql_query("SELECT nome, unidade, telefone, email, cargo FROM funcionarios") or die                (mysql_error());
    while (list ($nome, $unidade, $telefone, $email, $cargo) = mysql_fetch_array($query)) {
    echo ("$nome<br>");
    echo ("$unidade<br>");
    echo ("$telefone<br>");
    echo ("$email<br>");
    echo ("$cargo<br><br>");
    //echo $nome <br> $unidade <br> $telefone <br> $email <br> $cargo;
     }
---- Deu certo em parte, mas... Olá ikkinet, beleza???!!! O codigo abaixo está funcionando em parte. No meu banco de dados para estudo tem vários funcionários. Exemplo: Paulo, Paulo Jose, Erico... Porem quando eu realizo a pesquisa colocando a letra P ele me busca todos os funcionários cadastrado e não uma pesquisa aproximada. Quero que busque apenas o funcionário que comecça com a letra P desejada e não todos que estão no banco.
<body bgcolor="#ffffff" text="#000000" link="#333399" vlink="#cc0000" alink="#663399">
<?php
// Recebe variável global do formulário
// Tirar espaço em branco da variável recebida através do formulário
$nome = trim($_POST["nome"]);

// Consiste Nome
if (empty ($nome)) {
$html = file ("consulta.html");
$html = implode (" ",$html);
$erro = "<center><font color=\"#ff0000\"> Preencha o campo <b> Nome </b></font></center>";
$html = str_replace ("<!mensagem>",$erro,$html);
echo ($html);
}
else {
// echo ("<p><center>Resultadowidth=\"640\" height=\"44\"></center></p>");
echo ("<p><center>Resultado</center></p>"); 
// Cria uma conexão com o servidor Mysql
// Parâmetros: host, username, senha
$conec = mysql_connect ("localhost", "root", "root") or die(mysql_error());
mysql_select_db(tachion) or die(mysql_error());
$query = mysql_query("SELECT nome, unidade, telefone, email, cargo FROM funcionarios") or die (mysql_error());
while (list ($nome, $unidade, $telefone, $email, $cargo) = mysql_fetch_array($query)) {
echo ("$nome<br>");
echo ("$unidade<br>");
echo ("$telefone<br>");
echo ("$email<br>");
echo ("$cargo<br><br>");
//echo $nome <br> $unidade <br> $telefone <br> $email <br> $cargo;
}
}

?>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Bom, a diferença, agora, está na consulta SQL. O problema que havia resolvido era somente quanto ao PHP, para que ele mostrasse todos os resultados obtidos da Query.

Agora é só adicionar uma clausula WHERE nome LIKE '$nome%' no comando SQL (SELECT nome, unidade, telefone, email, cargo FROM funcionarios WHERE nome LIKE '$nome%').

Qualquer dúvida, só perguntar.

Link para o comentário
Compartilhar em outros sites

  • 0

Erro de exclusão...

Olá pessoal, tudo bom?!

Sou iniciante em php e gostaria da ajuda dos experiente na linguagem e até mesmo dicas para otimizar o meu aprendizado.

Estou criando um sisteminha de inclusão, consulta, exclusão e alteração de cadastro de funcionário.

A parte de inclusão, consulta estão ok graças a ajuda de todos dessa comunidade, mas estou brekando no código exclusão: http://br.geocities.com/pauloleandrorj/exclusao.html que é composto de um outro código php Exibe_mensagem: http://br.geocities.com/pauloleandrorj/exibe_mensagem.html. Quando digito o nome do funcionário completo que sei que existe no banco de dados ele dá a seguinte mensagem: Preencha o campoNome.

OBS: Já utilizei das duas formas abaixo, mas sem sucesso:

// Recebe variáveis globais do formulário

global $nome;

$nome = trim($nome);

// Tirar espaço em branco da variável recebida através do formulário

// $nome = trim($_POST["nome"]);

Por favor, me ajuda aí.

Sem mais,

Paulo Martins

Link para o comentário
Compartilhar em outros sites

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...