Ir para conteúdo

POWERED BY:

Arquivado

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

wilson

Selecionar próximo registro e anterior

Recommended Posts

Olá Pessoal

 

Será que existe algum comando sql que liste o proximo registro e o anterior?

Achei isto googleando, mas aparentemente nao acontece nada

 

 

SELECT @now := added

FROM table

WHERE uid = {x};

SELECT @prev := uid

FROM table

WHERE added < @now

ORDER by added DESC

LIMIT 0, 1;

SELECT @next := uid

FROM table

WHERE added > @now

ORDER by added ASC

LIMIT 0, 1;

 

 

Alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser feito assim também:

Antes de mover pelos registros faça uma query que retorne a quantidade de registros.

 

Sabendo a quantidade de registros voce pode mover por eles como quiser.

Basta incrementar ou decrementar a variável do registro atual somente se a query não retornar null.

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aham. Quanto a isto nao tem problema.

Tambem tem o select first pra saber qual é o primeiro

O problema é quando o usuario exclui um registro do meio...

Ai voce tem o registro 900,901,902,906,908

Aí fica o vão entre o 903 e o 906 aí o sistema nao encontra o proximo registro.

 

Esse é o problema da lógica nesse tipo de sistema pra deixar o cara maluco

 

abç

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem tanto assim. :D

 

Imagine que voce tenha um teste que indique se a query retornou algum resultado. Ex: 903.

Ok, essa query retornará os dados. Quando pressionar o botão proximo a query buscará 904, mas o retorno é um NULL, então voce entra num loop que sempre incrementa um e testa se o retorno é diferente de NULL. Com isso voce passa pelo 904 e 905 chegando ao 906.

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal

 

Será que existe algum comando sql que liste o proximo registro e o anterior?

Achei isto googleando, mas aparentemente nao acontece nada

 

 

SELECT @now := added

FROM table

WHERE uid = {x};

SELECT @prev := uid

FROM table

WHERE added < @now

ORDER by added DESC

LIMIT 0, 1;

SELECT @next := uid

FROM table

WHERE added > @now

ORDER by added ASC

LIMIT 0, 1;

 

 

Alguem pode me ajudar?

Acho que assim funciona:

 

CODE
É soh você utilizar uma consulta com o "limit" da seguinte forma:

"select * from tabela limit 0,1";

 

O 0 (zero)indica q você pegará o primeiro registro da tabela;

o 1 (um) indica a quantidade de tuplas a mostrar.

 

então no seu script php você manipula o 0(zero) do limit, indicando se vai para o próximo ou para o registro anterior.

Esse eh um exemplo com PHP:

CODE
<?

$host = "localhost";

$db = "banco";

$user = "root";

$senha = "";

 

$con = mysql_connect($host,$user, $senha) or die(mysql_error());

$select_DB = mysql_select_db($db, $con) or die(mysql_error());

 

$sql = "select * from tabela";

 

$res = mysql_query($sql);

 

$rows = mysql_num_rows($res);

 

$id = 0;

 

if($_GET['id_prev']){

$id = $_GET['id_prev'];

}

else{

$id = $_GET['id_next'];

}

 

if ($id) {

$sql = "select * from tabela limit $id,1 ";

 

$res = mysql_query($sql);

 

while ($dados = mysql_fetch_array($res)) {

echo $dados['id']."<br><br><br><br>";

}

 

 

}

 

 

?>

 

 

 

<a href="?id_prev=<?=($id==0)?0:$id-1;?>">Prev</a> | <a href="?id_next=<?=($id==$rows)?$rows:$id+1;?>">Next</a>

Espero ter ajudado, até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Não consegui selecionar o next e o prev.

 

Alguém poderia colocar mais um exemplo?

 

Esse é um recurso muito importante e só falta isso para eu terminar toda a formatação básica do meu sistema em web.

 

Agradeço.

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.