Jump to content


Photo

Limit No Mssql


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

#1 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 02/04/2005, 23:14

galera estou tentando fazer um sistema de paginação no MSSQL mas não estou conseguindo

tipo percebi que no MSSQL não existe o LIMIT <_<
assim fica treta de fazer

alguém tem um tuto q ensine a fazer ou um script de paginção já pronto só para eu poder analisar ? :huh:

agradeço desde já (y)

Goku Jr.
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 03/04/2005, 02:00

A idéia é essa:

$RegPorPag = 10;
$Pg = $_GET['Pg'];
$Busca = mssql_query('SELECT * FROM Tabela');

mssql_data_seek(($Pg-1)*$RegPorPag);

$i= 0;

while(($Linha = mssql_fetch_row($Busca)) && $i < $RegPorPag){
   echo $Linha[0] . '<br>';
   $i++;
}

// Rotina pra fazer o índice de páginas entra aqui


#3 ThalesWeb

ThalesWeb

    Veterano

  • Usuários
  • 1435 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 03/04/2005, 08:10

Não sei se no MsSQL tem essa função, mas em alguns BD's eu uso SKIP.
Ex.
10 SKIP 50, que seria o 10, 50.
Thales Santos

#4 lugs

lugs

    Normal

  • Usuários
  • 83 posts
  • Sexo:Não informado
  • Localidade:Capinas - SP

Posted 03/04/2005, 20:30

Hum... essa do SKIP eu naõ sabia,

eu usava LIMIT, que é tipo:

LIMIT 10, 50

isso quer dizer, apartir do registro no. 10, puxe os 50 próximos, no caso, do número 10 ao 60
"Qndo eu apontar para a Lua, não olhe para o meu dedo"

#5 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 04/04/2005, 00:07

DarK ThaleS : legal essa eu não conhecia :D

lugs : o LIMIT não funciona no MSSQL :P
mas vlw mesmo assim

LeoB : estou testando esse seu pequeno código mas não estou conseguindo obter resultados positivos...
está me retornando erro do mssql_data_seek();

Warning: Wrong parameter count for mssql_data_seek()

aqui está o CODIGO

<?
include "config.php";
$RegPorPag = 10;
$Pg = $_GET['Pg'];
if (empty($Pg)) { $Pg = 0; }
$Busca = mssql_query('SELECT * FROM Character');

mssql_data_seek($Pg * 10);

$i= 0;

while(($Linha = mssql_fetch_row($Busca)) && $i < $RegPorPag){
  echo $Linha[0] . '<br>';
  $i++;
}
?>

até + !
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#6 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 04/04/2005, 14:00

e se você usar o TOP ?

#7 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 04/04/2005, 14:04

Goku Jr, eu esqueci do segundo parâmetro, que é o identificador da consulta:

mssql_data_seek(($Pg-1)*$RegPorPag, $Busca);


#8 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 22/11/2005, 20:19

Desculpme galera estar renascendo este tópico

E que até hj eu não consegui fazer o sistema de páginação em MsSQL

estou agora neste exato momento ( 21:17Pm ) procurando algo no PHPBrasil. pra ver se consigo fazer .... se eu encontrar alguma coisa funcional eu volto a adicionar aqui, mas se até não conseguir e se alguém souber por favor me ajude :D

ah já tentei fazer com o between , porém ele só le campos com o TIPO INT e não VACHAR :(

e LeoB não consegui usar esta função que vc postou :(

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#9 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 22/11/2005, 21:14

Não conseguiu por que?

Na pior das alternativas, vale usar objetos COM.

<?
$Conexao = new COM('ADODB.Connection');
$Conexao->Open('Driver={SQL Server};Server=(local);Database=Banco;UId=usuario;Pwd=senha');

$RegPorPag = 10;
$Pg = $_GET['Pg'];

$Busca = new COM('ADODB.Recordset');
$Busca->Open('SELECT * FROM Tabela', $Conexao, 1, 3);

$Busca->Move(($Pg-1)*$RegPorPag);

$i = 0;

while(!$Busca->EOF && $i < $RegPorPag){
  $Campo = $Busca->Fields(0);
  echo $Campo->Value . '<br>';
  $i++;
  $Busca->MoveNext();
}

$Busca->Close();

// Rotina pra fazer o índice de páginas entra aqui

$Conexao->Close();

?>


#10 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 27/11/2005, 14:51

Ae Leo VLWWWW

consegui fazer o sistema de páginção SIMPLES com sua AJUDA ( tudo bem que vc inverteu as condições do mssql_data_seek(); )
+ ta valendo !!!

VLWW mesmo !!!

bom pra quem deseja ta ae o Código funcionando com paginção como prometido ( BY LEOB ):

$TotalPG = 5;
$Tabela = "TABELA";
$Pg = $_GET['Pg'];
if (empty($Pg)) { $Pg = 0; }
$Busca = mssql_query('SELECT * FROM '.$Tabela);
$pgs = ceil(mSsql_num_rows($Busca) / $TotalPG);
mssql_data_seek($Busca , ($Pg * $TotalPG));
$i = 0;
while(($Linha = mssql_fetch_row($Busca)) && $i < $TotalPG){
 echo $Linha[1] . '<br>';
 $i++;
}

if ($Pg > 0) {
 $Menos = $Pg - 1;
 echo "<a href='?Pg=".$Menos."'><= Voltar</a><b>&nbsp;|&nbsp;</b>";
}

if ($Pg < ($pgs-1)) {
 $Mais = $Pg + 1;
 echo "<a href='?Pg=".$Mais."'>Próximo =></a>";
}

VLWWW
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#11 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 28/11/2005, 18:22

mssql_data_seek é uma função pouco usual. Acabei embolando a ordem, mas ainda bem que você decobriu. Só tem que consertar essa linha:

$pgs = ceil(mSsql_num_rows($Busca) / $TotalPG);
O certo é:

$pgs = ceil(mssql_num_rows($Busca) / $TotalPG);
Se você colocou o "S" de propósito, pra mostrar que não é "mysql", fica então como aviso pro pessoal do Ctrl+C Ctrl+V.

#12 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 28/11/2005, 19:18

heheh na verdade... :P foi sem querer, eu apertei o SHIFT + o S eheheh

mas acho q vale mesmo como AVISO pra galera....

Vlw novamente LEOB (y) !!!!

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#13 andrevale

andrevale

    Turista

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

Posted 12/07/2006, 17:22

Usei esse codigo pra fazer minha paginação. Beleza, funcionou, mas tah desorganizado. Tipo, no meu sistema tem uma tabela no meio da pagina com os campos matricula, nome e açao mas a paginaçao aparece no topo da pagina e aparecendo apenas os nomes...

No codigo do meu sistema, utilizo um foreach pra varrer os arrays de matricula, nome e açao. Como faço pra que essa paginação funcione dentro da minha tabela e organizada?

Abraços.

#14 Ronaldo

Ronaldo

    Mu X-Plosion - MUOnline Server

  • Usuários
  • 310 posts
  • Sexo:Não informado
  • Localidade:Nova Xavantina - MT

Posted 12/07/2006, 23:15

andrevale eu fiz esse pergunta aqui a alguns dias atraz pq estou fazendo um sisteminha de noticias...

eu posso te ajudar e acho que posso aprender alguma coisa com vc

meu msn é ronaldonx@gmail.com e b0brinha@hotmail.com t+
Mu X-Plosion - Qualidade em primeiro lugar!
Mu X-Plosion - MuOnline como você nunca viu antes!
Mu X-Plosion - O Melhor MU que você já viu!
Mu X-Plosion - Por que não basta ser o melhor tem que oferecer o melhor e a maior qualidade!

#15 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 13/07/2006, 07:30

adicione o código aqui no fórum para que possamos lhe ajudar!

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951




0 user(s) are reading this topic

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

IPB Skin By Virteq