Jump to content


Photo

Reordenar Linhas


  • Faça o login para participar
1 reply to this topic

#1 SiriusRed

SiriusRed

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado
  • Interesses:Computador= PHP, ASP, ActionScript, e mtos outros q nao to lembrando agora ^^

Posted 09/02/2011, 09:52

Olá galéra e WebMaster!

Minha dúvida de hoje é um pouco de mysql e um pouco de PHP.

Tenho minha tabelinha que tem uma coluna chamada nr_ordem.
Tenho meus registros e no php eu fiz 2 imagens... uma setinha pra cima e uma pra baixo....
por lógica eu pensei no seguinte...


Meu problema ta sendo o seguinte... quando ele clicar eu tinha que ter uma query que ia analisar se existe antes e depois dele dados e se existe tem que alterar todos
os outros também....

por exemplo...

Existem 3 linhas... 1, 2, 3...

Quando eu clicar pra subir a 2... a 1 tem que ocupar o lugar da 2...
Quando eu clicar pra 2 descer a 3 tem que ir pro lugar da 2.... Entenderam?

Segue até onde consegui fazer.

if($ordem == 'cima')
{
$nr_ordem = $_GET['nr_ordem'] - 1;
//EXECUTA A QUERY QUE FAZ O UPDATE

$query_ultimo = pg_query($conexao, "UPDATE tb_questao SET nr_ordem='$nr_ordem' WHERE id = $questaoid");
header("Location: ver_questoes.php?id_cliente=$id_cliente&qid=$qid&mensagem=Questão alterada com sucesso!");


}
else if($ordem == 'baixo'){

$nr_ordem = $_GET['nr_ordem'] + 1;
//EXECUTA A QUERY QUE FAZ O UPDATE

$query_ultimo = pg_query($conexao, "UPDATE tb_questao SET nr_ordem='$nr_ordem' WHERE id = $questaoid");
header("Location: ver_questoes.php?id_cliente=$id_cliente&qid=$qid&mensagem=Questão alterada com sucesso!");
}
Saber Numk é Demais

#2 DeeK

DeeK

    Normal

  • Usuários
  • 63 posts
  • Sexo:Masculino

Posted 09/02/2011, 13:10

Você vai fazer uma troca.

O 3 pelo 2, e o 2 pelo 3. Você não precisa saber o que vem antes. Só o que vem depois.
Você está levando também o ID não está ? Ele é auto numeração ?

Então faça um Update, selecionando todos os registros que vem depois desse ID, ID > $ID, usando um WHILE do Select.
$x = $nr_ordem + 1; // ISSO é IMPORTANTE

$sql = "select * from tabela where id > $id";
$exe = mysql_query($sql);

while($res = mysql_num_rows($exe)){
   $upd = "update tabela set nr_ordem = $x where id > $id and id = $res['id']";
   $exec = mysql_query($upd);
}






1 user(s) are reading this topic

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

IPB Skin By Virteq