Ir para conteúdo

POWERED BY:

Arquivado

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

Vitor Lima

Problema de compatibilidade do php no IE x Firefox

Recommended Posts

Boa Tarde.

 

Estou iniciando no PHP, e até agora consegui sanar todas as minhas dúvidas pesquisando na web.

 

Agora estou com um problema: minha aplicação funciona no Firefox e não no I.E. Descobri via print_r uma diferença entre o conteúdo do $_Post enviado de uma página para outra:

FIREFOX:
Array ( [selecionou_x] => 9 [selecionou_y] => 7 [selecionou] => 18 )

IE:
Array ( [selecionou_x] => 9 [selecionou_y] => 12 )

Eu preciso do conteúdo ["selecionou"], que não está presente no Array $_POST no IE. Esse é o meu problema.

 

Fora isso, há outra dúvida: porque está aparecendo no $_POST [selecionou_x] e [selecionou_y], se não os criei no form?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, desculpe a falha.

 

O form que gera o $_post é o seguinte:

 

<table width="100%">
	<tr>
		<td valign="top">
			<?
			if (getenv("REQUEST_METHOD") == "POST") 
			{
				$exibe = $_POST["exibir"];
			}
			else
			{
				$exibe = 'c02_nome';
			}
			$BDConceito  = new ClasseBD('MySQL01');
			$BDConceito->select("SELECT c02_ID," . $exibe ."
						FROM c02_fornecedores
						ORDER BY ". $exibe);
			?>
			<form name="listaFornecedores" method="post" action="<?
							echo substr(strrchr($_SERVER["PHP_SELF"],"/"),1);?>">
				<?
				$linha = $BDConceito->proximaLinha();
				?>
				<SELECT size="1" name="menu_fornecedor">
					<?
					while (count($linha) >1)
					{
						?>
						<OPTION value="<? echo $linha['c02_ID'];?>">
							<?
							echo $linha[$exibe];
							?>
						</OPTION>
						<?
						$linha = $BDConceito->proximaLinha();
					}
					?>
				</SELECT>
				<input class="btn"  type="submit" name="carregar" value="Carregar" >
				Ordernar por:
				 <INPUT type="radio" name="exibir" value="c02_nome" checked="true"> Nome
				 <INPUT type="radio" name="exibir" value="c02_razaoSocial"> Razão Social
			</form>
			<?
			unset($BDConceito);
			?>
		</td>
	</tr>
	<tr>
		<td valign="top">
		<form name="listaPedidos" method="post" action="contas_cadastro.php">
			<?
			if (getenv("REQUEST_METHOD") == "POST") 
			{
				if (is_numeric($_POST["menu_fornecedor"]))
				{
					$fornecedor = new ClasseFornecedor();
					$fornecedor->Carregar($_POST["menu_fornecedor"]);
					?>
					<h1> <? echo $fornecedor->nome . " / " . $fornecedor->razaoSocial; ?> </h1>
					<input class="btn" src="<? echo ($diretorio . "imagens/novo.png") ?>" type="image" alt="Cadastrar nova conta" name="novo" value="<? echo $_POST["menu_fornecedor"];?>" >
					<?
					unset($fornecedor);
					$BDConceito  = new ClasseBD('MySQL01');
					$BDConceito->select("SELECT f04_ID, a01_Nome AS a01_Empresa, 
												DATE_FORMAT(f04_dataReferencia,'%d/%m/%Y') AS f04_Data, 
												f04_valor, f04_NF
							FROM f04_contasPagar INNER JOIN a01_empresas ON f04_IDEmpresa = a01_ID
							WHERE f04_IDFornecedor = " . $_POST["menu_fornecedor"] ."
							ORDER BY f04_dataReferencia");
					$edita= true;
					include '../includes/monta_tabela.php'; 
					unset($BDConceito);
				}
			}
			?>
		</form>
		</td>
	</tr>
	</table>

A leitura é feita por outra página, neste local:

if (getenv("REQUEST_METHOD") == "POST")
{
	$codigo = new ClasseCodigo('MySQL01');
	if (is_numeric($_POST["selecionou"]))
	{
		$BDConceito  = new ClasseBD('MySQL01');
		$BDConceito->select("SELECT f04_IDEmpresa, f04_IDFornecedor, f04_NF, 
							DATE_FORMAT(f04_dataReferencia,'%d/%m/%Y') AS f04_dataReferencia, f04_valor
							 FROM f04_contasPagar WHERE f04_ID = ". $_POST['selecionou']);
		$linha = $BDConceito->proximaLinha();
		if (count($linha)>1) 
		{
			$IDConta = $_POST['selecionou'];
			$IDEmpresa = $linha['f04_IDEmpresa'];
			$IDFornecedor = $linha['f04_IDFornecedor'];
			$IDMeioPagamento = 0;
			$IDContaBancaria = 0;
			$NF = $linha['f04_NF'];
			$dataReferencia = $linha['f04_dataReferencia'];
			$valor = $linha['f04_valor'];
		}
		else
		{
			$IDConta = 0;
			$IDEmpresa = 0;
			$IDFornecedor = 0;
			$IDMeioPagamento = 0;
			$IDContaBancaria = 0;
			$NF = '';
			$dataReferencia = date('d/m/Y');
			$valor= 0;
		}
		unset($BDConceito);
	}
	else
	{
		if(is_numeric($_POST["novo"]))
		{
			$IDConta = 0;
			$IDEmpresa = 0;
			$IDMeioPagamento = 0;
			$IDContaBancaria = 0;
			$IDFornecedor=$_POST["novo"];
			$NF = '';
			$dataReferencia = date('d/m/Y');
			$valor= 0;
		}

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo,

 

Muito obrigado pela sua paciência, e desculpa por não estar facilitando. Me esqueci que o campo selecionou é gerado através de um código que insiro via include, pois utilizo o mesmo em várias páginas.

 

De qualquer forma, o corre a mesma coisa com o campo novo, que está no código da mensagem anterior.

 

O código que gera o seleciou é o seguinte:

 

<?php
// ********************************************************************************
***********
// ATENÇÃO: antes de chamar a inc é necessário setar: 
//							# o retorno do SQL na variável $resultado
//							# exibir botão editar => $edita = true
// ********************************************************************************
***********
?>

<table align="center">
	<?php
	$fundoLinha="titulo";
	$linha = $BDConceito->proximaLinha();
	while (count($linha) >1)
	{
		?>
		<tr>
		<?
		$campos = array_keys($linha);
		if($fundoLinha == "titulo")
		{
			$indice = 0;
			while(array_key_exists($indice,$campos))
			{
				if(!is_numeric($campos[$indice]))
				{
					?>
					<td class="<? echo	$fundoLinha; ?>">
						<?
						echo substr($campos[$indice],4);
						?>
					</td>
					<?
				}
			$indice++;	
			}
			?>
			</tr>
			<tr>
			<?	
		}
		if($fundoLinha == 'l1')
		{
			$fundoLinha = 'l2';
		}
		else
		{
			$fundoLinha = 'l1';
		}		
		$indice = 0;
		while(array_key_exists($indice,$campos))
		{
			if(!is_numeric($campos[$indice]))
			{
				if (($indice == 1) AND ($edita) )
				{
					?>
					<td class="<? echo	$fundoLinha; ?>">
						<input class="btnTable" src="<? echo ($diretorio . "imagens/editar") ?>" type="image" alt="Alterar" name="selecionou" value="<?echo $linha[$campos[$indice]];?>" >
					</td>
					<?						
				}
				else
				{
				?>
				<td class="<? echo	$fundoLinha; ?>">
					<?
					echo $linha[$campos[$indice]];
					?>
				</td>
				<?
				}
			}
			$indice++;
		}
		?>	
		</tr>
		<?
		$linha = $BDConceito->proximaLinha();
	}
	?>
</table>

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esses campos cujos nomes são selecionou são gerados num loop, então o ideal é você nomeá-los assim: selecionou[], para que o PHP interprete-o como um array. Você pode fazer assim depois:

 

PHP
print_r($_POST['selecionou']);

 

Mas o que eu quero saber mesmo é o código que gerou o conteúdo do seu primeiro post, pois achei muito estranho aquilo. Se você ainda o tiver, poste-o, para vermos o que pode estar errado. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

http://forum.imasters.com.br/public/style_emoticons/default/natal_noel.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo,

 

Vou testar a declaração selecionou[], depois eu aviso.

 

Quanto ao primeiro post: eu fiz o print_r do array $_Post, que contêm todos os post´s recebidos na página que é chamada pelo formulário. Rodei a aplicação no Firefox e no IE.

 

Esse código está no meu segundo comentário, tanto a página que envia o $_Post, quanto a que recebe. Ou melhor, como você notou, tive que completar o código no terceiro post.

 

esse print foi colocado nesta posição do código que recebe o $_Post.

 

if (getenv("REQUEST_METHOD") == "POST")

{

$codigo = new ClasseCodigo('MySQL01');

print_r ($_POST);

if (is_numeric($_POST["selecionou"]))

 

Me preocupa duas coisas:

1) Porque aparece selecionou_x e selecionou_y? Será que está relacionado ao seu último post? eu declarei errado o selecionou?

2) Porque no IE não aparece o selecionou?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça assim. Execute a página, clique com o botão direito, pegue o código fonte e cole aqui. O código fonte da página do formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

klawdyo,

 

Agora entendi. Segue o Código, Primeiro o gerado no Firefox e depois o gerado no IE.

 

<html>
 <head>
  <title>Soliarte ::: Intranet III</title>
  <link rel="stylesheet" href="../css/estilo.css" type="text/css" />
 </head>
 <body>
<table width="100%" style="border-collapse: collapse;">
	<tr>
		<td class="titulo" >

			<a href="../inicio.php">
			<img src="../imagens/logo_titulo.jpg" style="border-style: none; " align="left"><font size="5px">
			</a>
			<b>Intranet III</b></font>
		</td>
		<td class="titulo">
			  Olá, Vitor			<BR><a class="titulo" href="../thau.php">Sair</a>

		</td>
	</tr>
</table>		<table>
		<tr>	
			<td class="l1">
				<a class="menu" href="contas_cadastro_menu.php"> Cadastro de contas</a>
			</td>
				
			<td class="l1">

				<a class="menu" href="inicio.php"> Financeiro: inicio</a>
			</td>
				
			<td class="l1">
				<a class="menu" href="contas_pagamento.php"> Pagamento de contas</a>
			</td>
					</tr>
				</table>

			<table width="100%">
	<tr>
		<td valign="top">
						<form name="listaFornecedores" method="post" action="contas_cadastro_menu.php">
								<SELECT size="1" name="menu_fornecedor">
											<OPTION value="245">
							4D Editora Ltda						</OPTION>
												<OPTION value="113">

							A C S Cola						</OPTION>
												<OPTION value="513">
							A Gaiovota						</OPTION>
												<OPTION value="426">
							Zona Leste						</OPTION>
										</SELECT>
				<input class="btn"  type="submit" name="carregar" value="Carregar" >
				Ordernar por:
				 <INPUT type="radio" name="exibir" value="c02_nome" checked="true"> Nome
				 <INPUT type="radio" name="exibir" value="c02_razaoSocial"> Razão Social
			</form>
					</td>

	</tr>
	<tr>
		<td valign="top">
		<form name="listaPedidos" method="post" action="contas_cadastro.php">
								  <h1> 4D Editora Ltda / 4D Editora Ltda </h1>
					<input class="btn" src="../imagens/novo.png" type="image" alt="Cadastrar nova conta" name="novo" value="245" >
					
<table align="center">
			<tr>

							<td class="titulo">
						ID					</td>
										<td class="titulo">
						Empresa					</td>
										<td class="titulo">
						Data					</td>
										<td class="titulo">

						valor					</td>
										<td class="titulo">
						NF					</td>
								</tr>
			<tr>
								<td class="l1">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="10" >
					</td>

									<td class="l1">
					Conceito Diferente				</td>
								<td class="l1">
					21/11/2007				</td>
								<td class="l1">
					12.50				</td>
								<td class="l1">

					1				</td>
					
		</tr>
				<tr>
							<td class="l2">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="17" >
					</td>
									<td class="l2">
					Conceito Diferente				</td>

								<td class="l2">
					21/11/2007				</td>
								<td class="l2">
					0.00				</td>
								<td class="l2">
									</td>
					
		</tr>
				<tr>

							<td class="l1">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="18" >
					</td>
									<td class="l1">
					Conceito Diferente				</td>
								<td class="l1">
					21/11/2007				</td>
								<td class="l1">

					1.00				</td>
								<td class="l1">
									</td>
					
		</tr>
				<tr>
							<td class="l2">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="19" >
					</td>

									<td class="l2">
					Conceito Diferente				</td>
								<td class="l2">
					21/11/2007				</td>
								<td class="l2">
					0.00				</td>
								<td class="l2">

									</td>
					
		</tr>
				<tr>
							<td class="l1">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="20" >
					</td>
									<td class="l1">
					Conceito Diferente				</td>

								<td class="l1">
					21/11/2007				</td>
								<td class="l1">
					0.00				</td>
								<td class="l1">
									</td>
					
		</tr>
				<tr>

							<td class="l2">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="21" >
					</td>
									<td class="l2">
					Conceito Diferente				</td>
								<td class="l2">
					21/11/2007				</td>
								<td class="l2">

					1.00				</td>
								<td class="l2">
									</td>
					
		</tr>
				<tr>
							<td class="l1">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="22" >
					</td>

									<td class="l1">
					Conceito Diferente				</td>
								<td class="l1">
					21/11/2007				</td>
								<td class="l1">
					0.00				</td>
								<td class="l1">

									</td>
					
		</tr>
		</table>		</form>
		</td>
	</tr>
	</table>
	
<table width="100%" style="border-collapse: collapse;">
	<tr>

		<td class="titulo" >
			Desevolvido por:<b> Equipe Soliarte</b>
			<Br>
			Todos os direitos reservados.
		</td>
		<td class="titulo">
			<a class="titulo" href="../thau.php">Sair</a>

		</td>
	</tr>
</table>
</body>
</html>

Agora o Código no IE:

 

<html>
 <head>
  <title>Soliarte ::: Intranet III</title>
  <link rel="stylesheet" href="../css/estilo.css" type="text/css" />
 </head>
 <body>
<table width="100%" style="border-collapse: collapse;">
	<tr>
		<td class="titulo" >
			<a href="../inicio.php">
			<img src="../imagens/logo_titulo.jpg" style="border-style: none; " align="left"><font size="5px">
			</a>
			<b>Intranet III</b></font>
		</td>
		<td class="titulo">
			  Olá, Vitor			<BR><a class="titulo" href="../thau.php">Sair</a>
		</td>
	</tr>
</table>		<table>
		<tr>	
			<td class="l1">
				<a class="menu" href="contas_cadastro_menu.php"> Cadastro de contas</a>
			</td>
				
			<td class="l1">
				<a class="menu" href="inicio.php"> Financeiro: inicio</a>
			</td>
				
			<td class="l1">
				<a class="menu" href="contas_pagamento.php"> Pagamento de contas</a>
			</td>
					</tr>
				</table>
			<table width="100%">
	<tr>
		<td valign="top">
						<form name="listaFornecedores" method="post" action="contas_cadastro_menu.php">
								<SELECT size="1" name="menu_fornecedor">
											<OPTION value="245">
							4D Editora Ltda						</OPTION>
												<OPTION value="113">
							A C S Cola						</OPTION>
<OPTION value="426">
							Zona Leste						</OPTION>
										</SELECT>
				<input class="btn"  type="submit" name="carregar" value="Carregar" >
				Ordernar por:
				 <INPUT type="radio" name="exibir" value="c02_nome" checked="true"> Nome
				 <INPUT type="radio" name="exibir" value="c02_razaoSocial"> Razão Social
			</form>
					</td>
	</tr>
	<tr>
		<td valign="top">
		<form name="listaPedidos" method="post" action="contas_cadastro.php">
								  <h1> 4D Editora Ltda / 4D Editora Ltda </h1>
					<input class="btn" src="../imagens/novo.png" type="image" alt="Cadastrar nova conta" name="novo" value="245" >
					
<table align="center">
			<tr>
							<td class="titulo">
						ID					</td>
										<td class="titulo">
						Empresa					</td>
										<td class="titulo">
						Data					</td>
										<td class="titulo">
						valor					</td>
										<td class="titulo">
						NF					</td>
								</tr>
			<tr>
								<td class="l1">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="10" >
					</td>
									<td class="l1">
					Conceito Diferente				</td>
								<td class="l1">
					21/11/2007				</td>
								<td class="l1">
					12.50				</td>
								<td class="l1">
					1				</td>
					
		</tr>
				<tr>
							<td class="l2">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="17" >
					</td>
									<td class="l2">
					Conceito Diferente				</td>
								<td class="l2">
					21/11/2007				</td>
								<td class="l2">
					0.00				</td>
								<td class="l2">
									</td>
					
		</tr>
				<tr>
							<td class="l1">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="18" >
					</td>
									<td class="l1">
					Conceito Diferente				</td>
								<td class="l1">
					21/11/2007				</td>
								<td class="l1">
					1.00				</td>
								<td class="l1">
									</td>
					
		</tr>
				<tr>
							<td class="l2">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="19" >
					</td>
									<td class="l2">
					Conceito Diferente				</td>
								<td class="l2">
					21/11/2007				</td>
								<td class="l2">
					0.00				</td>
								<td class="l2">
									</td>
					
		</tr>
				<tr>
							<td class="l1">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="20" >
					</td>
									<td class="l1">
					Conceito Diferente				</td>
								<td class="l1">
					21/11/2007				</td>
								<td class="l1">
					0.00				</td>
								<td class="l1">
									</td>
					
		</tr>
				<tr>
							<td class="l2">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="21" >
					</td>
									<td class="l2">
					Conceito Diferente				</td>
								<td class="l2">
					21/11/2007				</td>
								<td class="l2">
					1.00				</td>
								<td class="l2">
									</td>
					
		</tr>
				<tr>
							<td class="l1">
						<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="22" >
					</td>
									<td class="l1">
					Conceito Diferente				</td>
								<td class="l1">
					21/11/2007				</td>
								<td class="l1">
					0.00				</td>
								<td class="l1">
									</td>
					
		</tr>
		</table>		</form>
		</td>
	</tr>
	</table>
	
<table width="100%" style="border-collapse: collapse;">
	<tr>
		<td class="titulo" >
			Desevolvido por:<b> Equipe Soliarte</b>
			<Br>
			Todos os direitos reservados.
		</td>
		<td class="titulo">
			<a class="titulo" href="../thau.php">Sair</a>
		</td>
	</tr>
</table>
</body>
</html>

Para mim, os dois html´s são iguais, mas o resultado é diferente, tem que ter algo errado.

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Klawdyo,

 

Tem o selecionou, sim. É um botão que é gerado em cada linha da segunda tabela, da seguinte forma:

 

<input class="btnTable" src="../imagens/editar" type="image" alt="Alterar" name="selecionou" value="20" >

 

E o mesmo campo aparece tanto no IE, como no Firefox.

 

O Beraldo sugeriu que fica melhor nomear o botão como selecionou[], indicando para o PHP que esse botão se repete em vários lugares. Confesso que ainda não testei isso, pois o que mais me preocupa é a diferença no array $_POST entre o Firefox e o IE, e mais: porque aparece selecionou_x e selecionou_y, se não declarei esses campos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah é, realmente...agora vi... Então tá explicado

é porque você colocou o botão como uma imagem. Ele sempre gera essas variaveis x e y com as coordenadas do seu clique em relação à imagem. É o padrão.

Você está utilizando esses botões pra chamar a página de alterações? Porque você não os substitui por links normais? Ou por imagens com links. Você poderia chamar o link assim

 

<a href="alterar.php?selecionou=20">editar</a>

Dessa forma você envia o valor da edição pelo GET. É a minha sugestão. Todo mundo usa assim.

 

Em tempo. Você conhece o Baixaki? Ele usa uma imagem como botão na sua busca, e também gera as coordenadas e aparece na barra de busca. Se você usa o baixaki, e provavelmente nunca observou, é uma prova que não tem nada de mais nisso.

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.