memorizzazione degli elementi

  • Creatore Discussione Creatore Discussione zighy
  • Data di inizio Data di inizio

zighy

Utente Attivo
20 Gen 2012
96
0
0
Ciao ragazzi,
vengo subito al problema,ho una pagina con un javascript che mi permette di fare drag & drop con degli elementi solo che quando aggiorno la pagina questi elementi ritornano nella loro posizione iniziale e non dove li ho lasciati.
Avrei bisogno di poter memorizzare queste posizioni,magari con un pulsante ,ma anche di poter modificarle nuovamente in futuro se volessi.E' possibile una cosa del genere?
Posto la pagina:

HTML:
<head>
 <style type="text/css"> .dragme{position:relative;cursor: pointer; cursor:hand}</style>

 <script type="text/javascript">
 var ie=document.all;
 var nn6=document.getElementById&&!document.all;
 var isdrag=false;
 var x,y;
 var dobj;

 function movemouse(e){
 if (isdrag){
 dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x;
 dobj.style.top = nn6 ? ty + e.clientY - y : ty + event.clientY - y;
 return false;
 }
 }

 function selectmouse(e){
 var fobj = nn6 ? e.target : event.srcElement;
 var topelement = nn6 ? "HTML" : "BODY";
 while (fobj.tagName != topelement && fobj.className != "dragme"){
 fobj = nn6 ? fobj.parentNode : fobj.parentElement; }
 if (fobj.className=="dragme"){
 isdrag = true;
 dobj = fobj;
 tx = parseInt(dobj.style.left+0);
 ty = parseInt(dobj.style.top+0);
 x = nn6 ? e.clientX : event.clientX;
 y = nn6 ? e.clientY : event.clientY;
 document.onmousemove=movemouse;
 return false;
 }
 }

 document.onmousedown=selectmouse;
 document.onmouseup=new Function("isdrag=false");

 </script>
 <script>

 import com.sun.image.codec.jpeg.JPEGCodec;
 import com.sun.image.codec.jpeg.JPEGImageEncoder;
 import java.awt.Component;
 import java.awt.Dimension;
 import java.awt.image.BufferedImage;
 import java.io.*;
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
 import java.awt.image.*;
 import javax.swing.*;
 
public class cattura
 {
 
public static void main(String[] args)
 { 
GraphicsEnvironment environment =
 GraphicsEnvironment.getLocalGraphicsEnvironment();
 GraphicsDevice screen = environment.getDefaultScreenDevice();
 try {
 Robot robot = new Robot(screen);
 run(robot);
 }
 catch (AWTException exception){}
 }
 
public static void run(Robot robot)
 {
 robot.delay(2000);
 BufferedImage image = robot.createScreenCapture(new Rectangle(0, 0, 800, 600));
 ImageF frame = new ImageF(image);
 frame.show();
 }
 
}
 
class ImageF extends JFrame
 {
 public ImageF(Image image)
 {
 setTitle("Cattura");
 setSize(800,600);
 
Container contentPane = getContentPane();
 JLabel label = new JLabel(new ImageIcon(image));
 contentPane.add(label);
 label.setSize(800,600);
 
saveComponentAsJPEG(label,"a.jpg");
 }
 
public static void saveComponentAsJPEG(Component myComponent, String filename)
 {
 BufferedImage myImage;
 Dimension size = myComponent.getSize();
 myImage = new BufferedImage(size.width, size.height,BufferedImage.TYPE_INT_RGB);
 java.awt.Graphics2D g2 = myImage.createGraphics();
 myComponent.paint(g2);
 try{
 OutputStream out = new FileOutputStream(filename);
 JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
 encoder.encode(myImage);
 out.close();
 }
 catch(Exception e){
 System.out.println(e);
 }
 }
 }
 
</script>

 
<body bgcolor="#000000">

 
<div align="center">
 <table border="0" cellspacing="0" width="100%" cellpadding="0" id="table1" height="662">
 <tr>
 <td width="50%">

 <div align="center" class="dragme"><font face="Bodoni MT Black" color="#FFFF00" size="2">elemento 1</font></div>
 <div align="center" class="dragme"><font face="Bodoni MT Black" color="#FFFF00" size="2">elemento 2</font></div>
 <div align="center" class="dragme"><font face="Bodoni MT Black" color="#FFFF00" size="2">elemento 3</font></div>
 </td>
 </tr></table>
 </div>
 </body>
 
Ultima modifica di un moderatore:
ciao
mi sembra che questo sia un post più adatto alla sezione js che alla php.
poi: racchiudete sempre il codice tra gli appositi tag (sulla barra di formattazione ultime 3 iconcine in basso a sx) è più leggibile
 
il codice per il drag è in java ma per la memorizzazione volevo usare php...se qualcuno mi puo'aiutare
 
ciao
scusa non avevo letto bene.
comunque credo che sia un po' difficile in quanto js è lato client e php lato server.
mentre puoi comunicare variabili da php a js (es scrivendo nel js var pinco=<?php echo $variabile; ?>; ) non puoi fare il contrario, cioè tramettere il valore di una variabile da js a php.
non so se con js puoi aprire/leggere/scrivere su una tabella db come mysql, se possibile forse questa è la soluzione
questo salvo che qualcuno più esperto do me abbia qualche soluzione
 
ciao
googlando (javascript e mysql) ho trovato questo, se puù esserti utile:

c'è un modo per interrogare un database MySQL da Javascript?
No, dal momento che Javascript non puo' aprire socket.

Puoi invece usare Javascript per interrogare un'applicazione web in
esecuzione sul server ed estrarne dati: cerca XMLHttpRequest
 
Sì, la cosa si chiama anche AJAX. :D
Il problema è che così chiunque può effettuare una richiesta "manuale" alla pagina che salva gli elementi. Non so se questo nel tuo caso possa portare problemi/rischi alla sicurezza.
 
Sapevo gia'che con java non posso interagire con Mysql ,per questo mi ero buttato su PHP,mi servirebbe tipo un pulsante che memorizzi su databese le posizioni dei vari <div> per poi restituirle magari anche in un altra pagina (sempre in php).Ovviamente se nella pagina A (quella con il drag) poi muovo i vari elementi e li ''salvo'' di nuovo con il pulsante i vecchi dati nel database devono venire sovrascritti...è un po contorto forse :mexican:

Ho visto ora l'altro post.Il problema non sussiste perchè per accedere alla famigerata pagina A si deve passare un login quindi a modificare le posizioni sarebbe sempre lo stesso utente quello che cambia è il risultato ma che viene solo visualizzato sulla pagine degli altri utenti
 
Ultima modifica:
ciao
scusa, ma non ho capito o ho capito male.
ma le coordinate X e Y del div (draggato o meno) come vengono determinate?
se per draggare l'utente sposta il div col mouse, le variabili sono lato client (lette/elaborate da uno script lato client) per cui non puoi passarle lato server dove opera php.
se le coordinate iniziali sono funzione del log, puoi passarle a php e quindi determinare la posizione iniziale del div, ma quelle dello spostamento no, salvo credo, come dice il sommo, tramite ajax.
forse, ma qui alex può smentirmi, puo fare delle freccette (link) dx/sx/su/giu che, tramite get +ajax per non ricaricare la pagina, spostano il div, se possibile farlo a quel punto puoi salvare, o su mysql o passarle in sessione o cookie, le variabili deteminate dai get (se isset $_GET['dx'] allora $X_iniziale++)

credo, ma può darsi che sbagli, che il fatto che l'utente sia loggato non c'entri nulla
 
aspetta.... aspetta....

prova questo... e vedi se ti funziona :book:

http://max400scuola.altervista.org/aaa/a-php/gatto-posizione.html

provate anche voi... specie con altri browser a differenza di Firefox

esperimento Flash & PHP

Istruzioni:
Trascinante l'astronave "il gattaccio" in un punto qualsiasi
poi chiudete la pagina e la riaprite di nuovo (oppure ricarica la pagina)
dopo 3 secondi l'astronave si posizione nel punto in cui l'hai trascinato.
 
Ultima modifica:
Ciao Alessandro,

quali sono questi "dispositivi" che intendi tu? In italia Flash funziona soltanto all'estero non và!

L'oggetto in questione può muoversi anche inviando le variabili da uno stupido form html
si potrebbe fare anche in javascript ma l'invio e la ricezione delle variabili avviente tramite stringa per poi essere splittata da un altra pagina che legge le variabili e memorizza la pasione dell'oggetto da una pagina dinamica ma sarebbe alquanto, macchinoso.... troppi passaggi da eseguire.

Comunque ho visto che funziona... ieri sera avevo posizionato l'astronave "il gattaccio" nell'orbita del pianeta blu (la terra) e adesso l'ho vista da un altra parte, vicino anzi poco distante dal pianeta rosso (marte)


PS: Il gatto da credenza quello che fa pensa!
 
Un esempio di piattaforma su cui non funziona Flash? iOS. Javascript è supportato nativamente da tutti i browser, quindi perché dovremmo rinunciarci? E l'operazione di invio/ricezione di variabili non avviene tramite stringa. L'invio lo si esegue sotto forma di richiesta POST, quindi per PHP è come se l'utente compilasse manualmente un form inserendo le coordinate dell'elemento. La ricezione avviene in formato JSON, che non è altro che un banalissimo array per Javascript.

P.S. Ho spostato io l'astronave. :p
 
Caro Gighen... quanto sei bravo...

...mi piacerebbere essere come te...hai una preparazione così solida
che ogni volta che leggo un tuo messaggio rimango a bocca aperta... ih ih ih

Però nello stesso tempo non capisco un c.zz. ih ih ih... mi spieghi cos'è iOS?

La ricezione avviene in formato JSON, che non è altro che un banalissimo array per Javascript.

Immagino dev'essere un array "rivestito in oro" ih ih ih... io conosco soltanto l'array tradizionale se magari
mi spieghi un po meglio... io sono ignorante e semi-analfabeta però vorrei imparare...
magari quando hai tempo mi spieghi qualcosa tipo ajax e jquery così oltre alle mie conoscenze attuali potrò fare anche i miracoli come Gesu Cristo... eh eh.

Grazie.
 
Ultima modifica:
il gattoooooooooo.... è tornato il gatto!!!

ma dove sei stato Signor gattino?

Non ti preoccupare era solo una domanda verso Alessandro tra poco
apro una discussione in quella sezione.

Ma dove c.zz è finito zighy? - voglio proseguire con l'esperimento inerente al titolo
Memorizzazione degli elementi.

Intanto ho visto la situazione della Honshu (l'astronave che ha come nick: "il Gattaccio")
e sai perchè gli ho dato questo nome? E' di colore bianco come la tua pelliccia Signor Gattino.

L'astronave si trova nel puntio in cui l'ha posizionata Gighen...adesso facciamo un esperimento:
il gatto muove la sua astronave in un punto qualsiasi (usa il browser Internet Explorer o altri)
ed io e Gighen ti diremo dove l'hai posizionata
 
Benvenuto zighy

me l'aspettavo con Explorer... bisogna eliminare la cache...
oppure aggiornare il file di deposito delle coordinate

in questo momento vedo l'astronave nell'angolo in basso a sinistra e voi
 

Discussioni simili