Ir para conteúdo

POWERED BY:

Arquivado

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

eu_Nana

Busca nome em PHP

Recommended Posts

Olá pessoal....

 

Tenho outra dúvida.....tenho uma página com formulário q busca nomes em um banco.....estou usando uma solução indicada aqui msm....porém meu código html e php(consulta) estão na msm página e qnd clico em "enviar" ele não realiza a consulta...alguém sabe oq fiz de errado....esse form carrego dentro de uma div....veja o código:

 

<?
header("Content-Type: text/html; charset=ISO-8859-1",true);
?>

<link rel="shortcut icon" href="../cea_favicon.ico">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="language" content="pt-br" />

<link href="css/estilos.css" rel="stylesheet" type="text/css" />
<link href="css/menu_lat.css" rel="stylesheet" type="text/css" />

<div id="conteudo">

        	<div class="titulo_cea">
            	<div class="page_tile">Consulta</div>
      		</div>
            
            <div style="width:590px; height:auto">
              <DIV style="padding-right:15px; padding-left:5px;">
              
              <div style="padding-left:10px;">
                <div id="equipe">
					
                    
                 <form action="javascript: enviaForm('form', 'ramais.php','conteudo');" name="form" id="form" method="post">
<table width="100%" border="0" cellspacing="1" cellpadding="1">
  <tr>
    <td colspan="15"> </td>
	</tr>
  <tr>
    <td colspan="15"> </td>
  </tr>
  <tr>
    <td colspan="15"> </td>
	</tr>
  <tr>
    <td colspan="15">
		<div align="center">
			<span style="font-size:16px; color:#FF0000; font-weight:bold; padding-left:5px;">
				Entre com o nome para executar consulta			</span>		</div>	</td>
  </tr>
  <tr>
    <td colspan="15"> </td>
  </tr>
  <tr>
    <td colspan="15">
	<div align="center">
          Nome 
            <label>
				<input name="nome" type="text" id="nome" size="40" />
            </label>
        </div>	</td>
 </tr>
  <tr>
    <td colspan="15"> </td>
  </tr>
  <tr>
    <td colspan="15">
		<div align="center">
      		<label><input type="submit" name="enviar" value="Enviar" /> </label>
    	</div>	</td>
  </tr>
  <tr>
    <td colspan="15"></td>
  </tr>
  <tr>
    <td colspan="15"></td>
  </tr>
  <tr>
    <td colspan="15"> </td>
  </tr>
  <tr>
    <td colspan="15">
		<?php

    include "include/conexao.php";
    
    $nome = $_POST['nome'];
	
	if(!empty($nome)){
    
		$sql = "SELECT nome, nome_guerra, email, ramal, unidade FROM equipe where nome like '%$nome%'";
		$rs = mysql_query($sql,$con) or die (mysql_error());
                $count = 0;
        ?>
            <tr style="background-color:#6699CC; color:#FFFFFF; font-weight:bold">
              <td width="10%"><div align="center">Nome</div></td>
              <td width="30%"><div align="center">Nome de Guerra</div></td>
              <td width="30%"><div align="center">Email</div></td>
              <td width="15%"><div align="center">Ramal</div></td>
              <td width="15%"><div align="center">Unidade</div></td>
            </tr>
<?php
		while($linha = mysql_fetch_array($rs)){
			$nome_bd = $linha['nome'];
			$nome_guerra_bd = $linha['nome_guerra'];
			$email_bd = $linha['email'];
			$ramal_bd = $linha['ramal'];
			$unidade_bd  = $linha['unidade'];

                        
                    $count +=1;
                    if ($count%2==0) {
                            $cor ="#ffffff";
                    }else{
                            $cor ="#FFFFCC";
                    }
?>
            <tr style="background-color:<?=$cor?>">
              <td><div align="center">
                <?=$nome_bd?>
              </div>              </td>
              <td><div align="left">
                <?=$nome_guerra_bd?>
              </div>              </td>
              <td><a href="mailto:<?=$email_bd?>"><?=$email_bd?></a></td>
              <td><div align="center">
                <?=$ramal_bd?>
              </div>              </td>
              <td><div align="center">
                <?=$unidade_bd?>
              </div>              </td>
              
            </tr>
  
<?php
                }//fim do while
        }//fim do if
    mysql_close($con);
?>
	</td>
  </tr>
  <tr>
    <td colspan="15"> </td>
  </tr>
</table>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atenção ao action do teu form.

action="javascript: enviaForm('form', 'ramais.php','conteudo');"

Debug essa função Javascript para ver o motivo do form não estar sendo enviado.

Você realmente precisa desse Javascript ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porquê essa função leva as informações como GET.

 

$nome = $_POST['nome'];

E você ta pegando como POST.

 

Troque por

 

$nome = $_GET['nome'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porquê essa função leva as informações como GET.

 

$nome = $_POST['nome'];

E você ta pegando como POST.

 

Troque por

 

$nome = $_GET['nome'];

deu certo....mais sempre acontece essa msg : Notice: Undefined index: nome....como faço para resolver.....?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um if:

if(isset($_GET['nome']) && $_GET['nome'] != "")

a msg some....mais qnd realizo uma busca...ele exibe todos os nomes cadastrados...

 

esta assim parte do codigo...

<?php

    include "../include/conexao.php";
    
    if(isset($_GET['nome']) && $_GET['nome'] != ""){
	
	
	//if(!empty($nome)){
    
		$sql = "SELECT nome, email, ramal, sala, unidade FROM equipe where nome like '%$nome%'";

uma outra coisa q estou tentando fazer.....fazer com q a pessoa busque por nome ou parte do email....tentei assim:

SELECT nome, email, ramal, sala, unidade FROM equipe where nome like '%$nome%' or email like '%$email%';
...mais não deu certo....ele exibe todos os dados....

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php

   include "include/conexao.php"; 
           
   if(isset($_GET['nome'] && $_GET['nome'] != "")
   { 
      $nome = $_GET['nome'];

      $sql = "SELECT nome, nome_guerra, email, ramal, unidade FROM equipe where nome like '%$nome%'";
      $rs = mysql_query($sql,$con) or die (mysql_error());
      $count = 0;

?>

Assim que você está fazendo ?

 

É que você colocou a variável $nome e $email no select sendo que você não atribuiu nenhum valor a elas.

$email = $_GET['email']
$nome = $_GET['nome']

Dentro do If =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que você colocou a variável $nome e $email no select sendo que você não atribuiu nenhum valor a elas.

$email = $_GET['email']
$nome = $_GET['nome']

Dentro do If =)

 

a ultima resposta sua....não entendi....

 

para eu realizar consulta tanto por nome qnt por email ...tentei fazer isso:

if(isset($_GET['nome']) && $_GET['nome'] != ""){
	
		$nome = $_GET['nome'];
		$email = $_GET['email'];
	
    
		$sql = "SELECT nome, email, ramal, sala, unidade FROM equipe where nome like '%$nome%' or email like '%$email%'";

mais não esta dando certo....ele exibe td....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Huum

Veja o que está imprimindo nesse SQL, coloca echo $sql depois dessa linha.

 

qnd entro apenas com o nome ele exibe isso:

 

SELECT nome, email, ramal, sala, unidade FROM equipe where nome like '%joao%' or email like '%%'

 

qnd entro com parte do email apneas.....não exibe nada....

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que verificar, tipo, se um tiver vazio, pesquisa pelo outro.

Mas isso nao interfere na consulta.Mas a solução ta embaixo.

 

<?php

   include "include/conexao.php"; 
           
   if(isset($_GET['nome'] && $_GET['nome'] != "")
   { 
      $nome = $_GET['nome'];
      $email = $_GET['email'];
      
      if(empty($email))
         $sql = "SELECT nome, nome_guerra, email, ramal, unidade FROM equipe where nome like '%$nome%'"; 
      elseif(empty($nome))
         $sql = "SELECT nome, nome_guerra, email, ramal, unidade FROM equipe where email like '%$email%'"; 

      $rs = mysql_query($sql,$con) or die (mysql_error());
      $count = 0;

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a função Javascript que eu pedi.

 

enviaForm()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste a função Javascript que eu pedi.

 

enviaForm()

 

 

ms fazendo as verificações continua saindo em branco...qnd digito parte do email.....o enviaForm segue abaixo...

 

// cria a fila
fila=[];
ifila=0;

// funcao que carrega uma pagina dentro de um objeto qualquer
function carrega(url, destino){
        // coloca o texto "carregando" no objeto de carregamento
        document.getElementById(destino).innerHTML="<table border='0' width='85%' align='center'><tr><td align='center' height='200' width='85%' valign='middle'><img src='imagens/loader2.gif' border='0'></td></tr></table>";

        // adiciona o item na fila
        fila[fila.length]=[url,destino];
        
        // se a fila estiver vazia, inicia a execução
        if((ifila+1)==fila.length)ajaxRun();
}

//Executa a próxima conexão da fila
function ajaxRun(){
        // carrega os dados da pagina da fila
        url             = fila[ifila][0];
        destino = fila[ifila][1];
                
        // carrega a pagina
        xmlRequest.open("GET", url, true);
        
        // headers
        xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xmlRequest.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        xmlRequest.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
        xmlRequest.setRequestHeader("Pragma", "no-cache");

        // ao completar o carregamento
        xmlRequest.onreadystatechange=function() {
                if (xmlRequest.readyState==4){
                        // coloca o valor no objeto requisitado
                        texto=unescape(xmlRequest.responseText.replace(/\+/g," "));
                        document.getElementById(destino).innerHTML=texto;

                        // executa a proxima requisição da lista (se existir)
                        ifila++;
                        if(ifila<fila.length)setTimeout("ajaxRun()",20);
                }
        }
        
        // executa
        xmlRequest.send(url);
}

// função que le todos os campos de um form e envia!
function enviaForm(frmNome, url, destino){
        // Captura o form
        f = document.getElementById(frmNome);
        // inicializa nova URL
        var query=url;
        //Percorre elementos do formulario
        for (i=0;i<f.elements.length;i++){
                        // se for a primeira variavel adiciona o "?" senao adiciona "&"
                        query += i==0 ? '?' : '&';
                        // concatena a variavel na query
                        query += f.elements[i].name + '=' + f.elements[i].value;
        }
        // envia o formulario
        carrega(query, destino);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi,

 

acredito que seja porque, uma vez que você coloca o valor para o nome, o email está sem valor (ou vazio). Talvez esteja acontecendo isso:

 

$nome = "Lucas";
$email = "";

$query = "SELECT * FROM tabela WHERE nome LIKE '%$nome%' OR email LIKE '%$email%'";

Isso me trará todos os resultados, obviamente, pois se for ver, todos os emails vão responder ao "'%%'" ou um caracter vazio... eu não sei bem como explicar a situação, talvez alguém aqui vai saber explicar melhor do que eu, mas se você fizer o teste em qualquer uma de suas tabelas, você verá, faça um teste assim:

 

SELECT * FROM qualquer_tabela WHERE id LIKE '%%';

Ele trará todos os resultados...

 

 

Acho que o ideal seria você fazer assim:

 

 

$palavrachave = "Lucas";

$query = "SELECT * FROM tabela WHERE nome LIKE '%$palavrachave%' OR email LIKE '%$palavrachave%'";

ou

 

 

$nome = "Lucas";
$email = "";

$query = "SELECT * FROM tabela WHERE 1=0";

if (!empty($nome)) {
	$query .= " OR nome LIKE '%$nome%'";
}

if (!empty($email)) {
	$query .= " OR email LIKE '%$email%'";
}

Ou faça do jeito que você preferir, mas você entendeu o que está acontecendo???

 

Espero ter dado uma luz.

 

Abraços,

Lucas Martins

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou faça do jeito que você preferir, mas você entendeu o que está acontecendo???

 

 

Entendi oq você disse...

 

Realizei os testes q você sugeriu....mais continua do msm jeito....ou exibe só qnd digito o nome....e qnd tento pelo email não exibe a consulta....e o contrario tb ...mais não esta dando consultar tanto pelo no qnt pelo email...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que você já deve ter modificado bastante aquele primeiro código q você postou, poste novamente para podermos analisar melhor.

 

Ah, e se você puder também postar uma URL de exemplo de quando você faz uma pesquisa, seria legal para vermos se está certo ou não os parâmetros da URL.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora que você já deve ter modificado bastante aquele primeiro código q você postou, poste novamente para podermos analisar melhor.

 

Ah, e se você puder também postar uma URL de exemplo de quando você faz uma pesquisa, seria legal para vermos se está certo ou não os parâmetros da URL.

 

Abraços

 

 

fiz assim....parte do código

 

<?php

    include "include/conexao.php";
    
    if(isset($_GET['nome']) && $_GET['nome'] != ""){
	
		$nome = $_GET['nome'];
		$email = $_GET['email'];


if (!empty($nome)) {
       $sql = "SELECT nome, email, ramal, sala, unidade FROM equipe where nome LIKE '%$nome%'";
}

elseif (!empty($email)) {
        $sql = "SELECT nome, email, ramal, sala, unidade FROM equipe where email LIKE '%$email%'";
}

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.