Jump to content


Photo

Problemas Com $_get No Firefox


  • Faça o login para participar
14 replies to this topic

#1 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 30/07/2008, 15:29

Olá galera tudo jóia?
Pessoal eu estou com um probleminha estranho, eu tenho 2 combos onde o segundo depende do que vc escolher no primeiro, até aí tudo bem, o meu problema é na hora de pegar os valores deste combos, no Internet Explorer funciona legalzinho já no Firefox não pega, estou usando o método GET para passar os dados, no Internet Explorer aparece na URL todos os dados que eu preciso, já no FF falta os dados do segundo combo, carregado em ajax no formulário, mais eu já verifiquei os nomes dos campos e estão certinhos.
A minha dúvida é pq no IE funciona e no FF não? tem alguma configuração que eu deva fazer?

Me dêem um help aí galera, desde já agradeço a todos...

#2 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 30/07/2008, 16:30

Posta o código para analizarmos.
Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#3 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 30/07/2008, 16:56

ok. Meu código é o seguinte:

formulário de busca:
<table border="0" cellspacing="1" cellpadding="1" class="main">
<form name="b_implementos" id="b_implementos" action="resultado_busca_implemento.php" method="get">
  <tr>
	  <td align="right">Implemento:</td>
	  <td colspan="3">
		<div id="implemento" style="margin-top:5px;">
		<select class="select"  id="implemento" name="implemento" onChange="pesquisar_implemento( this.value )">
		  <option value="">Selecione o implemento</option>											   
		  <?php
			  $consulta = mysql_query("SELECT * FROM tabela_implemento");
			  while($row = mysql_fetch_array($consulta) ){
					echo "<option value=".$row['id'].">".
						  $row['tipo_implemento']."</option>";
			  }
		  ?>
		</select>		  
		</div>
	  </td>
  </tr>
  <tr>
	  <td align="right">Aplicação:</td>
	  <td colspan="3">
		 <div id="aplicacao_busca">
		 <select class="select" id="aplicacao" name="aplicacao">
		   <option value=""></option>
		 </select>
		 </div>
	  </td>
  </tr>
  <tr>
	  <td align="right">Financiada:</td>
	  <td colspan="3">
		<select id="financiada" name="financiada">
		  <option value=""></option>
		  <option value="Sim">Sim</option>
		  <option value="Não">Não</option>													  
		</select>
	  </td>
   </tr>
   <tr>
	  <td align="right">Revisada:</td>
	  <td colspan="3">
		  <select id="revisada" name="revisada">
			 <option value=""></option>
			 <option value="Sim">Sim</option>
			 <option value="Não">Não</option>													  
		  </select>
	  </td>	  
   </tr>
   <tr>
	  <td align="right">Preço:</td>
	  <td>
		  <select id="preco" name="preco" class="b_preco">
			<option value=""></option>
			<option value="0">0.000</option>
			<option value="5">5.000</option>
			<option value="10">10.000</option>
			<option value="15">15.000</option>
			<option value="20">20.000</option>
			<option value="25">25.000</option>
			<option value="30">30.000</option>
			<option value="40">40.000</option>
			<option value="50">50.000</option>
			<option value="60">60.000</option>
			<option value="70">70.000</option>
			<option value="80">80.000</option>
			<option value="90">90.000</option>
			<option value="100">100.000</option>
			<option value="250">250.000</option>
			<option value="500">500.000</option>
			<option value="100000">1.000.000</option>													  
		  </select>
	  </td>
	  <td>até:</td>
	  <td>
		  <select id="preco_ate" name="preco_ate" class="b_preco">
			<option value=""></option>
			<option value="0">0.000</option>
			<option value="5">5.000</option>
			<option value="10">10.000</option>
			<option value="15">15.000</option>
			<option value="20">20.000</option>
			<option value="25">25.000</option>
			<option value="30">30.000</option>
			<option value="40">40.000</option>
			<option value="50">50.000</option>
			<option value="60">60.000</option>
			<option value="70">70.000</option>
			<option value="80">80.000</option>
			<option value="90">90.000</option>
			<option value="100">100.000</option>
			<option value="250">250.000</option>
			<option value="500">500.000</option>
			<option value="100000">1.000.000</option>													  
		  </select>
	  </td>												
   </tr>
   <tr>
	  <td> </td>
	  <td colspan="3" align="right">
		<input type="submit" class="botao_b" value="Buscar" onClick="return validaBuscaImplemento();">
	  </td>
   </tr>											
</form>
</table>


Função em ajax que seleciona a aplicação de acordo com o implemento
function pesquisar_implemento( valor ){
   //alert(valor);

	xmlhttp.open("GET", "consultarimplemento.php?id=" + valor);
	xmlhttp.onreadystatechange= function() {
		if(xmlhttp.readyState != 4) {
			document.getElementById('aplicacao_busca').innerHTML = "Carregando...";
		}else
		if (xmlhttp.readyState==4){
			document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText
		}
	}
	xmlhttp.send(null)

}


Arquivo consultarimplemento.php

$id = $_GET["id"]; // pegamos o id passado pelo select

$consulta = mysql_query("SELECT * FROM tab_sub_implementos WHERE id_implemento = $id");

  echo "<select name='aplicacao' id='aplicacao' class='select'>";
	while( $dados_modelo = mysql_fetch_array(($consulta)))
	   {
		   $modelo_id  = $dados_modelo['id'];
		   $modelo	 = utf8_encode($dados_modelo['nome']);

		   echo "<option value='$modelo'>$modelo</option>";
	   }
  echo "</select>";


Arquivo resultado_busca_implemento.php
<?
	session_start();
	ob_start();	
	
	//pego os dados selecionados no formulário de busca
	$implemento = addslashes($_GET['implemento']);
	$aplicacao  = addslashes($_GET['aplicacao']); 
	$financiada = addslashes($_GET['financiada']);
	$revisada   = addslashes($_GET['revisada']);
	$preco_de   = addslashes($_GET['preco']);
	$preco_ate  = addslashes($_GET['preco_ate']);

		 echo "$implemento<br>$aplicacao<br>$financiada<br>$revisada<br>$preco_de<br>$preco_ate";
?>


Bom pessoal, basicamente esse é o meu código. não entendo pq no IE funciona e no FF não.

#4 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 30/07/2008, 19:08

Creio que seu problema é JavaScript (até porque não haveria explicação :P). Quem é xmlhttp?

[]’s :DAté mais

#5 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 30/07/2008, 20:14

Paulo é que pra fazer coisas com Ajax agente tem que criar uma variável que possa fazer requisições ao servidor, mais o Ajax está funcionando, acredito que o problema não é no javascripts, pq os dados estão lá, ou seja, carrega os combos certinho, e pior, funciona no Internet Explorer, deveria funcionar no FireFox tbm.

Meus códigos estão nesta lógica, tem um select no formulário que carrega o primeiro combo com os implementos, selecionando um implemento, com o evento onChange, ou seja, quando mudar, eu chamo a função javascript pesquisar_implemento( valor ) com a variável xmlhttp já pronta para fazer requisições ao servidor (isso é Ajax), agora na função pesquisar_implemento( valor ) você pode observar que tem a linha xmlhttp.open("GET", "consultarimplemento.php?id=" + valor); ela chama uma página php passando com o método GET o id do implemento que o kra selecionou no 1º combo. Daí vem o arquivo consultar_implemento.php que pega o id passado pela função pesquisar_implemento e faz um select para saber quais são as subcategorias do implemento que o kra selecionou e enviar a resposta de volta, ou seja, tudo que vc queira que seja exibido, no meu caso um select com as subcategorias do implemento selecionado.
Bom feito isso, nas linhas:
if (xmlhttp.readyState==4){
			document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText
		}
diz que: Se status da requisição for igual a 4, ou seja, completo, a linha document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText, vai jogar tudo que o arquivo consultarimplemento.php imprimiu, ou seja, o combo com as subcategorias do implemento que eu selecionei no 1º combo.

Imagina o seguinte:
Você tem um formulário de cadastro onde tem o campo Estado e Cidade.
1º) O kra seleciona o estado.
2º) O campo cidade tem que ser listado de acordo com o estado que vc selecionou.
3º) Você tem que cadastrar o cidadão.

O meu problema está na hora de cadastrar o infeliz, (claro que no meu caso é o implemento e as suas subcategorias, isso é só um exemplo). Bom mais na página aparece as cidades certinho, mais daí ele seleciona, clica em cadastrar, e a cidade não vem, vem só o estado, mais no IE dá certinho cadastra que é uma blz, já no FF dá erro.

Então, no meu caso o implemento vem certinho, agora a subcategoria não vem.

Bom espero não ter sido confuso e que todos possam ter entendido melhor...rsrs

Vlwsss.....

#6 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 30/07/2008, 20:26

Mas o primeiro "combo" não é dinâmico... Você cria ele pelo PHP. O fato de eu ter perguntado quem é xmlhttp se dá pelo fato de que no IE ele é um objeto e no Firefox (e outros navegadores) é outro. A propósito, ocorre algum erro no console JavaScript do Firefox?

[]’s :DAté mais

#7 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 30/07/2008, 20:32

Então kra, o 1º combo é um consulta direta, na própria página, agora não mostra nenhum erro de javascript, e lista o combo certinho, não sei pq o $_GET não funciona no FireFox...

#8 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 30/07/2008, 21:08

Se "o $_GET não funciona no Firefox" é sinal que o problema não é com o PHP. Onde está a definição do xmlhttp que perguntei?

[]’s :DAté mais

#9 thiagorsl

thiagorsl

    Ex-admin xD

  • Ex-Admins
  • 1151 posts
  • Sexo:Não informado
  • Localidade:Sampa
  • Interesses:http://sermaldito.amovoce.net/

Posted 30/07/2008, 21:16

Eita preguiça D:


Achei pinado na seção de Ajax isso pq nem programei em ajax heim estou só estudando =[


Primeiro de tudo você tem que inicar a requisição ao navegador. Para isso vamos inicar uma instância do objeto XMLHttpRequest. Mas como todo mundo tá careca de saber tem as diferenças de navegador. A família Safari, Mozilla usa de uma forma os os IElike usam de outra. Tá explicado o porque de:

var variavel;
if (window.XMLHttpRequest) {
variavel = new XMLHttpRequest();
} else if (window.ActiveXObject) {
variavel = new ActiveXObject("Microsoft.XMLHTTP");
}


http://forum.wmonlin...howtopic=149419

Tava com saudade de dizer Use a Busca :x

Acredito q seja isso pq nem entendi bem qual o problema. Como falaram o problema não está no PHP está na diferença dos browsers'-'

Edição feita por: thiagorsl, 30/07/2008, 21:24.


#10 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 31/07/2008, 09:59

A variável xmlhttp vem daqui:

var xmlhttp;

if(window.XMLHttpRequest){
   xmlhttp = new XMLHttpRequest();
}else 
if(window.ActiveXObject){
   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   if(!xmlhttp){
	   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}else {
	alert("Seu navegador não possui suporte a essa aplicação");
}

Acredito que o meu problema não seja com o Ajax, pq o combo lista certinho, ou seja os dados estão lá, eu só não estou conseguindo pegá-los na página resultado_busca_implemento.php.

#11 Riba .·. DM

Riba .·. DM

    Normal

  • Usuários
  • 62 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro

Posted 02/08/2008, 17:25

Se eu nao me engano, deveria e abrir chaves > { < apos o primeiro else, e fechar no final do scritp...

ou estou enganado???

Ex.:

[codebox]var xmlhttp;

if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else{ <<--ESSE ABRE
if(window.ActiveXObject){
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
if(!xmlhttp){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}else {
alert("Seu navegador não possui suporte a essa aplicação");
}
} <<-- ESSE FECHA
[/codebox]

Bem... trabalho com um servidor proprio, e nele funcionou dessa maneira... no IE, FF e Opera...

boa sorte...

Posted Image

Talk is cheap. Show me the code

#12 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 02/08/2008, 18:17

E aí kra certinho?

Então, mais eu não abri as chaves depois do else onde vc colocou alí. Mesmo assim eu testei aqui para ver se resolvia meu problema e não mudou nada, tanto faz ter as chaves ou não.

Não consigo entender oq possa ser.... ainda não resolvi esse problema, e o pior é que eu tenho 4 tipos de busca na mesma página utilizando o mesmo script ajax (com funções diferentes claro) e funciona no FF e no IE...

Como diria o repórter Gil Gomes: "É um mistério, um mistério, coitado do Diego"...rsrs

Edição feita por: Diego Viana, 02/08/2008, 18:18.


#13 lwirkk

lwirkk

    Veterano

  • Usuários
  • 1314 posts
  • Sexo:Não informado

Posted 02/08/2008, 19:07

Também sou somente um estudante em Javascript, mas como PR e Thiago disseram, dependendo do navegador e também de sua VERSÃO, precisa usar a requisição de modo diferente e não teria como o PHP em si funcionar em um navegador e em outro não, é problema do Javascript seu mesmo hehehehe.

Ou eu tenha bebido muito para não ser isso... '-'

OBS: Não bebo '-' huahuauhauha
Posted Image
"Se quiser ser feliz por um dia, vingue-se; se quiser ser feliz por uma vida inteira, perdoe."

Muito Obrigado à todos do fórum, e à toda equipe do fórum! =)

#14 Diego Viana

Diego Viana

    Normal

  • Usuários
  • 84 posts
  • Sexo:Masculino
  • Localidade:Ourinhos-SP

Posted 03/08/2008, 23:35

Bom pessoal eu estou fazendo assim:
// JavaScript Document
var xmlhttp;

if(window.XMLHttpRequest){
   xmlhttp = new XMLHttpRequest();
} else
if(window.ActiveXObject){
   xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   if(!xmlhttp){
	   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
}else {
	alert("Seu navegador não possui suporte a essa aplicação");
}



function pesquisar_implemento( valor ){
   //alert(valor);

	xmlhttp.open("GET", "consultarimplemento.php?id=" + valor);
	xmlhttp.onreadystatechange= function() {
		if(xmlhttp.readyState != 4) {
			document.getElementById('aplicacao_busca').innerHTML = "Carregando...";
		}else
		if (xmlhttp.readyState==4){
			document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText
		}
	}
	xmlhttp.send(null)

}

Agora essa não é a única função que eu tenho utilizando dessa forma e funciona nos dois navegadores.

Agora sabe o que eu acho mais estranho, é que aparece certinho, carrega o combo com os dados, agora o que eu não consigo é pegar esses dados, mais eles estão lá, pq eu seleciono o que eu quero e tudo...

#15 Riba .·. DM

Riba .·. DM

    Normal

  • Usuários
  • 62 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro

Posted 04/08/2008, 16:30

Bem... a algumas coisas a serem arrumadas... como por exemplo na linha 04 abre { e fecha na 06, e no else seguinte nao eh utilizado as {}... isso nao influencia no funcionamento, mas se quer descobrir o problema devemos organizar melhor as coisas...
a mesma coisa se repete na linha 22-24... e na linha 26 falta fechar com > ; <...

mas qnt ao funcionamento desse script... pra mim funciona numa boa em qlq browser.... boa sorte ai...

[codebox]
01 - // JavaScript Document
02 - var xmlhttp;
03 -
04 - if(window.XMLHttpRequest){
05 - xmlhttp = new XMLHttpRequest();
06 - } else
07 - if(window.ActiveXObject){
08 - xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
09 - if(!xmlhttp){
10 - xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
12 - }
13 - }else {
14 - alert("Seu navegador não possui suporte a essa aplicação");
15 - }
16 -
17 - function pesquisar_implemento( valor ){
18 - //alert(valor);
19 -
20 - xmlhttp.open("GET", "consultarimplemento.php?id=" + valor);
21 - xmlhttp.onreadystatechange= function() {
22 - if(xmlhttp.readyState != 4) {
23 - document.getElementById('aplicacao_busca').innerHTML = "Carregando...";
24 - }else
25 - if (xmlhttp.readyState==4){
26 - document.getElementById('aplicacao_busca').innerHTML=xmlhttp.responseText
27 - }
28 - }
29 - xmlhttp.send(null)
30 -
31 - }
[/codebox]

Posted Image

Talk is cheap. Show me the code




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq