Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
Carregando comentários...