Pagina 1 di 1

[PHP][Javascript]Cambiamenti in tempo reale.

MessaggioInviato: mer giu 08, 2011 7:32 pm
da A R O S
Salve ragazzi e ciao Andy xD

Allora vi spiego subito il mio dilemma. Sto progettando un codice che dovrebbe permettermi di muovere su di un immagine un DIV, vi spiego come ho fatto.

<?php

Prima di tutto ogni utente registrato al mio sito ha in phpmyadmin ( database ) oltre ai campi, Username, Password, Email ecc.. due campi aggiuntivi chiamati rispetivamente X e Y.

Li richiamo quindi dal database.

$mysql =" Select X e y dall'utente con nome = al nome del personaggio connesso." // naturalment enon ho scritto così, è per render e l'idea :P

in seguito creo le rispettive variabili:

$X = Result del richiamo mysql
$Y = result del richiamo mysql

Ora a centro pagina ho un div con un immagine e un altro div ( che và sopra di questo ) con un puntino rosso.

< div id=mappa ><img src ecc...>
<div id= puntino style= Qui arriva ilv ero è proprio meccanismo, setto margin top e left in base a X e Y del database></div>
</div>

Ora con due BUTTON faccio muovere il div ( faccio aggiungere 20px ogni volta che clicco a X o Y). IL PROBLEMA!

Quando cliccko sul BUTTON left, sulla mappa il puntino rosso non si muove, però se aggiorno si muove. Allora ho provato con un redirect alla fine del comando, e tutto va bene. Però quando ci sono piu utenti connessi io non riesco a vedere i loro movimenti a meno che non aggiorno la mappa. Questa cosa è frustante! Io vorrei vedere i movimenti degli altri utenti in tempo reale! Credo sia javascript?
COME FARE? T_T

ecco un video per farvi capire cosa vorrei fare. = http://www.youtube.com/watch?v=4rJqvm5eIAY

Re: [PHP][Javascript]Cambiamenti in tempo reale.

MessaggioInviato: mer giu 08, 2011 7:37 pm
da Andy94
A parte il fatto che ho capito ben poco della dinamica di questa pagina, direi proprio che è JavaScript, o più nel dettaglio AJAX.

Devi fare una chiamata AJAX periodica che ti aggiorni ciò che ti serve, ma per aiutarti devo capire meglio. [^]

Re: [PHP][Javascript]Cambiamenti in tempo reale.

MessaggioInviato: mer giu 08, 2011 8:13 pm
da A R O S
Hai ragione Andy mi sono spiegato malissimo.

Allora, in questa pagina io vado a richiamare dal database due campi: X e Y ogni uno di loro ha valore INT ( ovvero un numero ).
Ogni utente registrato sul mio sito ha di per se per default impostati X e Y a 10.
Ora ritornando alla pagina, ho un ciclo in php che crea dei div per ogni pg connesso.
I div hanno impostato come Margin Top e Margin left le variabili X e Y. Esempio.
<div ID = PG Style=" margin top = <?=$X?> margin left = <?=Y?>></div>
Tramite degli input type BUTTON faccio aumentare e diminuire le variabili X e Y aggiornando il loro numero dal database.
Tipo se io premo il Button Left, una funzione in php fà un UPDATE a X e gli aggiunge 10.
Sulla Mappa quindi il margin top del dvi cambierebbe e si và a spostare.
Il problema è che se non aggiorno la pagina, non vedo il cambiamento/spostamento.
E questo è un problema quando ci sono piu personaggi connessi. Infatti per vedere ogni loro movimento dovrei fare un refresh automatico che và ad eseguirsi ogni secondo. @.@

Come posso avere un risultato simile al video? ovvero che ogni spostamento venga visto in tempo reale?

Andy Grazie dell'aiuto, come sempre :P

Re: [PHP][Javascript]Cambiamenti in tempo reale.

MessaggioInviato: mer giu 08, 2011 9:53 pm
da Andy94
L'evento della pressione del pulsante è gestito da del codice JavaScript?
Se sì, postalo: è lì che dobbiamo inserire quanto necessario per aggiornare il tutto istantaneamente.

Re: [PHP][Javascript]Cambiamenti in tempo reale.

MessaggioInviato: mer giu 08, 2011 10:13 pm
da A R O S
Diamine ç_ç non è gestito dal java ma ben si da una funzione php! E' un problema vero? ç_ç

Ecco la funzione in php:
Codice: Seleziona tutto
<?php

session_start(); // Avvio una sessione
include ("Data/parametriDatabase.php"); // Includo i parametri del database per la connessione.

$Login=$_SESSION['Login']; // Dico che la variabile Login corrisponde all'utente della sessione attuale.
$Nome = $Login;

if ($_GET['Comando'] == 'SX') {
$MySql = "UPDATE Presenti SET X = X -10;
$MySql .= " WHERE Nome = '".$Nome."'";
mysql_query($MySql);

header( "Location: Mappa_Principale.php" );
}

elseif ($_GET['Comando'] == 'DX') {

$MySql = "UPDATE Presenti SET X = X +10";
$MySql .= " WHERE Nome = '".$Nome."'";
mysql_query($MySql);

header( "Location: Mappa_Principale.php" );
}
elseif ($_GET['Comando'] == 'UP') {

$MySql = "UPDATE Presenti SET Y = Y - 10";
$MySql .= " WHERE Nome = '".$Nome."'";
mysql_query($MySql);

header( "Location: Mappa_Principale.php" );

}
elseif ($_GET['Comando'] == 'DOWN') {

$MySql = "UPDATE Presenti SET Y = Y + 10";
$MySql .= " WHERE Nome = '".$Nome."'";
mysql_query($MySql);

header( "Location: Mappa_Principale.php" );

}
?>


Gli input invece sono fatti così:

Codice: Seleziona tutto
<img src="Immagini/JoyPad/JoyPad.png" alt="Joy Pad" border="0" usemap="#Map" />
<map name="Map" id="Map">
  <area shape="rect" coords="171,3,204,28" href="JoyPad.php?Comando=SX" />
  <area shape="rect" coords="7,4,22,28" href="JoyPad.php?Comando=UP" />
  <area shape="rect" coords="55,5,87,27" href="JoyPad.php?Comando=DX" />
  <area shape="rect" coords="121,2,136,28" href="JoyPad.php?Comando=DOWN" />
</map>

Re: [PHP][Javascript]Cambiamenti in tempo reale.

MessaggioInviato: gio giu 09, 2011 2:09 pm
da Andy94
D'accordo, ma non è tutto (mi sembra che manchi qualcosa).

Hai un indirizzo dove raggiungere questa risorsa?
In sintesi, a te serve una cosa tipo (pseudocode):
Codice: Seleziona tutto
function aggiornaMappa(){
//qui va la richiesta ajax per l'aggiornamento dei dati
}
setInterval("aggiornaMappa()", 1000);

Se puoi fornire l'indirizzo o l'intero sorgente della pagina vediamo se è possibile finalizzare la cosa. [^]

Re: [PHP][Javascript]Cambiamenti in tempo reale.

MessaggioInviato: gio giu 09, 2011 4:27 pm
da A R O S
Appena ti becco, ti mando il codice sorgente in privato!

Re: [PHP][Javascript]Cambiamenti in tempo reale.

MessaggioInviato: gio giu 09, 2011 8:33 pm
da dararag
Scusate, vado di fretta e non ho letto bene tutto il codice, ma mi sembra che non si muovano in tempo reale tutti i pallini perché non aggiorni in tempo reale la visualizzazione degli altri pallini, ma prendi dati solo su quello dell'utente attivo .-. potrei sbagliarmi, nel caso scusatemi, ripasserò [:P]