eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 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
William Bruno 1501 Denunciar post Postado Fevereiro 25, 2010 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
Dee 0 Denunciar post Postado Fevereiro 25, 2010 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
eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 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
Dee 0 Denunciar post Postado Fevereiro 25, 2010 Faz um if: if(isset($_GET['nome']) && $_GET['nome'] != "") Compartilhar este post Link para o post Compartilhar em outros sites
eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 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
Dee 0 Denunciar post Postado Fevereiro 25, 2010 <?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
eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 É 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
Dee 0 Denunciar post Postado Fevereiro 25, 2010 Huum Veja o que está imprimindo nesse SQL, coloca echo $sql depois dessa linha. Compartilhar este post Link para o post Compartilhar em outros sites
eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 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
Dee 0 Denunciar post Postado Fevereiro 25, 2010 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
William Bruno 1501 Denunciar post Postado Fevereiro 25, 2010 Poste a função Javascript que eu pedi. enviaForm() Compartilhar este post Link para o post Compartilhar em outros sites
eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 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
lucasmartins 6 Denunciar post Postado Fevereiro 25, 2010 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
eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 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
lucasmartins 6 Denunciar post Postado Fevereiro 25, 2010 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
eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 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
Dee 0 Denunciar post Postado Fevereiro 25, 2010 Então, mas você nao tem o campo email no seu formulário tem ? Compartilhar este post Link para o post Compartilhar em outros sites
eu_Nana 0 Denunciar post Postado Fevereiro 25, 2010 Então, mas você nao tem o campo email no seu formulário tem ? tenho....eu coloquei.. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Fevereiro 25, 2010 na primeira linha coloque var_dump($_GET) poste aqui o resultado para ambos os testes: nome e-mail Compartilhar este post Link para o post Compartilhar em outros sites