Foros del Web » Programando para Internet » Javascript »

Problema script drag and drop

Estas en el tema de Problema script drag and drop en el foro de Javascript en Foros del Web. Hola amigos, recurro a sus conocimientos para ver si me pueden ayudar a solucionar esto : Lo que pasa que tengo un drag and drop ...
  #1 (permalink)  
Antiguo 14/12/2015, 15:54
 
Fecha de Ingreso: noviembre-2015
Mensajes: 6
Antigüedad: 8 años, 5 meses
Puntos: 0
Problema script drag and drop

Hola amigos, recurro a sus conocimientos para ver si me pueden ayudar a solucionar esto :

Lo que pasa que tengo un drag and drop en javascript pero no sé como rescatar los datos que pasan a la "caja contenedor" como se ve en la foto ejemplo (que arrastré la caja2 y la caja3 y quedaron registrados en la "caja contenedor" pero como seria insertarlo en la base de datos?

desde ya muchas gracias.

  #2 (permalink)  
Antiguo 14/12/2015, 19:07
 
Fecha de Ingreso: diciembre-2015
Mensajes: 45
Antigüedad: 8 años, 4 meses
Puntos: 3
Respuesta: Problema script drag and drop

Que tal hermano, en la función llamada por el evento donde sueltas los objetos,obtienes el id o el nombre del elemento lo que necesites para validar la consulta en mi caso obtengo el id y ocupo var data=ev.dataTransfer.getData("text"); Despues mandas llamar a la función php de otro archivo php con la consulta mysql. Te dejo un ejemplo:

Pagina Principal

Código PHP:
<!DOCTYPE HTML>
<html>
<head>
<title>Arrastrar y soltar</title>
</head>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<style type="text/css">
/*estilo general: resetear*/
* { margin: 0 auto; padding: 0;  } 
/*estilo de contenedores*/
#cont0 { width: 90%; height: 300px;  }
#cont1 { width: 90%; height: 800px; background-color:lime; overflow: auto; }
#cont2 { width: 90%; height: 800px; background-color:skyblue; overflow: auto; }
</style>

<script type="text/javascript">
//Recoger elemento arrastrable//
function evdragstart(ev,el,val) { //ev= el evento, el=elemento arrastrado.
    cont1=el.parentNode; //guardamos el elemento padre del elemento en una variable.
    ev.dataTransfer.setData("text",ev.target.id);    //guardamos datos del elemento.
        $('html,body').animate/*scroll que se movera en tu caso a lo mejor es html,body*/({
        scrollTop: $("#aqui").offset().top/*Donde se movera*/
        // scrollTop: 0 para mover hasta arriba
    }, 2000/*tiempo que se movera en ml*/); 
}
//mientras se arrastra:
function evdragover (ev) { //ev=el evento.
    ev.preventDefault(); //quitar comportamiento por defecto.
}
//Al soltar el elemento arrastrado
function evdrop(ev,el) { //ev=el evento; el=receptor de soltado
    ev.stopPropagation(); //impedir otras acciones 
    ev.preventDefault(); //quitar comportamiento por defecto
    var data=ev.dataTransfer.getData("text"); //recogemos datos del elemento
    mielem=ev.target.appendChild(document.getElementById(data)); //obtenemos el elemento arrastrado
    cont1.appendChild(mielem); //ponemos el elemento arrastrado en el mismo sitio donde estaba.
    mielem2=mielem.cloneNode(true); //creamos una copia del elemento arrastrado.
    mielem2.setAttribute("draggable","false"); //impedimos que el nuevo elemento pueda volver a arrastrarse
    el.appendChild(mielem2); //colocamos la copia en el receptor de soltado
    $.ajax({
    type: "POST", //Se mandaran las variables por POST
    url: "funcion.php", //El nombre de la pagina con las funciones
    data: { nombre: data } //Los datos que se mandaran
    })

}
</script>

<body>
<div id="cont0">

<!--contenedor de salida-->
<div id="cont1" >
<!-- Cada elemento está dentro de un contenedor, (div o span), lo cual permitirá 
     recuperarlo en su sitio después de ser arrastrado.-->
<div><p draggable="true" ondragstart="evdragstart(event,this)" id="e1">Arrastrame</p></div>
<span><img src="../../objetos/espana.gif" alt="Caja1" 
     draggable="true" ondragstart="evdragstart(event,this)" id="e2"/></span>
<span><img src="../../objetos/europa.gif" alt="Caja2" 
     draggable="true" ondragstart="evdragstart(event,this)" id="e3"/></span>
<span><img src="../../objetos/italia.gif" alt="Caja3" 
     draggable="true" ondragstart="evdragstart(event,this)" id="e4"/></span>
</div> 

<!--receptor de soltado -->
<div id="cont2" ondragover="evdragover(event)" ondrop="evdrop(event,this)">
    <div id="aqui"></div><!--Aqui se movera el scroll-->
</div> 

<? echo "<img src=".$row['imagen'].">" ?>

</div>
</body>
funcion.php

Código PHP:
<?php
 
      $nom 
$_POST['nombre'];
       
      if(!empty(
$nom)) {
            
insertar($nom);
      }
       
      function 
insertar($nom) {
            
$con mysql_connect('localhost','user''pass');
            
mysql_select_db('prueba'$con);
       
            
mysql_query("INSERT INTO nombres (nombre) VALUES ('$nom')",$con);

      }
       
?>
Al momento que sueltes los objetos se registraran en la bd.

Perdón por el código lo reutilice para ponerlo de ejemplo. Saludos!!
  #3 (permalink)  
Antiguo 14/12/2015, 22:48
 
Fecha de Ingreso: noviembre-2015
Mensajes: 6
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Problema script drag and drop

Lo que pasa que esto es lo que tengo y este codigo tambien es copiado, pero es perfecto para lo que necesito, el problema es que nose como insertarlo en la base de datos eso es lo que me tiene aproblemado

ahi lo descargue es el "demo1" y he estado mucho rato y no se me ocurre como insertar

desde ya te agradezco por responder amigo.

"http://www.dhtmlgoodies.com/index.html?whichScript=drag-drop-custom"
  #4 (permalink)  
Antiguo 15/12/2015, 10:16
 
Fecha de Ingreso: diciembre-2015
Mensajes: 45
Antigüedad: 8 años, 4 meses
Puntos: 3
Respuesta: Problema script drag and drop

Hola hermano, perdón seré más especifico para que me entiendas, usaré el código de la página DEMO1 ya con las funciones para agregar a la base de datos:

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<
HTML>
<
HEAD>
    <
title>Demo 1Drag and drop</title>
    <
script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <link rel="stylesheet" href="css/demos.css" media="screen" type="text/css">
    <style type="text/css">
    /* CSS for the demo. CSS needed for the scripts are loaded dynamically by the scripts */

    
    #mainContainer{
        width:600px;
        margin:0 auto;
        margin-top:10px;
        border:1px double #000;
        padding:3px;

    }
    
    #leftColumn{
        width:300px;
        float:left;
        
    }
    #rightColumn{
        width:200px;
        float:right;
        margin:2px;
        height:450px;
    }    
    .dragableBox{
        width:100px;
        height:60px;
        border:1px solid #000;
        background-color:#FFF;        
        margin-bottom:5px;
        padding:10px;
        font-weight:bold;
        text-align:center;
    }
    .dropBox{
        width:190px;
        border:1px solid #000;
        background-color:#E2EBED;
        height:200px;
        overflow:auto;
        margin-bottom:10px;
        padding:3px;
    }        
        
    .clear{
        clear:both;
    }
    img{
        border:0px;
    }
    </style>    
    <script type="text/javascript" src="js/drag-drop-custom.js"></script>
</head>
<body>

    <div id="header"><a href="/index.html"><img src="/images/heading3.gif"></a></div>
    <div id="mainContainer">

        <h2>Drag and drop - demo 1</h2>
        <div id="leftColumn">
            <div class="dragableBox" id="box1">CAT</div>
            <div class="dragableBox" id="box2">DOG</div>
            <div class="dragableBox" id="box3">HORSE</div>
            <div class="dragableBox" id="box4">TIGER</div>
        </div>
            <div id="rightColumn">
            <div id="dropBox" class="dropBox">
                <p><b>Drop some boxes on me</b></p>
                <div id="dropContent"></div>        
            </div>
            <div id="dropBox2" class="dropBox">
                <p><b>Drop some boxes on me too</b></p>
                <div id="dropContent2"></div>
            </div>
        </div>
        <div class="clear"></div>
        <div class="konaBody"></div>
    </div>

<div id="debug"></div>
<script type="text/javascript">

// Custom drop actions for <div id="dropBox">
function dropItems(idOfDraggedItem,targetId,x,y)
{
    var html = document.getElementById('dropContent').innerHTML;
    if(html.length>0)html = html + '<br>';
    html = html + 'Item with id="' + idOfDraggedItem+'" dropped';
    document.getElementById('dropContent').innerHTML = html;
    $.ajax({
    type: "POST", //Se mandaran las variables por POST
    url: "funcion.php", //El nombre de la pagina con las funciones
    data: { nombre: idOfDraggedItem } //Los datos que se mandaran
    });
}

// Custom drop actions for <div id="dropBox2">

function dropItems2(idOfDraggedItem,targetId,x,y)
{
    var html = document.getElementById('dropContent2').innerHTML;
    if(html.length>0)html = html + '<br>';
    html = html + 'Item "' + document.getElementById(idOfDraggedItem).innerHTML + '" dropped';
    document.getElementById('dropContent2').innerHTML = html;
    $.ajax({
    type: "POST", //Se mandaran las variables por POST
    url: "funcion.php", //El nombre de la pagina con las funciones
    data: { nombre: idOfDraggedItem } //Los datos que se mandaran
    });
}

var dragDropObj = new DHTMLgoodies_dragDrop();
dragDropObj.addSource('box1',true);    // Make <div id="box1"> dragable. slide item back into original position after drop
dragDropObj.addSource('box2',true);    // Make <div id="box2"> dragable. slide item back into original position after drop
dragDropObj.addSource('box3',true);    // Make <div id="box3"> dragable. slide item back into original position after drop
dragDropObj.addSource('box4',true);    // Make <div id="box4"> dragable. slide item back into original position after drop
dragDropObj.addTarget('dropBox','dropItems');    // Set <div id="dropBox"> as a drop target. Call function dropItems on drop
dragDropObj.addTarget('dropBox2','dropItems2');    // Set <div id="dropBox2"> as a drop target. Call function dropItems2 on drop
dragDropObj.init();
</script>


</body>
</html> 
Archivo funcion.php: Sirve para agregar en la base de datos en mi caso toma la variable post toma id de la caja, el archivo lo deje en la raíz:

Código PHP:
<?php
 
      $nom 
$_POST['nombre'];
       
      if(!empty(
$nom)) {
            
insertar($nom);
      }
       
      function 
insertar($nom) {
            
$con mysql_connect('localhost','user''pass');
            
mysql_select_db('prueba'$con);
       
            
mysql_query("INSERT INTO nombres (nombre) VALUES ('$nom')",$con);

      }
       
?>
Una recomendación es que no uses códigos ajenos, ni librerías, si apenas te estas familiarizando con la programación web o si no son necesarias, ya que contienen mucho código a veces necesario para lo que queremos hacer. Y si los usas intenta entender su funcionalidad, no hay problema si no le entiendes a la primera, tu sigue intentando y veras como un día por arte de magia le entiendes.

Determinación en todo lo que hagas hermano!!

Etiquetas: drag, drop
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:53.