Autor Tema: [Ayuda] Drag & Drop y PHP  (Leído 1481 veces)

Desconectado marco811

  • PHPero Avanzado
  • ****
  • Mensajes: 306
  • Karma: 16
  • Sexo: Masculino
  • ¡¡Hola mundo!!
    • Ver Perfil
    • Personalidad Web
Re:[Ayuda] Drag & Drop y PHP
« Respuesta #15 en: 30 de Abril de 2010, 23:28:56 pm »
Listo  :) Al pulsar el boton enviar del formulario, se envian dos campos ocultos "top" y "left" :P mediante POST. Solamente hace eso, lo de guardarlos en una base de datos te encargas tu y lo de extraerlos tambien  :D

<meta http-equiv="Content-Language" content="es">
<
script type="text/javascript" src="wz_dragdrop.js"></script>
<body>
<?php
if ($_POST[&#39;s&#39;])
{
?>

<?php
$_SESSION
[&#39;left&#39;] = "<script>document.getElementById(&#39;nota_1&#39;).offsetLeft</script>";
$_SESSION[&#39;top&#39;] = "<script>document.getElementById(&#39;nota_1&#39;).offsetTop</script>";
?>
<div onMouseOver="alert(this.style.top.value);" id="nota_1" style="position:absolute; left:<?php echo $_SESSION[&#39;left&#39;]; ?>; top:<?php echo $_SESSION[&#39;top&#39;]; ?>; width:434; height:42;">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="256" height="61">
  <tr>
    <td width="256" height="22">
    <img border="0" src="barra_azul.png" width="434" height="22"></td>
  </tr>
  <tr>
    <td width="256" background="fondo_azul.png" height="16">
    <p align="center"><font face="Verdana" size="2">Hola PHPeros</font></td>
  </tr>
  <tr>
    <td width="256" background="barra_azul2.png" height="22">&nbsp;
    </td>
  </tr>
</table>
</div>
<?php
} else {
?>
<div onMouseover="document.guardar.top.value=this.style.top;document.guardar.left.value=this.style.left;" id="nota_1" style="position:absolute; left:100; top:99; width:434; height:42">
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="256" height="61">
  <tr>
    <td width="256" height="22">
    <img border="0" src="barra_azul.png" width="434" height="22"></td>
  </tr>
  <tr>
    <td width="256" background="fondo_azul.png" height="16">
    <p align="center"><font face="Verdana" size="2">Hola PHPeros</font></td>
  </tr>
  <tr>
    <td width="256" background="barra_azul2.png" height="22">&nbsp;
    </td>
  </tr>
</table>
</div>
<?php
}
?>
<form name="guardar" method="post">
<input name="s" type="submit">
<input name="top" type="hidden" value="0">
<input name="left" type="hidden" value="0">
</form>
</body>
<script type="text/javascript">SET_DHTML("nota_1");</script>

Comunidad PHPeros

Re:[Ayuda] Drag & Drop y PHP
« Respuesta #15 en: 30 de Abril de 2010, 23:28:56 pm »

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] Drag & Drop y PHP
« Respuesta #16 en: 01 de Mayo de 2010, 00:10:49 am »
Creo que no son necesarios los formularios. No he mirado el drag&drop que utilizas, pero por seguro deberás usar un onmouseout y un onmouseup para que cuando el cursor se quite del elemento, se "desactive" el drag.

Según creo yo, deberias añadir una función, algo así:
Código: [Seleccionar]
<div id="elemento_23" onmouseout="acabardrag();ACTUALIZARDB(this.offsetTop, this.offsetLeft, this.id);" onmouseup="acabardrag();ACTUALIZARDB(this.offsetTop, this.offsetLeft, this.id);">
En la función ACTUALIZARDB deberías usar AJAX. AJAX es siempre igual, por lo que mirando un código cualquiera podemos sacar qué poner.
Código: [Seleccionar]
<script type="text/javascript">
// Aquí una función que inicie el AJAX, no la pongo para que no quede muy largo, pero en el foro de AJAX la podrás encontrar
var ajax = new Ajax(); // Cambiar lo de Ajax(); pr el nombre de la funciónde arriba.

function ACTUALIZARDB(top, left, id) {
ajax.open('GET', 'actualizardb.php?top=' + top + '&left=' + left + '&id=' + id, true);
ajax.send(null);
}
no hay comprobaciones sobre si todo fue bien y tal, porque imagino que cada vez que el usuario mueva algo no querrás que ponga "Movido/No movido"...

Hay que explicar ajax.open(METODO, URL, ASINCRONICA);
El metodo es GET o POST, si se usa POST hay que enviar variables con ajax.send, pero al usar GET en ajax.send simplemente enviamos null.
La URL corresponde al archivo PHP que hará la consulta a la base de datos, al que enviamos por GET los datos recogidos, la ID del elemento (para especificar qué actualizar, por supuesto se puede quitar o modificar según necesites) y los offset, que son la posición.

Lo de ASINCRONICA, quiere decir si la petición se procesará de forma asincronica o no,  si es se procesa según llega, aunque llege una consulta que se hizo después de otra; para usar esto se usa "true"; pero si quieres que sea ordenadamente deberás poner "false" (no te lo recomiendo, pues si una se "queda pillada" el resto, en teoría, tambien)

Desconectado marco811

  • PHPero Avanzado
  • ****
  • Mensajes: 306
  • Karma: 16
  • Sexo: Masculino
  • ¡¡Hola mundo!!
    • Ver Perfil
    • Personalidad Web
Re:[Ayuda] Drag & Drop y PHP
« Respuesta #17 en: 06 de Mayo de 2010, 09:44:35 am »
javipilo, lo has probado? te funciona?  :)

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:[Ayuda] Drag & Drop y PHP
« Respuesta #18 en: 06 de Mayo de 2010, 11:29:45 am »
Lo solucioné  con unas homes ya existentes que tenian un js y ajax...

Saludos

Desconectado marco811

  • PHPero Avanzado
  • ****
  • Mensajes: 306
  • Karma: 16
  • Sexo: Masculino
  • ¡¡Hola mundo!!
    • Ver Perfil
    • Personalidad Web
Re:[Ayuda] Drag & Drop y PHP
« Respuesta #19 en: 06 de Mayo de 2010, 12:01:33 pm »
Ok, entonces ya podeis cerrar el tema  :D