Jump to content
sacjamm

Salvar dados no banco de dados com Drag & Drop

Recommended Posts

Olá pessoal, estou tendo alguns problemas para inserir uma ordenação no banco de dados, estou utilizando um sistema de drag e drop, que baixei na net.

E o sistema funciona exatamente como eu preciso e quero. Só que eu estou com um problema, para ser resolvido, que é salvar a ordem do sistema de drag e drop no banco de dados.

A ideia é o seguinte, o cliente quer um sistema de galerias que arraste as fotos da galeria, de modo que fique na ordem que ele determinou, o drag & drop já faz isso. Já consigo recuperar o ID, de cada imagem. Agora tudo que eu preciso é determinar um valor tipo fazer a contagem de 1 até a quantidade de imagens, tipo: se tiver 10 imagens e o cliente fez a ordenação. eu preciso listar os numeros de 1 a 10, e salvar esses numeros na tabela, no campo ordem, pra que quando eu listar as imagens no site eu ordene exatamente pela ordem.

 

Não sei se conseguiram entender, mais vou mostrar o trecho do meu código.

 

<div id="redips-drag">
                        <?php
                        $order = filter_input_array(INPUT_POST, FILTER_DEFAULT);
                        if (isset($order['SelectOrdem']) AND $order['SelectOrdem'] == 'Salvar Ordem'):
                            unset($order['SelectOrdem']);
                        
                        endif;
                        ?>
                        <form action="" method="post">
                            <table style='width:100%;'>
                                <colgroup>
                                    <col width="250"/>
                                    <col width="250"/>
                                    <col width="250"/>
                                    <col width="250"/>
                                </colgroup>
                                <tbody>
                                    <tr>
                                        <?php
                                        $gbi = 0;
                                        $Gallery = new Read;
                                        $Check = new Check;
                                        $Gallery->ExeRead("ws_posts_gallery", "WHERE post_id = :post", "post={$postid}");
                                        if ($Gallery->getResult()):

                                            $LoopHorizontal = 4;
                                            $i = 1;

                                            foreach ($Gallery->getResult() as $gb):
                                                if ($i < $LoopHorizontal):
                                                    $gbi++;
                                                    ?>

                                                    <td
                                                        <div class="redips-drag">
                                                            <input type="text" name="ordem[]" value="<?= $gbi; ?>">
                                                            <input type="text" name="id[]" value="<?= $gb->gallery_id; ?>">
                                                            <?= $Check->Image('../uploads/' . $gb->gallery_image, $gbi, 146, 100); ?><br>
                                                            <a href="painel.php?exe=produtos/update&postid=<?= $postid; ?>&gbdel=<?= $gb->gallery_id; ?>#gbfoco" class="del btn btn-danger">Deletar</a>
                                                        </div>
                                                    </td>

                                                <?php elseif ($i = $LoopHorizontal):
                                                    ?>

                                                    <td>
                                                        <div class="redips-drag">
                                                            <input type="text" name="ordem[]" value="<?= $gbi; ?>">
                                                            <input type="text" name="id[]" value="<?= $gb->gallery_id; ?>">
                                                            <?= $Check->Image('../uploads/' . $gb->gallery_image, $gbi, 146, 100); ?><br>
                                                            <a href="painel.php?exe=produtos/update&postid=<?= $postid; ?>&gbdel=<?= $gb->gallery_id; ?>#gbfoco" class="del btn btn-danger">Deletar</a>
                                                        </div>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <?php
                                                    $i = 0;
                                                endif;
                                                $i++;
                                            endforeach;
                                        endif;
                                        ?>
                                    </tr>
                                </tbody>
                            </table>
                            <div class="form-actions">

                                <input type="submit" class="btn btn-primary green" value="Salvar Ordem" name="SelectOrdem" />
                            </div>
                        </form>
                    </div>

Eu não sei pessoal, se eu fiz isso aí da forma correta, tipo envolvi a tabela do drag & drop em um form, para tentar recuperar os valores, mais sem sucesso.  Se alguém puder ajudar com este problema, eu fico muito grato!

 

 

 

 

Share this post


Link to post
Share on other sites

o campo ordem[] não vai te ajudar.

 

você tem que inserir a ordem depois no php, quando estiver recebendo os dados.

Ex:

$i = 0;
foreach($_POST['id'] as $id) {
  echo $id, ' --- ', $i;
  $i++;
}

vou mover teu tópico para php.

  • +1 1

Share this post


Link to post
Share on other sites

Criei um sistema parecido, mas ao invés de imagens, eu ordenava os links do menu, a ideia é a seguinte:

$order = 'id1, id2, id3, id4';
$order = explode(',', $order);

$a = 1;
for($i = 0; $i < count($order); $i++){
	$ordem = $a++;
	$update = $this->update(array('ordem' => $ordem), array('id' => $order[$i]));
}

 

  • +1 1

Share this post


Link to post
Share on other sites
Citar

que é salvar a ordem do sistema de drag e drop no banco de dados.
A ideia é o seguinte, o cliente quer um sistema de galerias que arraste as fotos da galeria, de modo que fique na ordem que ele determinou, o drag & drop já faz isso. 

Eu normalmente faço um prototipo qnd acho q o desafio é muito grande para inserir direto no projeto.

 

 

Basicamente as tarefas:

- Arraste as fotos da galeria (drag ta rolando já correto)? (Enviado tudo certinho via Ajax ou Post com a numeração)
- Ordem (envolve um campo 'ordem' no banco)
- *Salvar o campo ordem. (a cada alteração por exemplo)

 

 

Da uma lida nisso:

http://pt.stackoverflow.com/questions/46044/passar-variavel-com-varios-input-select

Que talvez o exemplo do William vai fazer mais sentido.

 

 

Por exemplo se você tiver uma lista:

<input name="itens[]" value="498498" type="text" /><br>
<input name="itens[]" value="98484" type="text" /><br>
<input name="itens[]" value="1212" type="text" /><br>
<input name="itens[]" value="51588" type="text" /><br>

No php você vai/deveria receber um POST assim:


'itens' => 
    array (size=4)
      0 => string '498498' (length=5)
      1 => string '98484' (length=5)
      2 => string '1212' (length=5)
      3 => string '51588' (length=5)

 

 

 

 

 

 

 

  • +1 1

Share this post


Link to post
Share on other sites

Olá pessoal, consegui, peço muito obrigado a ajuda de vocês, se não fosse as suas ajudas, eu acho que iria ficar quebrando cabeça achando que era bicho de sete cabeças. Olha o que eu simplesmente fiz, não alterei quase nada no formulário, apenas tirei o campo oculto de ordem, como o Bruno recomendou, e fiz isso:

 

foreach ($order['id'] as $key => $value):
    $ordem['ordem'] = $key;
    $id_ordem = $order['id'][$key];                                
    $Update = new Update;
    $Update->ExeUpdate("ws_posts_gallery", $ordem, "WHERE gallery_id = :id", "id={$id_ordem}");                            
endforeach;

Fico grato e feliz por todos vocês terem me formado a lógica adequada, para esse "problema".

 

Abraços!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By rafaelmoreira78
      Boa tarde!
      Estou querendo fazer um select a partir da seleção de um combobox. Nesse combobox o usuário escolhe o tipo de busca que ele quer. Se é por nome, por id, por data etc. E depois, exibe os dados nos campos. Porém, não estou conseguindo e não sei como resolver isso.
      public void consultar(){ String sql ="select * from tbcertificados where ?=?"; try{ pst=conexao.prepareStatement(sql); pst.setString(1,cbConsulta.getSelectedItem().toString()); pst.setString(2,txtBusca.getText()); rs=pst.executeQuery(); if (rs.next()){ lblID.setText(rs.getString(1)); txtNome.setText(rs.getString(2)); comboCursos.setSelectedItem(rs.getString(3)); txtData.setText(rs.getString(4)); txtCH.setText(rs.getString(5)); txtEmpresa.setText(rs.getString(6)); txtObs.setText(rs.getString(7)); }  
    • By danilo759
      Tenho uma tabelinha de programas para uma rádio... está da seguinte forma.

      titulo
      data (YYYY-MM-DD)
      hora (00:00:00)

      Minha consulta, mas não retorna o programa da hora corrente. O que eu fiz de errado?
      SELECT * FROM programas WHERE data = CURDATE() AND hora = CURTIME() LIMIT 1
    • By Ro_JnR
      Estou tentando a semanas resolver um problema, consumir uma API e verificar se o campo no banco está vazio, se estiver faz insert se não faz update.
      Até aí tudo bem, agora não consigo passar do meu select para o banco, ele da erro.
       
      Segue o código:
       
      <?php

          require_once("db.class.php");
          
          $url = "https://servicodados.ibge.gov.br/api/v1/localidades/distritos";
              $ch = curl_init($url);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
              $resultado = json_decode(curl_exec($ch));
              foreach ($resultado as $cidades) {
                  $nome = $cidades->nome;
                  $stmt = $conn->prepare("SELECT name FROM cidades WHERE name=?");
                  $stmt->bind_Param(':name', $nome);
                  $stmt->execute();
                  $stmt->bind_result($resultSelect);
                  $stmt->fetch();
                  if(!$stmt->execute()){
                      print_r($stmt->errorInfo());
                  }
              } 

      ?>
       
      Código do banco:
       
      $conn = new PDO("mysql:host=localhost;dbname=exercicio", "root", "");
      //"sqlsrv:Database=dbphp7;server=localhost\SQLEXPRESS;ConnectionPooling=0", "sa", "root");
      $stmt = $conn->prepare("SELECT * FROM cidades ORDER BY nome");
      $stmt->execute();
      //fetchALL basicamente faço while do mysqli
      $results = $stmt->fetchALL(PDO::FETCH_ASSOC);
       
      Print do erro:

       
      Tenho um outro exercicio que fiz bem parecido, consumi a API de estados e inseri no banco de dados, esse funcionou normalmente.
      Alguém poderia me dar uma luz, não sei mais o que fazer.
      Era para ser simples rsrsrrs.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.