Ir para conteúdo

POWERED BY:

Arquivado

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

allex_carvalho

[Resolvido] Alterar ordem de exibição de noticias

Recommended Posts

Boa tarde pessoal.

 

Possuo um sistema de cadastro de noticias e que me pediram para inserir um campo no local que lista as noticias para alterar a ordem de visualização das noticias.

 

Inseri um input com onblur para evitar alguns botões. A idéia é. Quando cadastra a noticia insiro o ID da noticia num campo ordemNoticia para ser a ordem normal. Só que se o usuário quiser que a noticia com id 5 seja exibida em segundo lugar ele pode ir lá e alterar a numeração da ordem para 2 e automaticamente o que era 2 passa a ser 5.

 

Vejam como montei a estrutura:

 

input:

 

<input type="text" id="<?php echo $novoId; ?>" class="ordemNoticia" name="ordemNoticia" onBlur="alterarOrdem<?php echo $novoId; ?>()" value="<?php echo $rs->ordemNoticia; ?>" />

 

Função:

 

<script type="text/javascript">
                   function alterarOrdem<?php echo $novoId; ?>()
                   {   
                       var novoValor = document.getElementById('<?php echo $novoId; ?>').value;
                       $.get("php/alterarOrdem.php?id=<?php echo $novoId; ?>&ordem=<?php echo $ordem; ?>&novaOrdem=novoValor;");
                   }
               </script>

 

AlterarOrdem.php

 

<?php

// Recebe ID e a ordem atual das noticias
$id = $_GET['id'];
$ordem = $_GET['ordem'];
$novaOrdem = $_GET['novaOrdem'];

// Descobrir ID da ordem a ser trocada
$sql = "SELECT idNoticia, ordemNoticia FROM noticias WHERE ordemNoticia =".$ordem;
$qr = mysql_query($sql);
$rs = mysql_fetch_object($qr);
$trocaId = $rs->idNoticia;

// Inserindo o novo valor da ordem
$novoValor = "UPDATE noticias SET ordemNoticia='$novaOrdem' WHERE idNoticia =".$id;
mysql_query($novoValor);

// Removendo valor duplicado
$atualizar = "UPDATE noticias SET ordemNoticia='$ordem' WHERE idNoticia =".$trocaId;
mysql_query($atualizar);

?>

 

Se quiserem ver o funcionamento podem acessar por este link.

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho duas sujestões pra você.

 

A primeira é você trabalhar com um sistema parecidos com destaque. Ex:

 

Tabela Noticias

ID

Titulo

Subtitulo

Texto

.........

 

Tabela destaque

ID

ID_noticia

 

 

 

Na hora de listar você só lista as noticias que estiverem cadastradas no destaque... Caso queira apagar um destaque você pode apagar sem q a noticia seja apagada.

 

 

 

 

--------------------------------------------------------------------------------------------------------

Segunda sujestão é trabalhar com datas. Exemplo de um order by data e sempre que quizer que uma noticia apareça antes das outras só de um update para a data atual.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.

 

Trabalho por ordem via id e data. Só que muitas vezes atualizamos sistema para o cliente e uma vez ou outra pedem para alterar ordem de exibição das noticias. Tendo isso automatizado não precisariamos alterar manualmente ou alterar data por data para ajustar da forma desejada.

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oque achou da primeira sujestão...Ela é bem mais dinâmica.

 

 

A primeira é você trabalhar com um sistema parecidos com destaque. Ex:

 

Tabela Noticias

ID

Titulo

Subtitulo

Texto

.........

 

Tabela destaque

ID

ID_noticia

 

 

 

Na hora de listar você só lista as noticias que estiverem cadastradas no destaque... Caso queira apagar um destaque você pode apagar sem q a noticia seja apagada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazendo por fora da tela de editar noticia ficaria bem mais fácil para o usuário, porque ele teria o visual de toda a ordem atual.

 

Bem pessoal...

 

Fiz umas mudanças aqui. Agora estou passando os parametros ao invés de fazer toda aquela mistura com PHP. Acho que ficou mais legivel o script só que ainda não está funcionando. Vejam:

 

input:

<input type="text" id="<?php echo $novoId; ?>" class="ordemNoticia" name="ordemNoticia" onBlur="alterarOrdem(<?php echo $novoId; ?>, this.value)" value="<?php echo $rs->ordemNoticia; ?>" />

 

script

<script type="text/javascript">
   function alterarOrdem(ordem, novoValor)
   {
           $.get("php/alterarOrdem.php?&ordemAtual=ordem&novaOrdem=novoValor");
   }   
</script>

 

alterarOrdem.php

<?php

// Conexão com banco
require_once 'mysql_connect.php';

// Recebe ID e a ordem atual das noticias
$ordem = $_GET['ordemAtual'];
$novaOrdem = $_GET['novaOrdem'];

// Inserindo o novo valor da ordem
$novoValor = "UPDATE noticias SET ordemNoticia='$novaOrdem' WHERE ordemNoticia =".$ordem;
mysql_query($novoValor);

?>

 

Obrigado pela atenção :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido.

 

O problema era a forma que estava escrevendo a chamada ajax. Ficou assim:

 

function alterarOrdem(id, novoValor)
{
   $.get("php/alterarOrdem.php?&idAtual=" + id + "&novaOrdem=" + novoValor);
}

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.