wilson 0 Denunciar post Postado Janeiro 10, 2008 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
Beraldo 864 Denunciar post Postado Janeiro 10, 2008 Crie a SQL usando o ID corrente, somando ou subtraindo uma unidade: próximo: Select dados From tabela Where ID = $id_corrente + 1; anterior Select dados From tabela Where ID = $id_corrente - 1; Compartilhar este post Link para o post Compartilhar em outros sites
wilson 0 Denunciar post Postado Janeiro 14, 2008 Olá Beraldo... a lógica é esta mesma. Só que aí tem um probleminha... se o registro for nulo? Abç Wilson Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 14, 2008 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 Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Janeiro 14, 2008 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
wilson 0 Denunciar post Postado Janeiro 14, 2008 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
Kandrade 7 Denunciar post Postado Janeiro 14, 2008 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
NSF 0 Denunciar post Postado Janeiro 18, 2008 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
Anderson007 1 Denunciar post Postado Julho 15, 2008 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