Ir para conteúdo

POWERED BY:

Arquivado

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

11closed

[Resolvido] Pesquisa no BD ñ esta funcionando

Recommended Posts

ola tudo bem galera..

 

Estou com um problema aqui, na hora de pesquisar..olha o codigo !!

 

pes_protutos_marca.php

<script src="../principal/scripts/scripts.js" type="text/javascript" ></script>

<div id="por_marca">
<label>Pesquisando por Marca: <input type="text" name="marca" id="marca" class="pesnormal"  onKeyUp="escondeAdm(1); setarCampos_marca(); enviarForm('pes_produt_busca_marca.php', campos, 'divResultado');  return false;" /> </label>
</div>
<div id="adm1" style="visibility:hidden;">
</div>
<div id="divResultado" style='visibility:hidden;'>
</div>

 

 

scripts.js


function setarCampos_marca() {
campos = "marca="+(document.getElementById('marca').value);
}

function escondeAdm(n){
evt=n;
if(evt == "1"){
func1=document.getElementById("adm1");
func2=document.getElementById("divResultado");
func1.style.visibility="hidden";
func2.style.visibility="visible";
}
}

function escondeRes(n){
evt=n;
if(evt == "1") {
func1=document.getElementById("divResultado");
func1.style.visibility="hidden";
}
}
//  ajax.js
var navegador = navigator.userAgent.toLowerCase(); //Cria e atribui à variável global 'navegador' (em caracteres minúsculos) o nome e a versão do navegador
var xmlhttp; //Cria uma variável global chamada 'xmlhttp'

//Função que inicia o objeto XMLHttpRequest
function objetoXML() {
if (navegador.indexOf('msie') != -1) { //Internet Explorer
	var controle = (navegador.indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; //Operador ternário que adiciona o objeto padrão do seu navegador (caso for o IE) à variável 'controle'
	try {
		xmlhttp = new ActiveXObject(controle); //Inicia o objeto no IE
	} catch (e) { }
} else { //Firefox, Safari, Mozilla
	xmlhttp = new XMLHttpRequest(); //Inicia o objeto no Firefox, Safari, Mozilla
}
}

//Função que envia o formulário
function enviarForm(url, campos, destino) {
var elemento = document.getElementById(destino); //Atribui à variável 'elemento' o elemento que irá receber a página postada
objetoXML(); //Executa a função objetoXML()
if (!xmlhttp) { //Se o objeto de 'xmlhttp' não estiver true
	elemento.innerHTML = 'Impossível iniciar o objeto XMLHttpRequest.'; //Insere no 'elemento' o texto atribuído
	return;
} else { //Senão
	elemento.innerHTML = 'Carregando...'; //Insere no 'elemento' o texto atribuído
}
xmlhttp.onreadystatechange = function () {
   	if (xmlhttp.readyState == 4 || xmlhttp.readyState == 0) { //Se a requisição estiver completada
   		if (xmlhttp.status == 200) { //Se o status da requisição estiver OK
   			elemento.innerHTML = xmlhttp.responseText; //Insere no 'elemento' a página postada
   		} else { //Senão
   			elemento.innerHMTL = 'Página não encontrada!'; //Insere no 'elemento' o texto atribuído
   		}
   	}
}
xmlhttp.open('POST', url+'?'+campos, true); //Abre a página que receberá os campos do formulário
xmlhttp.send(campos); //Envia o formulário com dados da variável 'campos' (passado por parâmetro)
}

 

 

pes_produt_busca_marca.php


extract($_POST);

$marca = $_GET['marca']; 

echo "TESTE: ".$marca."<br><br><br><br>";

 

 

A $marca sempre fica vazia. porque sera ?

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola tudo bem galera..

 

Estou com um problema aqui, na hora de pesquisar..olha o codigo !!

 

pes_protutos_marca.php

<script src="../principal/scripts/scripts.js" type="text/javascript" ></script>

<div id="por_marca">
<label>Pesquisando por Marca: <input type="text" name="marca" id="marca" class="pesnormal"  onKeyUp="escondeAdm(1); setarCampos_marca(); enviarForm('pes_produt_busca_marca.php', campos, 'divResultado');  return false;" /> </label>
</div>
<div id="adm1" style="visibility:hidden;">
</div>
<div id="divResultado" style='visibility:hidden;'>
</div>

 

 

scripts.js


function setarCampos_marca() {
campos = "marca="+(document.getElementById('marca').value);
}

function escondeAdm(n){
evt=n;
if(evt == "1"){
func1=document.getElementById("adm1");
func2=document.getElementById("divResultado");
func1.style.visibility="hidden";
func2.style.visibility="visible";
}
}

function escondeRes(n){
evt=n;
if(evt == "1") {
func1=document.getElementById("divResultado");
func1.style.visibility="hidden";
}
}
//  ajax.js
var navegador = navigator.userAgent.toLowerCase(); //Cria e atribui à variável global 'navegador' (em caracteres minúsculos) o nome e a versão do navegador
var xmlhttp; //Cria uma variável global chamada 'xmlhttp'

//Função que inicia o objeto XMLHttpRequest
function objetoXML() {
if (navegador.indexOf('msie') != -1) { //Internet Explorer
	var controle = (navegador.indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; //Operador ternário que adiciona o objeto padrão do seu navegador (caso for o IE) à variável 'controle'
	try {
		xmlhttp = new ActiveXObject(controle); //Inicia o objeto no IE
	} catch (e) { }
} else { //Firefox, Safari, Mozilla
	xmlhttp = new XMLHttpRequest(); //Inicia o objeto no Firefox, Safari, Mozilla
}
}

//Função que envia o formulário
function enviarForm(url, campos, destino) {
var elemento = document.getElementById(destino); //Atribui à variável 'elemento' o elemento que irá receber a página postada
objetoXML(); //Executa a função objetoXML()
if (!xmlhttp) { //Se o objeto de 'xmlhttp' não estiver true
	elemento.innerHTML = 'Impossível iniciar o objeto XMLHttpRequest.'; //Insere no 'elemento' o texto atribuído
	return;
} else { //Senão
	elemento.innerHTML = 'Carregando...'; //Insere no 'elemento' o texto atribuído
}
xmlhttp.onreadystatechange = function () {
   	if (xmlhttp.readyState == 4 || xmlhttp.readyState == 0) { //Se a requisição estiver completada
   		if (xmlhttp.status == 200) { //Se o status da requisição estiver OK
   			elemento.innerHTML = xmlhttp.responseText; //Insere no 'elemento' a página postada
   		} else { //Senão
   			elemento.innerHMTL = 'Página não encontrada!'; //Insere no 'elemento' o texto atribuído
   		}
   	}
}
xmlhttp.open('POST', url+'?'+campos, true); //Abre a página que receberá os campos do formulário
xmlhttp.send(campos); //Envia o formulário com dados da variável 'campos' (passado por parâmetro)
}

 

 

pes_produt_busca_marca.php


extract($_POST);

$marca = $_GET['marca']; 

echo "TESTE: ".$marca."<br><br><br><br>";

 

 

A $marca sempre fica vazia. porque sera ?

 

t+

$_POST so funciona pra requisicoes post, e $_GET so pra requisicoes get, seu ajax esta enviado requisicoes post, logo $marca fica vazio...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola igor, mas o que você suponha que eu faça ?

 

eu troquei isso

$marca = $_GET['marca'];

 

por isso

 

$marca = $_POST['marca'];

 

ñ mudo nada !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, reveja seu ajax...eu vi q no seu pseudo form ele esta enviando uma variavel em js campos q saiu do nada...ou seja, undefined..e esta sendo enviada pelo ajax em branco....o q eu suponho q você faça eh usar o firefox com o firebug pra ver como o seu ajax esta trabalho, uma segunda opcao seria usar o ajax do jquery...q esta melhor consolidada e testada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá 11closed,

 

 

como o Igor comentou...

 

o seu problema está sim em fazer requisição via POST e querer recuperá-la por GET

 

porém para corrigir esse erro você tem fazer a seguinte mudança

 

//onde você encontrar essa linha
xmlhttp.open('POST', url+'?'+campos, true); //Abre a página que receberá os campos do formulário
       xmlhttp.send(campos); //Envia o formulário com dados da variável 'campos' (passado por parâmetro)

//troque por essa linha abaixo
xmlhttp.open('GET', url+'?'+campos, true); //Abre a página que receberá os campos do formulário
       xmlhttp.send(campos); //Envia o formulário com dados da variável 'campos' (passado por parâmetro)

 

o que ocorre nesse caso, é que você está mandar uma requisição POST com variáveis na URL, logo não iria encontrar essas váriaveis no lado do servidor pq o POST carrega os valores pelo form e não pela URL...

para você trazer as informações por url o envio das suas informações em

 

 
xmlhttp.open('POST', url+'?'+campos, true); 
//foi necessário a troca da de POST para GET para funcionar, pq 'url+?campos' 
//indica que vão valores pela url

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola Tafarel

 

fiz o que você mencionou, e ñ deu. coloquei um alert para debug assim

 

alert(url+'?'+campos);

digitei "a" no formulario me retornou isso no alert

 

pes_produt_busca_marca.php?marca=a

 

no pes_produt_busca_marca.php deixei assim

 

 

$marca = $_GET['marca'];

echo $marca."<br><br><br><br>";

ñ sei pq ñ deu certo, o GET ainda esta vazio.

 

Igor, ñ sei se eu entendi o q você quis dizer,

.eu vi q no seu pseudo form ele esta enviando uma variavel em js campos q saiu do nada...ou seja, undefined..e esta sendo enviada pelo ajax em branco....

 

 

a variavel campo esta aq


function setarCampos_marca() {
campos = "marca="+(document.getElementById('marca').value);
}

 

 

baixei o firebug, pença nun baguio complicado rsrs. me fala que ñ é em DOM q tem que procurar o erro. haha ñ entendi nada lah..

Bom mas se for aonde eu tenho que ver, pq lah tem tanta coisa que nen sei aonde ver..

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

não tem aba rede aq, o firebug não acusa nenhum erro..

 

fui em Console/all/Post no firebug, e estava lah

 

marca=awd

 

 

awd oq eu digitei no formulario de pesquisa, ñ sei o que fazer !

 

eu tenho um outro lugar que estou usando exatamente o msm script e ele esta funcionando normalmente... nessa parte apos eu implementar a URL amigavel o script parou de funcionar..

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola igor, pesquisei para poder entender o que esta acontecendo de errado, e descobri que provavelmente eu tenha que adaptar a paginação na URL amigavel.

 

porém não estou conseguindo fazer

 

olha meu .htaccess


RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)$ index.php?url=$1 

 

 

o que eu tenho que fazer ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao, toda a sua url esta sendo enviada pra ca, toda a sua requisicao

 

RewriteRule (.*)$ index.php?url=$1

 

como o php recupera isto? pode me mostrar o script?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Velho nem li tudo pq fiquei com raiva. faz algo desse tipo

 

/********************* pag.html **************************/

[...]
<script src="JQUERY.js" ></script> <!-- Necessário -->
<script>
     $(document).ready(function(){
           $.ajax({
                 type: "POST",
                 url: "ajax.php",
                 data: "marca=" + escape($("#marca").val()),
                 success: function(data){
                       $("#resultado").val(unescape(data));
                 }
           });
     });
</script>
<body>

     <input type="text" id="marca" />
     <input type="button" id="submit" value="enviar" />
     <div id="resultado" > </div>

</body>
[...]

/*********************** ajax.php *********************/

<?php

$query = "select * from produtos where marca = " . $_POST['marca'];
$re = mysql_query($query);

$result = "";
while($l = mysql_fetch_array($re)){
     $result .= "<b>" . $l['produto'] . "</b>\n<br />\n";
}

echo utf8_encode($result);
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta aqui

 

a index.php


include("config/config.php");
include("functions.php");

 

 

functions.php


   $url       = isset($_GET['url']) ? $_GET['url'] : 'home';
   $separar  = explode('/', $url);
   $pagina   = (isset($separar[0])) ? $separar[0] : 'home';
$sub_pagina   = (isset($separar[1])) ? $separar[1] : 'home';

$query = mysql_query("SELECT * FROM $tabela2 WHERE URL_EMP = '".mysql_real_escape_string($pagina)."'");
   $row   = mysql_fetch_assoc($query);
$qts   = mysql_num_rows($query); 

if ($pagina == "home"){
	include("principal/index.php");
} else if ($qts >= 1){
	include("emps/arquivos.php"); // pag da emp
} else {
	include("emps/erro.php");
}

 

 

arquivos.php

if ($sub_pagina == "home"){
// aq a home da emp

} 
else if ($sub_pagina == "quemsomos"){
	include("emps/quemsomos.php");
} else if ($sub_pagina == "historia"){
	include("emps/historia.php");
} else if ($sub_pagina == "empresa"){
	include("emps/empresa.php");
} else if ($sub_pagina == "localizacao"){
	include("emps/localizacao.php");
} else if ($sub_pagina == "produtos"){
	include("emps/produtos.php");
} else if ($sub_pagina == "contrato"){
	include("emps/contrato.php");
} else if ($sub_pagina == "produtos_completo"){
	include("emps/produtos_completo.php");
} else if ($sub_pagina == "pes_protutos_marca"){
	include("emps/pes_protutos_marca.php");
} else if ($sub_pagina == "pes_produt_busca_marca.php"){
	include("emps/pes_produt_busca_marca.php");
} 
else {
	include("emps/erro.php");
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, entao se você esta usando url amigaveis, você nao pode fazer algo do tipo

 

pagina.php?marca=123, você tem q fazer pagina/marca/123, ae sim ele vai pegar

 

so uma dica, no seu arquivo arquivos.php, onde tem um monte de if's, precisa usar switch, vai ficar mais legivel, eh so uma dica....

 

outra coisa

 

se sua url tiver mais de um parametro, como você vai usar os outros parametros? nesse da marca ae você vai precisade de pelo menos 2 parametros

 

error line

} else if ($qts >= 1){

include("emps/arquivos.php"); // pag da emp

 

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.