Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
Olá Beraldo... a lógica é esta mesma.
Só que aí tem um probleminha... se o registro for nulo?
Abç
Wilson
Com MAX() é possível saber o ID do último registro. Se o corrente for o último, nào exiba o link para o próximo
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
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ç
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
>
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!
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.
Crie a SQL usando o ID corrente, somando ou subtraindo uma unidade:
próximo:
anterior