Ir para conteúdo

POWERED BY:

Arquivado

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

Herberth Nilsen

AJAX + PHP - Problema

Recommended Posts

E ai galera, boa tarde

 

Peço desculpa se criei o tópico no fórum errado, é o seguinte

 

Sou novo em AJAX, eu criei um AJAX para fazer sugestões na pesquisa que o usuário estará fazendo, o mesmo pode selecionar uma ordenação especifica e até um modo de exibição específico que não perde nenhuma configuração. até ai tudo bem, fiz os testes e funcionaram perfeitamente, porém todos os testes do desenvolvimento foram feitos no IE 8 e depois de pronto, quando fui mostrar pro chefe o AJAX não funcionou porque o browser dele é firefox, depois tentamos na versão 6 do ie e também não funcionou, tentei no google chrome e nada.

 

Achei estranho porque o IE 8 utiliza o XMLHttpRequest para criar o objeto do AJAX, e o firefox e o chrome também e só funciona com o IE 8

 

O que preciso fazer para ter o meu código rodando em todos os browsers

 

segue os códigos para analise

 

 

Página PHP que é atualizada com o AJAX

<form id="textfield" name="form1" method="post" action="">
  <table width="100%" border="0">
    <tr>
      <td width="20%"><select name="ord" id="select" onChange="javascript:SugerirNomes(document.forms.form1.frase.value, FiltrarTrab(document.forms.form1.exb.options.value), OrdenarTrab(document.forms.form1.ord.options.value))" >
          <option value="">--- Selecione a ordenação ---</option>
          <option value="C" <?=$select1;?>>Ordem de Código</option>
          <option value="N" <?=$select2;?>>Ordem de Nome</option>
          <option value="F" <?=$select3;?>>Ordem de Funcao</option>
        </select>
        <input type="hidden" name="btordem" id="btordem" onChange="javascript:form1.submit()"></td>
      <td width="27%">Exibir
        <?
//--------------------------------------------------------
	
?>
        <select name="exb" id="select" onChange="javascript:SugerirNomes(document.forms.form1.frase.value, FiltrarTrab(document.forms.form1.exb.options.value), OrdenarTrab(document.forms.form1.ord.options.value) )" >
          <option value="">--- Selecione o Filtro ---</option>
          <option value="TF">Todos Funcionários</option>
          <option value="TA">Todos Ativos</option>
          <option value="TD">Todos Demitidos</option>
        </select>
        <input type="hidden" name="hiddenField" id="hiddenField" /></td>
      <td width="53%"><div align="left">Frase de Pesquisa:
          <input name="frase" type="text" id="textfield" onKeyUp="SugerirNomes(this.value, FiltrarTrab(document.forms.form1.exb.options.value), OrdenarTrab(document.forms.form1.ord.options.value))" size="50" maxlength="50" />
          <input type="submit" name="btbuscar" id="button" value="Aplicar" />
        </div></td>
    </tr>
  </table>
  <br />
  <table width="68%" height="34" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td height="19" colspan="4" align="center" id="tablesubheader">Legenda</td>
    </tr>
    <tr>
      <td width="25%" colspan="4" id="tablezebravermelho"><div align="center">Trabalhador Demitido</div></td>
    </tr>
  </table>
  <br />
  <table width="100%" border="0">
    <tr >
      <td id="tablesubheader" width="11%">Código</td>
      <td id="tablesubheader" width="60%">Nome do Trabalhador</td>
      <td id="tablesubheader"width="29%">Função</td>
    </tr>
	<tr ><td colspan="3" id="sugest" ></td></tr>
  </table>
</form>

 

 

Funções JS que são utilizadas neste AJAX

 


	var request;
	if(window.XMLHttpRequest){
		request = new XMLHttpRequest(); // PARA FIREFOX, GOOGLE CHROME, SAFARI, OPERA, ETC
	}else if(window.ActiveXObject){
			try{
				request = new ActiveXObject("Microsoft.XMLHTTP"); //Versão do IE 5.0 E 6.0
			}catch(e){
				try{
					request = new ActiveXObject("Msxml2.XMLHTTP"); //Versão mais atual IE 7.0
					alert("Msxml2");
				}catch(e2){
					alert("Seu navegador não suporta AJAX!");
				}
			}
		}

function OrdenarTrab(ord){
//função para fazer ordenação da lista de colaboradores
//o parametro recebe a value da opção selecionada pelo usuario

	var cpo = "";
	if (ord	==	'C'){
		cpo	=	" 	ORDER BY C5.C_COD_COLABORADOR";
	}
	if (ord	==	'F'){
		cpo	=	"	ORDER BY C7.C_DESC_FUNCAO";
	}
	if (ord	==	'N'){
		cpo	=	"	ORDER BY C5.C_NOME_COLABORADOR";
	}	
	
	return cpo;
}
function FiltrarTrab(exb){
//função para filtrar entre os trabalhadores ativos e demitidos	
//o parametro recebe a value da opção selecionada pelo usuario
	
		var sqlencode = "";
		if (exb	==	"TA")
		{//MOSTRAR TODOS OS TRAVALHADORES ATIVOS
			sqlencode	=	"AND C5.C_DATA_DEMISSAO_COLABORADOR IS NULL	";
		}
		if (exb	== "TD")
		{//MOSTRAR TODOS OS TRABALHADORES DEMITIDOS
			sqlencode	=	"AND C5.C_DATA_DEMISSAO_COLABORADOR IS NOT NULL	";
		}

	return sqlencode;
}

function SugerirNomes(str, filtro, ordem){
//função para sugerir nomes dos trabalhadores
//O primeiro parametro recebe a string com os dados que o usuario digita em um textfield
//O segundo parametro recebe o valor do return da função FiltratTrab para poder passar para a url que abrirá a página nova
//O terceiro parametro recebe o valor do return da função OrdenarTrab para o usuário definir em que ordem deseja enxergar da forma que desejar
	
	var string = str;

	if(string.length == 0){
		document.getElementById("sugest").innerHTML = 'Digite o nome do Trabalhador no campo de pesquisa';
		return 0;
	}	
	url = "../seesmt/ajax/consultarcolab.php?str="+string+"&fil="+filtro+"&ord="+ordem;

	request.onreadystatechange = function(){
		if(request.readyState == 4){
			document.getElementById('sugest').innerHTML = request.responseText;
		}
	};
	request.open("GET", url, true);
	request.send(null);
	
}

 

 

ARQUIVO PHP RECEBE OS PARAMETROS DO AJAX E RETORNA OS RESULTADOS

 

<? header("Content-Type: text/html; charset=ISO-8859-1", true);?>
<?php require_once('../../config/funcoes.php'); ?>
<?
function demissao($cod){
	return 	f_campoengestrauss("SELECT C_DATA_DEMISSAO_COLABORADOR FROM CA0500 WHERE C_COD_COLABORADOR='$cod'");
}
session_start();
$codemp	=	$_SESSION["cod_empresa"];
$string = strtoupper($_GET["str"]);
$filtro = $_GET["fil"];
$ord	= $_GET["ord"];
//
$sql	=	"SELECT 
				C5.C_COD_COLABORADOR, 
				C5.C_NOME_COLABORADOR, 
				C5.C_COD_FUNCAO,
				C7.C_DESC_FUNCAO
			FROM 
				CA0500 C5,
				CA0700 C7
			WHERE 
				UPPER(C_NOME_COLABORADOR) LIKE '$string%' 
			AND
				C7.C_COD_FUNCAO=C5.C_COD_FUNCAO
			AND 
				C_COD_EMPRESA='$codemp' ".
			
			$filtro //Variável que ira filtrar as informações de acordo com o parametro recebido
			." ". 
			$ord;	//Variável que efetuara a ordenação do select
$rs		= ibase_query($bco_engestrauss, $sql) or die ("Erro ao executar o comando <hr>$sql<hr>".ibase_errmsg());
$zebra = "tablezebra2";

while($row = ibase_fetch_assoc($rs)){
	$nomesugest 	= trim( $row[	"C_NOME_COLABORADOR"	] 	);
	$codsugest		= trim( $row[	"C_COD_COLABORADOR"		]	);
	$funcaosugest	= trim(	$row[	"C_DESC_FUNCAO"			]	);

if(demissao($codsugest)!= NULL)
	$zebra = "tablezebravermelho";

	//definindo cores das linhas
	if($zebra == "tablezebra2"){
		$zebra="tablezebra1";
	}elseif($zebra == "tablezebra1"){
		$zebra="tablezebra2";
	}

	echo "<table cellpadding='0' cellspacing='0'>
			<tr id='$zebra' onMouseOver=\"this.className='hlt'\" onMouseOut=\"this.className=''\"> 
				<td width='128px' align='center'><a href=\"colaboradoresinc.php?cod=$codsugest\">$codsugest</a></td>
				<td width='730px'align='center'><a href=\"colaboradoresinc.php?cod=$codsugest\">$nomesugest</a></td>
				<td width='350px' align='center'>$funcaosugest</td>
			</tr>
		  </table>";
if(demissao($codsugest)!= NULL)
	$zebra = "tablezebra2";

if($nomesugest == NULL){
	echo "Nenhuma ocorrencia foi encontrada!";
}
}ibase_free_result($rs);

?>

 

 

POR FAVOR

QUEM PODER ME AJUDAR AGRADEÇO MUITO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente iniciar o Ajax com isso:

 function openAjax()
 {
     try
     {
         var ajax = new XMLHttpRequest();
     }
     catch(e)
     {
         try
         {
             var ajax = new ActiveXObject("Msxml2.XMLHTTP");
         }
         catch(ee)
         {
             try
             {
                 var ajax = new ActiveXObject("Microsoft.XMLHTTP");
             }
             catch(eee)
             {
                 var ajax = false;
             }
         }
     }
     
     return ajax;
 }

Os créditos nao são meus.

Não to lembrado onde arrumei isso, mas digo que nao é meu.

 

Para usar é só fazer o seguinte:

 

var ajax = openAjax();
     
     ajax.open('GET', 'arquiv.php', true);
     
     ajax.onreadystatechange = function()
     {
         if (ajax.readyState == 4)
         {
             if (ajax.status == 200)
             {
 .
 .
 .
 .

Compartilhar este post


Link para o post
Compartilhar em outros sites

André,

 

Vou te falar que funfou, parcialmente, rsrs, deixa eu explicar

 

Antes quando o usuário digitava o texto para ir filtrando o banco de dados não funcionava en outros browser, somente com o ie 8, nem mesmo o ie 6 funcionava, agora isso funciona nos outros browser mas com alguns erros no ie6.

 

Mas os outros problemas ainda persistem e só funcionam no ie 8, que é o seguinte, eu tenho dois selects, um que o usuário escolhe a ordenação e outro que o usuário filtra as pessoa entre todos os funcionários, somente os ativos ou somente os demitidos, e esses dois selects não estão funcionando. Porque será?

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, consegui resolver parte do problema, antes não estava funcionando em versões abaixo do ie8, então fui pesquisando e pesquisando e encontrei aqui no imasters mesmo um cara com um problema no objeto do "AJAX",segue o link

 

XMLHttpRequest

 

a solução neste caso do ie foi instanciar um objeto "AJAX" mais atual e funcionou

 

mas com o XMLHttpRequest que é utilizado por outros browsers está com problema ainda, ou seja, só funciona o filtro das palavras, mas a ordenação e exibição estão sem funcionar ainda.

 

Ah, e muito obrigado a vocÊs que comentaram e quem irá comentar também

 

 

ABS.

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.