p2psin.net - portale italiano del p2p p2psin.net - portale italiano del p2p p2psin.net - portale italiano del p2p

Portale Forum Regolamento Calendario Tags RSS Blog
Torna indietro   Forum P2PSIN Italia > Applicazioni Web & Creazioni Siti > Supporto Forum e Siti Web > Vbulletin
Registrazione FAQ Lista utenti Calendario Segna forums come letti

Tags: , , , , , , , ,

Scrivi una nuova discussione  Rispondi  
 
LinkBack Strumenti discussione Modalità visualizzazione
Vecchio 23-07-2007, 13.28.35   #1
Admin 1,618034

 
L'avatar di jarod1981®
 
Data registrazione: 21-12-2005
Residenza: Dove il mare luccica ;-)
Messaggi: 12,288
jarod1981® diventerà  molto famoso
Invia un messaggio via MSN a jarod1981® Invia un messaggio via Yahoo a jarod1981® Manda un messaggio tramite Skype™ a jarod1981®
Flash CS3 + PHP + mySQL, visualizzare il numero utenti registrati da vBulletin


Con questo articolo vedremo come poter accompagnare Flash con l' ormai super nota board vBulletin.
Vedremo come creare un SWF che tramite Actionscript 3.0 che chiama un PHP che a sua volta esegue una query al database mySQL. Il PHP restituisce tale valore a Flash che visualizza il numero di utenti registrati del forum ed il nome dell' ultimo registrato.
Se avete appreso bene i contenuti dell' articolo in cui mostravo come utilizzare il nuovo [Solo gli utenti registrati possono visualizzare tutti i links]
e cosa sia la[Solo gli utenti registrati possono visualizzare tutti i links]
, allora siete pronti per aggiungere un bel modulo in Flash al vostro forum.
Ad esempio, molti di noi usano un cms come sito ' vetrina ' e homepage. Poi il forum è installato in un' altra cartella.
Con questo tutorial potete creare un SWF che ' pesca ' i dati dal database del vostro forum e posizionarlo nella homepage del vostro sito.
Chiaramente poi sta a voi implementare delle animazioni a vostro gusto personale. Io cerco di rimanere sul semplice in modo che tutti possano capire i passi di questo tutorial. Seguitemi...
Creo un FLA che salvo con nome ' utenti.fla ' e gli assegno le misure di 150x80.
Al suo interno ho sullo Stage:
- una MovieClip con nome loading_mc che sarà visualizzata durante il tempo di percorrenza dalla chiamata al PHP fino alla sua risposta. Al suo interno ha una piccola animazione a intermittenza.
- una MovieClip con nome utenti_mc con all' interno un campo di testo che visualizza la scritta ' utenti registrati '. Inoltre ha una piccola animazione al suo interno in modo da far apparire la MovieClip stessa dalla destra verso il centro.
- una MovieClip con nome ultimo_mc con le stesse caratteristiche di utenti_mc ma con la scritta ' ultimo utente registrato '.
- un campo di testo dinamico con nome numero_txt che visualizzerà il numero degli utenti iscritti
- un campo di testo dinamico con nome ultimo_txt che visualizzerà il nome dell' ultimo utente registrato.
Passiamo al codice Actionscript 3.0:
creo la Document class, un file AS che salvo con nome ' Utenti.as ', che chiamerà il primo script PHP per recuperare il numero totale degli utenti iscritti, implementata in questo modo:



Citazione:
package
{
import flash.display.MovieClip;
import flash.text.TextField;
import flash.utils.Timer;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.navigateToURL;
import flash.events.*;

public class Utenti extends MovieClip
{
private var num_utenti:int;

private var timer:Timer;

private var boo:Boolean=true;

public function Utenti()
{
init();
callServer();
}

private function init():void
{
stage.frameRate=31;
}

private function callServer():void
{
var richiesta:URLRequest=new URLRequest();
richiesta.url='http://www.flepstudio.org/test.php?cachebuster='+new Date().getTime();
var loader:URLLoader=new URLLoader();
addListeners(loader);
try
{
loader.load(richiesta);
}
catch (error:Error)
{
trace('Unable to load requested document.');
}
}

private function addListeners(d:IEventDispatcher):void
{
d.addEventListener(Event.COMPLETE,completato);
}

private function completato(e:Event):void
{
loading_mc.stop();
loading_mc.visible=false;
var loader:URLLoader=URLLoader(e.target);
var vars:URLVariables=new URLVariables(loader.data);
num_utenti=vars.utenti;
utenti_mc.play();
utenti_mc.addEventListener(Event.ENTER_FRAME,check ing);
}

private function checking(e:Event):void
{
if(e.currentTarget.currentFrame==31)
{
e.currentTarget.removeEventListener(Event.ENTER_FR AME,checking);
display();
var utlimo:Ultimo=new Ultimo(this);
}
}

private function display():void
{
numero_txt.text=num_utenti.toString();

timer=new Timer(250,0);
timer.addEventListener(TimerEvent.TIMER,fade);
timer.start();
}

private function fade(t:TimerEvent):void
{
if(boo)
utenti_mc.alpha=.75;
else
utenti_mc.alpha=1;
boo=!boo;
}
}
}


Poi creo un' altra classe, un file AS che salvo con nome ' Ultimo.as ', che chiamerà il secondo script PHP per recuperare il nome dell' ultimo utente iscritto, implementata in questo modo:



Citazione:
package
{
import flash.display.MovieClip;
import flash.text.TextField;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.navigateToURL;
import flash.events.*;

public class Ultimo extends MovieClip
{
private var Root:MovieClip;

private var ultimo_utente:String;

public function Ultimo(m:MovieClip)
{
Root=m;
Root.loading_mc.visible=true;
Root.loading_mc.y+=40;
Root.loading_mc.play();

callServer();
}

private function callServer():void
{
var richiesta:URLRequest=new URLRequest();
richiesta.url='http://www.flepstudio.org/ultimo_registrato.php';
var loader:URLLoader=new URLLoader();
addListeners(loader);
try
{
loader.load(richiesta);
}
catch (error:Error)
{
trace('Unable to load requested document.');
}
}

private function addListeners(d:IEventDispatcher):void
{
d.addEventListener(Event.COMPLETE,completato);
}

private function completato(e:Event):void
{
Root.loading_mc.stop();
Root.loading_mc.visible=false;
var loader:URLLoader=URLLoader(e.target);
var vars:URLVariables=new URLVariables(loader.data);
ultimo_utente=vars.ultimo;
Root.ultimo_mc.play();
Root.ultimo_mc.addEventListener(Event.ENTER_FRAME, checking);
function checking(e:Event):void
{
if(e.currentTarget.currentFrame==31)
{
e.currentTarget.removeEventListener(Event.ENTER_FR AME,checking);
Root.ultimo_txt.text=ultimo_utente;
}
}
}
}
}


Analizziamo il codice:
Classe Utenti.as
Proprietà:
una variabile numerica in cui inserirò il valore che mi passa il PHP ( numero utenti )
private var num_utenti:int;
un Timer per una piccola animazione
private var timer:Timer;
Una variabile di tipo Boolean che servirà sempre per l' animazione
private var boo:Boolean=true;
Metodi
init();
imposto la velocità del frame rate
stage.frameRate=31;
Adesso mi concentro dal metodo completato() in avanti, in quanto il resto che esegue questa classe lo abbiamo già visto quì: [Solo gli utenti registrati possono visualizzare tutti i links]

completato();
fermo l' animazione di loading_mc e lo rendo invisibile
loading_mc.stop();
loading_mc.visible=false;
recupero i dati che mi ha restiuito utenti.php ( facendo una query al DB )
var loader:URLLoader=URLLoader(e.target);
var vars:URLVariables=new URLVariables(loader.data);
asegno il valore del PHP alla variabile num_utenti
num_utenti=vars.utenti;
faccio partire la timeline di utenti_mc
utenti_mc.play();
creo un intervallo ENTER_FRAME che controlla il numero del frame attuale di utenti_mc chiamando la funzione checking
utenti_mc.addEventListener(Event.ENTER_FRAME,check ing);
checking();
se il frame corrente è il numero 31
if(e.currentTarget.currentFrame==31)
{
fermo l' intervallo
e.currentTarget.removeEventListener(Event.ENTER_FR AME,checking);
chiamo il metodo display()
display();
istanzio la classe Ultimo ( che vedremo tra poco )
var utlimo:Ultimo=new Ultimo(this);
}
display();
assegno al campodi testo numero_txt il valore della variabile num_utenti
numero_txt.text=num_utenti.toString();
creo un Timer che chiamerà ogni 250 centesimi di secondo la funzione fade()
timer=new Timer(250,0);
timer.addEventListener(TimerEvent.TIMER,fade);
timer.start();
fade();
se la variabile boo è true
if(boo)
assegno un alpha a ytenti_mc pari a 0,75
utenti_mc.alpha=.75;
se invece è false
else
assegno un alpha a ytenti_mc pari a 1
utenti_mc.alpha=1;
inverto il valore di boo
boo=!boo;
Classe Ultimo.as
Proprietà:
una variabile di tipo MovieClip a cui assegnerà la root passandogliela da Utenti.as in modo da potermi riferire alle MovieClip e campi di testo che ho in utenti.fla
private var Root:MovieClip;
una variabile di tipo stringa in cui inserirò il nome dell' ultimo utente registrato che mi ha restituito ultimo.php ( dopo la query al database )
private var ultimo_utente:String;
Come abbiamo già visto in altri casi, il codice all' interno della funzione costruttrice di una classe è la prima cosa che viene eseguita.
Infatti quando da Utenti.as abbiamo istanziato Ultimo.as, nella costruttrice di Ultimo.as abbiamo il seguente codice:
assegno alla variabile Root, la root così posso chiamare le MovieClip che ho sullo Stage
Root=m;
rendo visibile loading_mc
Root.loading_mc.visible=true;
gli spostola sua y di 40 pixels
Root.loading_mc.y+=40;
faccio partire la sua timeline
Root.loading_mc.play();

Adesso andiamo al metodo completato();
fermo la timeline di loading_mc e lo rendo invisibile
Root.loading_mc.stop();
Root.loading_mc.visible=false;
recupero i dati che il PHP mi ha restituito ( una sringa col nome dell' ultimo utente registrato )
var loader:URLLoader=URLLoader(e.target);
var vars:URLVariables=new URLVariables(loader.data);
assegno i dati alla variabile ultimo_utente
ultimo_utente=vars.ultimo;
faccio partite la timeline di ultimo_mc
Root.ultimo_mc.play();
creo un intervallo ENTER_FRAME che controlla il numero del frame attuale di ultimo_mc chiamando la funzione checking
Root.ultimo_mc.addEventListener(Event.ENTER_FRAME, checking);
function checking(e:Event):void
{
se il frame corrente è il numero 31
if(e.currentTarget.currentFrame==31)
{
fermo l' intervallo
e.currentTarget.removeEventListener(Event.ENTER_FR AME,checking);
assegno il testo al campo di testo ultimo_txt
Root.ultimo_txt.text=ultimo_utente;
}
}
Il PHP che utilizzo :
utenti.php

Citazione:
<?php
$dbhost = 'localhost';
$dbuser = 'db_username';
$dbpass = 'db_password';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');

$dbname = 'db_name';
mysql_select_db($dbname);

$query ="SELECT * FROM `vb_user`";
$db_query = mysql_query($query) or die (mysql_error());
$count = mysql_num_rows($db_query);
echo 'utenti='.$count;
?>
ultimo.php

Citazione:
<?php
$dbhost = 'localhost';
$dbuser = 'db_username';
$dbpass = 'db_password';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql');

$dbname = 'db_name';
mysql_select_db($dbname);

$query="SELECT * FROM vb_user";
$result=mysql_query($query) or die (mysql_error());

$max=mysql_numrows($result);
$username=mysql_result($result,$max-1,"username");

echo 'ultimo='.$username;
?>
E' sufficiente cambiare: nome utente database, password database e nome database.
Cambiare gli url ai files PHP nelle classi Utenti ( riga 42 ) e Ultimo (riga 38 ).
I due file php devono avere permessi 777.

[Solo gli utenti registrati possono visualizzare tutti i links]
__________________




jarod1981® non è connesso   Rispondi citando
Sponsored Links
Rispondi


Strumenti discussione
Modalità visualizzazione

Regole di scrittura
Tu non puoi inserire nuovi messaggi
Tu non puoi rispondere ai messaggi
Tu non puoi inviare files
Tu non puoi modificare i tuoi messaggi

Il codice vB è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks are Disattivato
Pingbacks are Disattivato
Refbacks are Disattivato


Tutti gli orari sono GMT +1. Adesso sono le 17.21.04.


Siti Amici : WinMX Help | Forum Cartoons | Trucchi PC | eMule Help | NarutoPlanet

Powered by vBulletin versione 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Traduzione italiana : www.vbulletin.it
Copyright P2PSIN Italia 2005 - 2008 ®