Ir para conteúdo

POWERED BY:

Arquivado

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

jackvalantine

paginação vinda de banco postgres

Recommended Posts

pessoal fiz este codigo pra gerar uma paginação, só que não esta funcionando....

 

 

será que alguem pode me ajudar, já procurei no forum e o que achei não me ajudou

 

//CONECTA AO BANCO PARA RETORNAR O PEDIDO NO PERIODO.

                $total_reg = "5";

                if (!$pagina) {

                $pc = "1";

                } else {

                        $pc = $pagina;

                }

                $inicio = $pc - 1;

                $inicio = $inicio * $total_reg;

               

$conperiodo = "SELECT cod_med,medicamento,sum(quant_fornecido),sum(quant_pedido) FROM pedido WHERE unidade='$unidade' and data_sis between '$data' and '$data2' group by cod_med,medicamento order by cod_med asc limit '$total_reg'";

                        $resperiodopg_query ($conperiodo);

                        $tr = pg_num_rows($resperiodo); // verifica o número total de registros

                        $tp = $tr / $total_reg; // verifica o número total de páginas

               

               

                while ($row1 = pg_fetch_array ($resperiodo))//&&($row2 = pg_fetch_array ($resperiodo)))

                                {

                                                       

                                echo "<tr>";

                                echo "<td><b><center>$row1[0]</center></b></td>";

                                echo "<td><b>$row1[1]</b></td>";

                                      $row = pg_fetch_array ($resconsumo);//busca em consumo.

                                      $row2 = $row[3]*(-1);

                                      @$total = $row2/$pop ;

                                      $total2 = number_format($total,2, ',', ' ');   //calcula o consumo po preso..                 

                                                                                               

                                                        echo "<td><b><center>$row2</center></b></td>";

                                                        echo "<td><b><center>$row1[3]</center></b></td>";

                                                                     

                                                                                        if($row1[2]=="")

                                                                                        {

                                                                                        $row1[2] =0;

                                                                                        }

                                                                                       

                                                        echo "<td><b><center>$row1[2]</center></b></td>";

                                                        echo "<td><b><center>$total2</center></b></td>";

                                                        @$total3 = ($row[3]/$totaldif)*(-1);

                                                        $total4 = number_format($total3,2, ',', ' ');

                                                        echo "<td><b><center>$total4</center></b></td>";

                                                        echo "</tr>";

                                                }

                                        $anterior = $pc -1;

                                        $proximo = $pc +1;

                                                if ($pc>1) {

                                                        echo " <a href='?pagina=$anterior'><- Anterior</a> ";

                                                        }

                                                        echo "|";

                                                        if ($pc<$tp) {

                                                        echo " <a href='?pagina=$proximo'>Próxima -></a>";

                                                        }

                       

                        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza agora esta gerando os links, mas quando você clica neles da erro, ele esta enviando para uma outra parte do meu codigo,onde tem um else......que o complemento do if que gera a 1 parte da consulta.

 

veja os erros:

 

 

Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid input syntax for integer: "" in C:\Arquivos de programas\Apache Group\Apache2\htdocs\exibir_relatorio_consumo.php on line 172

 

Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\Arquivos de programas\Apache Group\Apache2\htdocs\exibir_relatorio_consumo.php on line 173

 

Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid input syntax for integer: "" in C:\Arquivos de programas\Apache Group\Apache2\htdocs\exibir_relatorio_consumo.php on line 178

 

Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\Arquivos de programas\Apache Group\Apache2\htdocs\exibir_relatorio_consumo.php on line 179

 

Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid input syntax for integer: "" in C:\Arquivos de programas\Apache Group\Apache2\htdocs\exibir_relatorio_consumo.php on line 185

 

Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\Arquivos de programas\Apache Group\Apache2\htdocs\exibir_relatorio_consumo.php on line 186

 

Warning: Division by zero in C:\Arquivos de programas\Apache Group\Apache2\htdocs\exibir_relatorio_consumo.php on line 191

 

 

 

Segue o codigo

 

 

 

//CONECTA AO BANCO PARA RETORNAR O PEDIDO NO PERIODO.
                        = 1;// Especifique quantos resultados você quer por página
                        = "SELECT cod_med,medicamento,sum(quant_fornecido),sum(quant_pedido) FROM pedido WHERE unidade='' and data_sis between '' and '' group by cod_med,medicamento order by cod_med asc";
                        =  pg_query (" limit ''");
                        = pg_query ("");
                        = pg_num_rows(); // Esta função irá retornar o total de linhas na tabela
                       echo ;
                        = ceil( / ); // Retorna o total de páginas
                       echo ;
                       if(!isset()) // Especifica uma valor para variavel pagina caso a mesma não esteja setada
                       { 
                        = 0; 
                       } 
                        =  * ; // Retorna qual será a primeira linha a ser mostrada no MySQL
                       echo  ;

                                       while ( = pg_fetch_array ())//&&( = pg_fetch_array ()))
                                               {

                                                       echo "<tr>";
                                                       echo "<td><b><center></center></b></td>";
                                                       echo "<td><b></b></td>";
                                                                        = pg_fetch_array ();//busca em consumo.
                                                                        = [3]*(-1);
                                                                   @ = / ;
                                                                        = number_format(,2, ',', ' ');    //calcula o consumo po preso..                                          

                                                       echo "<td><b><center></center></b></td>";
                                                       echo "<td><b><center></center></b></td>";
                                                                       // = pg_fetch_array ();//busca o periodo 
                                                                                       if([2]=="")
                                                                                       {
                                                                                       [2] =0;
                                                                                       }

                                                       echo "<td><b><center></center></b></td>";
                                                       echo "<td><b><center></center></b></td>";
                                                       @ = ([3]/)*(-1);
                                                        = number_format(,2, ',', ' ');
                                                       echo "<td><b><center></center></b></td>";
                                                       echo "</tr>";
                                               }

                                                       if( > 0) {
                                                         =  - 1;
                                                         = "?pagina=";
                                                        echo "<a href="">Anterior</a>"; // Vai para a página anterior
                                                       }
                                                       for(=0;<;++) { // Gera um loop com o link para as páginas
                                                         = "?pagina=";
                                                        echo " | <a href=""></a>";
                                                       }
                                                       if( < ) {
                                                         =  + 1;
                                                         = "?pagina=";
                                                        echo " | <a href="">Próxima</a>";
                                                       }

                       }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pô galera... pq vcs nao usam a ADODB?? dai o mesmo código que vcs fizeram pra paginar no mysql por exemplo.... funcionará no firebird, portgress, mssql, access, etc....

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal vou tentar ser mais claro pra ver se alguem pode me ajudar......

 

 

o codigo esta gerando as paginas com o seus respectivos links, só que quando você clica em qualquer uma ele não continua a lista, mas sim vai para uma parte do meu cogigo onde eu faço uma comparação.

 

esta é a pagina com o formulario

 

pagina

 

 

esta é a pagina que esta gerando alista com o s links certinho.

 

pagina 2

 

e esta é apagina que esta exibindo os erros

 

pagina3

 

 

Abaixo segue o codigo completo..

 

 

 

session_start();
$unidade = $_SESSION["unidade_cod"]; //busca a unidade na seção.
$meses = array ("Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez");
// obtém os valores digitados na data
$dia = $_POST["dia"];
$mes = $_POST["mes"];
$ano = $_POST["ano"];
$dia1 = $_POST["dia1"];
$mes1 = $_POST["mes1"];
$ano1 = $_POST["ano1"];

// colocar datas no formato AAAA-MM-DD para consulta
$data = "$ano-$mes-$dia";
$data2 = "$ano1-$mes1-$dia1";

//inverte as datas para serem exibidas
$data3 = "$dia $mes $ano";
$data4 = "$dia1 $mes1 $ano1";

//calcula os dias entre o periodo
function date_dif($data, $data2) {
if (strcmp(substr($data, 2, 1 ), "/") == 0) {
$data = substr($data, 6, 4).substr($data, 2, 4).substr($data, 0, 2);
$data2= substr($data2, 6, 4).substr($data2, 2, 4).substr($data2, 0, 2);
} //end if
$initial_date = getdate(strtotime($data));
$final_date = getdate(strtotime($data2));
$dif = ($final_date[0] - $initial_date[0]) / 86400;
return ($dif);
}
$dif = date_dif($data, $data2)+1;
$totaldif = number_format($dif,0, ',', ' '); 

//troca cor da data.
$cor = "#ff0000";

//recebe os valores das opções do usuario.
$cod = $_POST["cod"];
$unidade = $_POST["unidade"];
$pop = $_POST["pop"];
//CONECTA BANCO DE DADOS PEDIDO UNIDADES 
include('conexao1.php');	

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style type="text/css">

<!--

body {

margin-left: 0px;

margin-top: 0px;

margin-right: 0px;

margin-bottom: 0px;

}

.style4 {color: #FFFFFF}

.style6 {color: #990000}

-->

</style></head>

 

<body>

<table width="760" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#E1E1E1">

<tr>

<td width="283"><strong>Usuário:</strong><b><?php echo $_SESSION["usuario"]; ?></b></td>

<td width="275"><b>Unidade:<?php echo $_SESSION["unidade_cod"];?></b></td>

<td width="180"><b>Data:<?php include ("tempo.php");?></b></td>

</tr>

</table>

<table width="760" border="0" align="center" cellpadding="0" cellspacing="0">

<tr>

<td><div align="center" class="style4"><strong>Nucleo Regional de Saúde e Farmácia da COREVALI</strong></div></td>

</tr>

<tr>

<td><div align="center" class="style4">x</div></td>

</tr>

<tr>

<td><div align="center"><strong>Relatório de Consumo </strong></div></td>

</tr>

</table>

<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#990000">

<tr>

<td width="412"><strong><span class="style4">Periodo:</span> <?php echo "<font color=\"#ffcc00\">$data3</font>";?> <span class="style6">x</span><span class="style4">à</span><span class="style6">x</span> <?php echo "<font color=\"#ffcc00\">$data4</font>";?> <span class="style6">xxxx <span class="style4">Total de Dias:</span> <?php echo "<font color=\"#ffcc00\">$totaldif</font>";?></span></strong></td>

<td width="180"><strong><span class="style4">População Atual:</span> <?php echo "<font color=\"#ffcc00\">$pop</font>";?></strong></td>

<td width="160"><strong><span class="style4">Unidade:</span> <?php echo "<font color=\"#ffcc00\">$unidade</font>";?></strong></td>

</tr>

</table>

<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#999999" bgcolor="#E1E1E1">

<tr>

<td width="52" height="66" valign="middle"><div align="center"><strong>Codigo</strong></div></td>

<td width="393" valign="middle"><div align="center"><strong>Medicamento</strong></div></td>

<td width="66" valign="top"><div align="center"><strong>Consumo no Periodo </strong></div></td>

<td width="55" valign="top"><div align="center"><strong>Pedido no Periodo </strong></div></td>

<td width="81" valign="top"><div align="center"><strong>Quantidade Fornecido </strong></div></td>

<td width="63" valign="top"><div align="center"><strong>Média por Preso </strong></div></td>

<td width="50" valign="top"><div align="center"><strong>Média Por Dia </strong></div></td>

</tr>

<?php

 
//FAZ A VERIFICAÇÃO ENTRE OS CODIGO A SEREM EXIBIDOS.

   if ($cod == 'todas')//aqui inicia minha verificação se opção = todas ele entra aqui.
{

//CONECTA AO BANCO DE DADOS E RETORNA O CONSUMO NO PERIODO
$consumo = "SELECT cod_medicamento,unidade,medicamento,sum(quant) FROM movimentacao WHERE unidade='$unidade' and tipo_movi='saida' and data_sistema between '$data' and '$data2' group by cod_medicamento,unidade,medicamento order by cod_medicamento,unidade asc";					
$resconsumo	= pg_query ($consumo);			
//CONECTA AO BANCO PARA RETORNAR O PEDIDO NO PERIODO.
$lpp = 2;// Especifique quantos resultados você quer por página
		$conperiodo = "SELECT cod_med,medicamento,sum(quant_fornecido),sum(quant_pedido) FROM pedido WHERE unidade='$unidade' and data_sis between '$data' and '$data2' group by cod_med,medicamento order by cod_med asc";
		$resperiodo =  pg_query ("$conperiodo limit '$lpp'");
		$tudo = pg_query ("$conperiodo");
		$total6 = pg_num_rows($tudo); // Esta função irá retornar o total de linhas na tabela
		echo $total6;
		$paginas = ceil($total6 / $lpp); // Retorna o total de páginas
		echo $paginas;
		if(!isset($pagina)) // Especifica uma valor para variavel pagina caso a mesma não esteja setada
		{ 
		$pagina = 0; 
		} 
		$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL
		echo  $inicio;
	 	$resperiodo =  pg_query ("$conperiodo limit $lpp");			

				while ($row1 = pg_fetch_array ($resperiodo))
					{

						echo "<tr>";
						echo "<td><b><center>$row1[0]</center></b></td>";
						echo "<td><b>$row1[1]</b></td>";
								$row = pg_fetch_array ($resconsumo);//busca em consumo.
								$row2 = $row[3]*(-1);//passa o numero para positivo, e onde o banco vai retornar vazio ele jogo 0 "0";
							    @$total = $row2/$pop ;//calcula a media por população
								$total2 = number_format($total,2, ',', ' ');	//formata o numero para 0,00					

						echo "<td><b><center>$row2</center></b></td>";
						echo "<td><b><center>$row1[3]</center></b></td>";
								//$row2 = pg_fetch_array ($resperiodo);//busca o periodo 
										if($row1[2]=="")
										{
										$row1[2] =0;
										}

						echo "<td><b><center>$row1[2]</center></b></td>";
						echo "<td><b><center>$total2</center></b></td>";
						@$total3 = ($row[3]/$totaldif)*(-1);//calcula a media por dia e o torna positivo
						$total4 = number_format($total3,2, ',', ' ');//formata o numero em 0,00
						echo "<td><b><center>$total4</center></b></td>";
						echo "</tr>";
					}
						//inicio do codigo para gerar as paginas
						if($pagina > 0) {
						 $menos = $pagina - 1;
						 $url = "$PHP_SELF?pagina=$menos";
						 echo "<a href=\"$url\">Anterior</a>"; // Vai para a página anterior
						}
						for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas
						 $url = "$PHP_SELF?pagina=$i";
						 echo " | <a href=\"$url\">$i</a>";
						}
						if($pagina < $paginas) {
						 $mais = $pagina + 1;
						 $url = "$PHP_SELF?pagina=$mais";
						 echo " | <a href=\"$url\">Próxima</a>";
						}


		}

	else// aqui se o cod = ao codigo digitado pelo usuario
		{
//CONECTA AO BANCO E RETORNA O CODIGO E O NOME DO MEDICAMENTO INDIVIDUALMENTE.			
		$conme1 = "SELECT cod_medicamento,medicamento FROM estoque_saude WHERE cod_medicamento='$cod' group by medicamento,cod_medicamento";
		$resme1 = pg_query ($conme1);
		$sqlme1= pg_fetch_array ($resme1);
		$codig = $sqlme1[0];
		$medic = $sqlme1[1];
//CONECTA AO BANCO DE DADOS E RETORNA O CONSUMO NO PERIODO
$consumo = "SELECT cod_medicamento,unidade,sum(quant) FROM movimentacao WHERE unidade='$unidade' and cod_medicamento='$cod' and tipo_movi='saida' and data_sistema between '$data' and '$data2' group by cod_medicamento,unidade order by cod_medicamento,unidade asc";					
$resconsumo	= pg_query ($consumo);
$sqlconsumo = pg_fetch_array ($resconsumo);
$consu = $sqlconsumo[2] * (-1);//passa o numero para positivo, e onde o banco vai retornar vazio ele jogo 0 "0";


//CONECTA BANCO PARA RETORNAR O PEDIDO NO PERIODO.
$conperiodoind = "SELECT cod_med,unidade,sum(quant_pedido),sum(quant_fornecido) FROM pedido WHERE unidade='$unidade' and cod_med='$cod' and data_sis between '$data' and '$data2'group by cod_med,unidade order by cod_med,unidade asc";
$resperiodoind =pg_query ($conperiodoind);
$sqlperiodo = pg_fetch_array ($resperiodoind);
$periodo = $sqlperiodo[2];
$fornecido = $sqlperiodo[3];
$fornecido1 = ($fornecido * 1);

$total = $consu / $pop ;//gera consumo com população	
$total2 = number_format($total,2, ',', ' ');//formata o resultado para 0,00								
						echo "<tr>";
						echo "<td><b><center>$codig</center></b></td>";
						echo "<td><b>$medic</b></td>";
						echo "<td><b><center>$consu</center></b></td>";
						echo "<td><b><center>$periodo</center></b></td>";
						echo "<td><b><center>$fornecido1</center></b></td>";
						echo "<td><b><center>$total2</center></b></td>";
						@$total3 = ($consu/$totaldif);//calcula o consumo por dias
						$total4 = number_format($total3,2, ',', ' ');//formata o resultado em 0,00 
						echo "<td><b><center>$total4</center></b></td>";
						echo "</tr>";
		}

?>

</table>

<p align="center"><a href="relat_consumo.php">Sair</a></p>

<p align="center"> </p>

</body>

</html>

[/php]

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.