Ir para conteúdo

POWERED BY:

Arquivado

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

Bruno_Ferreira

Página de Consulta ao MsSql

Recommended Posts

Boa Tarde amigos

 

Tenho que fazer uma página de que consulte uma tabela no MSSQL Server 2000 com base em dados de um formulário, e retorne no navegador uma tabela com os dados da Query.

Já tentei fazer essa página por conta própria com o pouco que conheço mas não tive sucesso.

Alguém pode me passar ou indicar um exemplo ou classe? já procurei no Laboratório de Scripts e outros lugares mas sem sucesso, se alguém puder me dar um exemplo seria ótimo.

 

Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem meu caro, eu fiz mas não acusou nenhum erro de sintaxe do PHP e nem na query, mas não retorna nada.

Dá uma olhada aí:

 

<?php

require "CONECTION_SQL_SERVER.php";
include "sql_anti_injection.php";

  $local = (int)anti_injection($_POST["local"]);
  $terminal = (int)anti_injection($_POST["terminal"]);
  
  if(isset($local) && isset($terminal) && $local != "" && $terminal != ""){
  
	if ($conection){
	
	   $query = "SELECT DISTINCT CASE WHEN T1.COD_OPERACAO=1 THEN 'Carga' WHEN T1.COD_OPERACAO=3 THEN 'Devolução'
	   WHEN T1.COD_OPERACAO=4 THEN 'Baixa' ELSE 'Indefinido' End as TIPO,
	   T3.ESCOB,T1.COD_ESCOB,T2.NOME_ARQ, T2.DT_ARQ,T1.CPF_CNPJ,T1.LOCAL,T1.TERMINAL, T1.DT_CONTA,
	   T1.DT_VENCIMENTO,T1.CJ,T1.SU,T1.VL_CONTA, T1.UND_FEDERATIVA,T1.DT_PAGAMENTO,T1.VL_PAGO, CASE
	   WHEN T1.COD_DEVOLUCAO=1  THEN 'Por solicitação do gestor Oi'
	   WHEN T1.COD_DEVOLUCAO=2  THEN 'Por expiração de prazo de permanência em carteira'
	   WHEN T1.COD_DEVOLUCAO=3  THEN 'em desuso'
	   WHEN T1.COD_DEVOLUCAO=4  THEN 'Por parcelamento de dívida sob cobrança'
	   WHEN T1.COD_DEVOLUCAO=5  THEN 'Por prorrogação da data de vencimento da conta'
	   WHEN T1.COD_DEVOLUCAO=6  THEN 'Por ordem judicial'
	   WHEN T1.COD_DEVOLUCAO=7  THEN 'Por ocorrência de fraude'
	   WHEN T1.COD_DEVOLUCAO=8  THEN 'Por desmembramento de conta'
	   WHEN T1.COD_DEVOLUCAO=9  THEN 'Por reinclusão em carteira'
	   WHEN T1.COD_DEVOLUCAO=10 THEN 'Pagamento em data passada - uso futuro'
	   WHEN T1.COD_DEVOLUCAO=11 THEN 'Reversão de pagamento – uso futuro'
	   WHEN T1.COD_DEVOLUCAO=12 THEN 'Liquidação por débito automático não realizada'
	   WHEN T1.COD_DEVOLUCAO=13 THEN 'conta retida'
	   ELSE 'NÃO POSSUI' END AS DEVOLUCAO
	   FROM TABELA_1 T1 JOIN TABELA_2 T2 ON T1.COD_ARQ = T2.COD_ARQ JOIN TABELA_3 T3 ON T1.COD_ESCOB = T3.COD_ESCOB
	   WHERE LOCAL = CAST($LOCAL AS INT) AND TERMINAL = CAST($TERMINAL AS INT)
	   ORDER BY T2.DT_ARQ,T1.DT_CONTA;";

		$consulta = mssql_query($query);

		if ($consulta && (mssql_num_rows($consulta) > 0)){
		
			echo "<hr width=100%><div align=center>";
			echo "<table border=1>";
			echo "<tr align = center bgcolor = #00FFFF><td nowrap><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,0));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,1));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,2));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,3));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,4));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,5));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,6));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,7));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,8));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,9));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,10));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,11));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,12));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,13));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,14));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,15));
			echo "</b></td><td nowrap ><font size=2><b>";
			echo strtoupper(mssql_field_name($consulta,16));
			echo "</b></td></tr>";

			while ($linha = mssql_fetch_row($consulta)) {
			 echo "<tr><td nowrap> <font size=1>";
		   	 echo mssql_result($consulta, 0);
		 	 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 1);
			 echo "</td><td nowrap> <font size=1>";
	   		 echo mssql_result($consulta, 2);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 3);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 4);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 5);
			   echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 6);
			 echo "</td><td nowrap> <font size=1>";
	   		 echo mssql_result($consulta, 7);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 8);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 9);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 10);
			   echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 11);
			   echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 12);
			 echo "</td><td nowrap> <font size=1>";
	   		 echo mssql_result($consulta, 13);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 14);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 15);
			 echo "</td><td nowrap> <font size=1>";
			   echo mssql_result($consulta, 17);
			 echo "</td></tr>";

 	 		}
			echo "</table></div>";
		}
		else{
			echo "Não há registros para esse Terminal.");
		}
	}
	else{
		echo "Não foi Possivel estabelecer conexão com o servidor.");
	}

  }
  mssql_close();
?>

basicamente tá acusando que a query falhou mas já testei essa query direto no banco e deu certinho, também testei esse script com outras querys mais simples e mais complicadas e continuou sem retornar nada. Já tentei usando ODBC também e nada.

Se puderem ajudar seria ótimo.

 

Valeu!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa ver se eu entendi, o que você quer é receber os dados preenchidos de um formulario e mostrar os dados que estão no banco?

 

Se for isso deixe o formulario aqui e de os nomes das colunas e da tabela em que irei fazer a busca.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno, esta query está funcionando legal ?

Acho que a primeira coisa que você tem que fazer, é ter certeza de que a query funciona da forma que você espera.

Fórum de MS-SQL Server: http://forum.imasters.com.br/index.php?showforum=31

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio,

 

A query está funcionando bacana, já testei ela direto no banco e tá tudo OK, testei inclusive se a váriável $query está preenchida com a query toda correta e está Absolutamente OK.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deveria funcionar...

Olha o código fonte que é imprimido, já ví casos que o resultado não aparece porque o html foi formatado errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deveria funcionar...

Olha o código fonte que é imprimido, já ví casos que o resultado não aparece porque o html foi formatado errado.

De início a formatação HTML está certa, já que uso essa mesmo script para outras consultas, inclusive de outros bancos de dados, até porque, o erro acusado e o de que a query falhou (Query Failed) o caso é que isso pode ser por N motivos além do fato da query poder estar errada.

Quando coloco uma consulta mais simples roda tranquilo, entao desconfiei do seguinte:

Existe algum limite do tempo de execução ou outro tempo limite que pode estar barrando a consulta? A conexão que estou usando com o banco até onde eu sei é persistente (me corrijam se eu estiver errado).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não apareceu a saída HTML de algum resultado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dessa consulta não, as outras consultas que eu usei usando esse mesmo método pra saída HTML mostraram resultado.

Quando tento usando OBDC ao invés de conexão direta com o banco, aparece a msg de que excedeu o máximo de tempo da execução (30 seg). Não sei se no SQL Server tem algo do tipo, apesar de que creio que não, já que já fiz consultas até mais pesadas usando esse mesmo script.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A reportagem de erros está habilitada no php.ini ?

Se não estiver, adicione isso no início do código pra testar:

 

ini_set('display_errors', 'On');
error_reporting(E_ALL);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio,

 

Valeu pela dica, dessa vez mostrou a seguinte mensagem:

 

You don't have permission to access /teste_portal/include/Consultas/divida_escobs Notice: Undefined variable: _PATH_INFO in D:/WEB/htdocs/Teste_portal/include/Consultas/Divida_escobs/Index.php on line 41 on this server

 

na linha 41, tem o cabeçalho do formulário:

<form name=form action="<?php echo $_PATH_INFO; ?>" method=post OnSubmit="verificarValor()">

Esse $_PATH_INFO segundo o que sei é devido ao formulário estar no mesmo script, pode ter alguma coisa a ver?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Procure não usar a variável dete modo, coloque sempre assim:

 

<?php echo $_SERVER['PATH_INFO']; ?>

dê permissão chmod ao arquivo index no qual ocorre o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alaerte, coloquei o seguinte no início do meu script:

chmod("index.php", 0755);
mas não rolou nada, estou errado? quanto ao $_SERVER['PATH_INFO'] continua na mesma.

 

Valeu!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A página está sem permissão, com isso tu não pode alterar ela mesma... portanto tu vai ter que dar o chmod pelo programa de FTP ou pelo cpanel...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o servidor for Windows, o chmod não irá funcionar. E se você não for dono do arquivo, também não conseguirá alterar as permissões dele.

Você consegue ver o arquivo '/teste_portal/include/Consultas/divida_escobs' no ftp ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o servidor for Windows, o chmod não irá funcionar. E se você não for dono do arquivo, também não conseguirá alterar as permissões dele.

Você consegue ver o arquivo '/teste_portal/include/Consultas/divida_escobs' no ftp ?

Consigo sim márcio, ver e alterar inclusive.

Agora me expliquem exatamente como eu altero essas permissóes, e o que é cpanel?

 

Um colega meu me disse que pode ser deivido a query que está muito lenta, e que o PHP tem um limite de execução da query, isso procede? inclusive me sugeriu fazer uma paginação pra retornar um pedaço da tabela de cada vez e ficar mais rápida, o f*** é que eu só acho, paginação feita em MySQL, que tem o LIMIT, tentei fazer isso no SQL Server 2000 aqui mas não rolou nada, acho que o SQL Server não tem isso.

 

Valeu!!!

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.