Jump to content
Fórum Script Brasil
  • 0

Consulta: Registros iniciados pela letra "X"


Martinsrj
 Share

Question

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 to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...