Ir para conteúdo
Fórum Script Brasil
  • 0

Alterar a ordem exibição - gerenciador de conteúdo


rafascarvalho

Pergunta

Boa tarde pessoal,

Sou iniciante, porém com muito esforço fiz um sistema para meu cliente ADM o conteudo do site, está tudo redondo, porém ele pediu que pudesse alterar a ordem dos itens de uma página.

Exemplo: na página "parceiros", há o cadastro de vários itens, porém em determinado momento ele pode querer dar maior ênfase em um determinado parceiro, por isso ele deve aparecer um primeiro, e outro deve aparecer em 5º, assim por diante.

Criei, e na tabela uma coluna chamada "ordem" na qual enumerei as linhas conforme ele pediu e dei um ORDER BY nela, porém quando for editar este campo preciso que ao alterar o valor dessa coluna de 4 para 1, automaticamente o campo que antes era 1, vire 2, o 2 vire 3, assim por diante.

Ainda estou quebrando a cabeça.

Por enquanto cheguei nesse resultado:

if(!empty($_GET['ChangeOrder'])){
        $query = mysql_query("SELECT * FROM bar_restaurante WHERE id = '".$_GET['ChangeOrder']."' ORDER BY ordem ASC LIMIT 1") or die(mysql_error());
                if(mysql_num_rows($query) > 0){
                        while($assoc = mysql_fetch_assoc($query)){
                                $id = $_GET['ChangeOrder'];
                                $ordem = $assoc['ordem'];
                                if($operacao == "subir"){
                                        $numero = -1;
                                                if($ordem > 1){
                                                        $novaordem = $ordem + $numero;} else {
                                                        $novaordem = $ordem; }
                                        } else {
                                        $numero = 1;
                                                if($ordem == 1){
                                                        $novaordem = $ordem + $numero;} else {
                                                        $novaordem = $ordem; }
                                        }
                                
        $msg = "<p align=\"center\">A ordem de ".$assoc['titulo']." foi definida como ".$novaordem."</p>";
}}
 } else { 
        $msg = "Erro ao alterar a ordem<br><br>";
 }

echo $msg;
?>

Por enquanto esta dando certo.

Eu fazendo o seguinte, passo a passo...rs..

Consegui mudar o item, porém não faço ideia de como alterar todos os itens.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Boa tarde pessoal,

Sou iniciante, porém com muito esforço fiz um sistema para meu cliente ADM o conteudo do site, está tudo redondo, porém ele pediu que pudesse alterar a ordem dos itens de uma página.

Exemplo: na página "parceiros", há o cadastro de vários itens, porém em determinado momento ele pode querer dar maior ênfase em um determinado parceiro, por isso ele deve aparecer um primeiro, e outro deve aparecer em 5º, assim por diante.

Criei, e na tabela uma coluna chamada "ordem" na qual enumerei as linhas conforme ele pediu e dei um ORDER BY nela, porém quando for editar este campo preciso que ao alterar o valor dessa coluna de 4 para 1, automaticamente o campo que antes era 1, vire 2, o 2 vire 3, assim por diante.

Ainda estou quebrando a cabeça.

Por enquanto cheguei nesse resultado:

if(!empty($_GET['ChangeOrder'])){
        $query = mysql_query("SELECT * FROM bar_restaurante WHERE id = '".$_GET['ChangeOrder']."' ORDER BY ordem ASC LIMIT 1") or die(mysql_error());
                if(mysql_num_rows($query) > 0){
                        while($assoc = mysql_fetch_assoc($query)){
                                $id = $_GET['ChangeOrder'];
                                $ordem = $assoc['ordem'];
                                if($operacao == "subir"){
                                        $numero = -1;
                                                if($ordem > 1){
                                                        $novaordem = $ordem + $numero;} else {
                                                        $novaordem = $ordem; }
                                        } else {
                                        $numero = 1;
                                                if($ordem == 1){
                                                        $novaordem = $ordem + $numero;} else {
                                                        $novaordem = $ordem; }
                                        }
                                
        $msg = "<p align=\"center\">A ordem de ".$assoc['titulo']." foi definida como ".$novaordem."</p>";
}}
} else { 
        $msg = "Erro ao alterar a ordem<br><br>";
}

echo $msg;
?>

Por enquanto esta dando certo.

Eu fazendo o seguinte, passo a passo...rs..

Consegui mudar o item, porém não faço ideia de como alterar todos os itens.

para altera a orden do atual para 4 você deve mudar o codigo que faz a edição o codigo mostrado faz a seleção dos dados

basta você inser o campo e valor

ex

$sql="update tabela set campo='4' where blablabla"

onde o principal no seu caso é inserir o campo='4'

outra dica

FROM bar_restaurante WHERE id = '".$_GET['ChangeOrder']."

inserindo dados capturados de url sem verificação adequada podera sofre sql_injection até mais

Link para o comentário
Compartilhar em outros sites

  • 0

Sobre o UPDATE não tem problemas.

A questão é que se eu fazer o UPDATE na forma que esta o código, eu terei dois ID com o campo=4.

Eu precisaria fazer com que o campo que tivesse 4 virasse 5, 5 virasse 6, e assim como se fosse uma cadeia.

Sobre o sql_injection não conehço sobre isso, vou dar uma pesquisada.

Agradeço pela ajuda!

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal,

Agora deu certo.

Para finalizar o tópico:

Código que executa a troca:

(...)
} elseif(!empty($_GET['ChangeOrderUp'])){
        $query = mysql_query("SELECT * FROM bar_restaurante_teste WHERE id = '".$_GET['ChangeOrderUp']."'") or die(mysql_error());
        if(mysql_num_rows($query) > 0){
        while($assoc = mysql_fetch_assoc($query)){

        $id = $_GET['ChangeOrderUp'];
        $ordem = $assoc['ordem'];
        $novaordem = $ordem - 1;        
        
        mysql_query("UPDATE bar_restaurante_teste SET ordem = ordem+1 WHERE ordem = '".$novaordem."'");
        mysql_query("UPDATE bar_restaurante_teste SET ordem = '".$novaordem."' WHERE id = '".$id."'");
                                
        $msg = "<p align=\"center\">A ordem de ".$assoc['titulo']." foi definida como ".$novaordem."</p>";
}
} else { 
        $msg = "Erro ao alterar a ordem<br><br>";
}        
} elseif(!empty($_GET['ChangeOrderDown'])){
        $query = mysql_query("SELECT * FROM bar_restaurante_teste WHERE id = '".$_GET['ChangeOrderDown']."'") or die(mysql_error());
        if(mysql_num_rows($query) > 0){
        while($assoc = mysql_fetch_assoc($query)){
        
        $id = $_GET['ChangeOrderDown'];
        $ordem = $assoc['ordem'];
        $novaordem = $ordem + 1;        
        
        mysql_query("UPDATE bar_restaurante_teste SET ordem = ordem-1 WHERE ordem = '".$novaordem."'");
        mysql_query("UPDATE bar_restaurante_teste SET ordem = '".$novaordem."' WHERE id = '".$id."'");
                                
        $msg = "<p align=\"center\">A ordem de ".$assoc['titulo']." foi definida como ".$novaordem."</p>";
}
} else { 
        $msg = "Erro ao alterar a ordem<br><br>";
 }
E o código que chamar a ação ficou assim:
<td><center>
        <?php
                if($assoc['ordem']>1){
                ?>
        <a href="?ChangeOrderUp=<?php echo $assoc['id'];?>"><img src="img/subir.gif" width="8" height="6" alt="Subir" /></a>
        <?php } else { 
                echo "<img src=\"../imagens/blank.gif\" width=\"8\" height=\"6\" />"; 
                } 
        ?>
        <?php echo $assoc['ordem'];?> 
        <?php
                $sql0 = mysql_query("SELECT * FROM bar_restaurante_teste ORDER BY ordem DESC LIMIT 1");
                $result = mysql_fetch_assoc($sql0);
                $ultimo = $result['ordem'];
                
                if($assoc['ordem']!=$ultimo){
                ?>
    <a href="?ChangeOrderDown=<?php echo $assoc['id'];?>"><img src="img/descer.gif" width="8" height="6" alt="Descer" /></a>
    <?php } else { 
                echo "<img src=\"../imagens/blank.gif\" width=\"8\" height=\"6\" />"; 
                } 
        ?>
  </center></td>

Caso alguém tenha algo para acrescentar (ou melhorar a lógica do código), peço que poste.

Caso contrário, pode colocar como resolvido.

Agradeço a ajuda de todos!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,6k
×
×
  • Criar Novo...