Posizionare un div da coordinate database

zighy

Utente Attivo
20 Gen 2012
96
0
0
Da database ricavo id,x,y che equivalgono al nome del div,e la distanza da top e left.Vorrei che i div nel body prendessero le posizione che gli passo.
Ho provato cosi ma non funziona...help

HTML:
<html>
<head>
<title>test</title>

<script type="text/javascript">

var id = <?php echo $id ;?>;
var x = <?php echo $x1 ;?>;
var y = <?php echo $y1 ;?>;

function set(id,x,y){
 document.getElementByID('id')style.margin-top= x + 'px';
 document.getElementByID('id')style.margin-left= y + 'px';
 }
</script>
	</head>

	<body onLoad="set()">

<div drag1></div>
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
due cose:
una può essere che non hai scritto tutto il codice, ma non vedo da dove ricavi le coordinate dal db
la seconda, per vedere se php funzia , ho aggiunto un po di php al tuo
PHP:
<?php
$id = 333;
$x1 = 222;
$y1 =111;
?>
<html>
<head>
<title>test</title>
<script type="text/javascript">
var id = <?php echo $id ;?>;
var x = <?php echo $x1 ;?>;
var y = <?php echo $y1 ;?>;
function set(id,x,y){
document.getElementByID('id')style.margin-top= x + 'px';
document.getElementByID('id')style.margin-left= y + 'px';
}
</script>
</head>

<body onLoad="set()">

<div drag1></div>
se chiami il file e guardi con visualizza origine vedrai
Codice:
//....
var id = 333;
var x = 222;
var y = 111;
//......
è il js che non funzia, posta nella sua sezione
 

zighy

Utente Attivo
20 Gen 2012
96
0
0
Le coordinate le ricavo da

PHP:
<?php
 $username="nomeuser";
 $password="*****";
 $database="my_db";
   mysql_connect(localhost,$username,$password);
    @mysql_select_db($database) or die("Impossibile selezionare il database.");
     $query="SELECT * FROM coordinate";
      $risultati=mysql_query($query);
        $num=mysql_numrows($risultati);
          mysql_close();
              $i=0;
               while ($i < $num) {
                    $id=mysql_result($risultati,$i,"id");
                         $x1=mysql_result($risultati,$i,"x1");
                              $y1=mysql_result($risultati,$i,"y1");
                                          $i++; }
?>
e va bene perchè se faccio un echo mi da tutto alla perfezione quindi credo sia il js che non fa il suo dovere per qualche motivo
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
Non si possono ricevere variabili php dentro lo script js

Codice:
<script type="text/javascript">
var id = <?php echo $id ;?>;
var x = <?php echo $x1 ;?>;
var y = <?php echo $y1 ;?>;
function set(id,x,y){
document.getElementByID('id')style.margin-top= x + 'px';
document.getElementByID('id')style.margin-left= y + 'px';
}
</script>

(Se non mi ricordo male)
ma puoi prenderle esternamente...


pagina-che-invia.php
Codice:
<?php
$var1=100; //valore x da database
$var2=200; //valore y da database

header('location: pagina-che-riceve2.html?var1='.$var1.'&var2='.$var2);
?>
pagina-che-riceve.html
Codice:
<script>
function leggi(){
ggg=this.location.search;
alert(ggg);
}
</script>
<body onload="leggi()">
</body>
esempio
http://max400scuola.altervista.org/aaa/a-php/pagina-che-invia.php
da questa pagina passi le variabili a quest'altra trascinandole tramite l'url.....

http://max400scuola.altervista.org/aaa/a-php/pagina-che-riceve.html?var1=100&var2=200
....e alla fine estrai le variabili dall'url e ci fai quello che vuoi
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao @max
no max quello che ha fatto è giusto
var id = <?php echo $id ;?>;
è da js a php che non si possono tramettere variabili
volendo anche tutto il js potrebbe essere scritto con un echo php

p.s.
sempre @max
se guardi un tuo script da me modificato creo con php anche i nomi delle function
 
Ultima modifica:

zighy

Utente Attivo
20 Gen 2012
96
0
0
Ma se quello che ho fatto è giusto avete idea di come mai non funziona?
In alternativa sto provando a dare uno stile al div da una pagina.php esterna che assume le variabile passate da database come margin-top e margin-left ma fino ad ora senza risultati....
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
eh si... effettivamente...funziona!

il gattaccio ha ragione mi legge le variabili dentro i tag -script- e -/script-
stasera doppia scatoletta per te!...ih ih ih

è da js a php che non si possono tramettere variabili
Per quanto riguarda il contrario da js a php l'unico modo è tramite stringa come ho fatto nell'esempio precedente e intercettarle con $_GET

Adesso provo lo script di zighy...intanto modificherei il margin-left in marginLeft=100; //senza 'px'
e poi nel body aggiungerei i 3 parametri...

comunque a dopo...
 

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
ecco qua....

http://max400scuola.altervista.org/aaa/a-php/zighy.php


il codice
PHP:
<?php
$id=333;
$x1=222;
$y1=111;
?>

<html>
<head>
<title>test</title>

<script type="text/javascript">
function carica_dati(){
var idn = <?php echo $id; ?>;
var x=<?php echo $x1; ?>;
var y=<?php echo $y1; ?>;
alert(idn);
alert(x);
alert(y);
xx=eval(x);
yy=eval(y);
sett();
}
function sett(){
document.getElementById('idn').style.marginTop=xx;
document.getElementById('idn').style.marginLeft=yy;
}
</script>
</head>

<body onload="carica_dati()">

<div id="idn">pppp</div>

</body>
ho messo una serie di alert per leggere i valori alla fine il div si sposta in base a quei valori


dimenticavo c'erano un bel po di errori nel tuo script zighy
Codice:
document.getElementByID('id')style.margin-top= x + 'px';
in
Codice:
document.getElementById('id').style.marginTop=x;
ovviamente bisogna by-passare la variabile x con eval e diventa
...marginTop=xx; //valore by-passato xx=eval(x);
 
Ultima modifica:

zighy

Utente Attivo
20 Gen 2012
96
0
0
Potrebbe funzionare.L'unica cosa è che il database prende le coordinate con offset.top e offset.left che a quando pare non sono la stessa cosa di marginTop quindi il div non va dove dovrebbe.Che ne pensi?

NO FERMI TUTTI

colpa mia!Seguiranno nuove cominicazione :)
 
Ultima modifica: