Con il tutorial di oggi impareremo come caricare un’immagine presa da un database MySQL con l’utilizzo di una query. Inoltre aggiungeremo un effeto di trasinamento dell’immagine con relativo zoom tramite la rotellina del mouse.
Prima di tutto analizziamo come un filmato Flash può ricevere dei parametri da un file esterno.
Dati=pippo&cognome=esposito&casa=napoli&
Nel nostro esempio, dovendo interagire con un database, creeremo una query usando una Select per stampare in un file .php la sintassi in esempio sopra con la directory dell’immagine.
Dal nostro Database mySQL creiamo una tabella Immagini ed inseriamo un record foto varchar(100), in cui vi sarà la path dell’immagine:
Creiamo una connessione al database con il file connessione.php
<?php
$con=mysql_connect('localhost','root') or die('non riesco a trovare il server');
mysql_select_db('my_juliuswebdesign',$con)or die("Attenzione non trovo il database");
?>
In questo caso il mio database di chiama my_juliuswebdesign, inseguito voi lo cambierete con il nome del vostro.
Creiamo ora una pagina di nome dati.php, è inseriamo il seguente codice, per passare dal database a Flash il parametro.
<?php
include('connessione.php'); //creo una connessione
$risultato=mysql_query("Select* from Immagini") or die ("non trovo la tabella"); //seleziono tutto dalla tabella Immagini
$numRecord=mysql_num_rows($risultato);if($numRecord!=0){while($record=mysql_fetch_array($risultato)){
$Foto = $record['foto']; //appoggio il record foto nella variabile foto
echo"immagine=$Foto"; stampo la variabile foto seguita da immagine=
}
}
?>
dati.php stamperà la sintassi corretta per ricevere la path dell immagine prendendo il record dal database.
immagine=http://juliusdesign.wordpress.com/avatar/juliusdesign-128.jpg
- Aggiungiamo l’effetto di trascinamento sull’immagine
Prima di tutto creiamo un Clip Filmato di nome istanza box che ci farà da contenitore.
In seguito selezioniamo il clip, entriamo nel codice [Tasto rapido F9] è inseriamo il codice per rendere un oggetto trascinabile
on (press) {
this.startDrag();
}
on (release) {
this.stopDrag();
}
- Leggiamo i dati dal file generato dalla query dati.php
dati = new LoadVars(); //creo una variabile
dati.onLoad = function(success) {
if(success){
foto = this.immagine; //associo foto al parametro immagine
loadMovie(foto, _root.box); // carico la foto nel clip box
}else{
trace("il caricamento non è stato possibile");
};
dati.load(”dati.php”); //invoco il metodo load della classe loadVars
};
- Aggiungiamo un effetto zoom, tramire il movimento della rotella del mouse.
var mouseListener:Object = new Object(); // creo un oggetto mouseListener
mouseListener.onMouseWheel = function(delta:Number) {
box._xscale += delta; // scalo l'asse delle ascisse
box._yscale += delta; // // scalo l'asse delle ordinate
};
Mouse.addListener(mouseListener); // invoco l'oggeto mouseListener
31 Commenti
insomma, io non so dove sbaglio, ma a me non funziona!!!
il mio file php è:
$calculation = $_POST['years']*7;
echo "&returnVal=$calculation";
e in flash, ottengo come risultato:
$calculation";
il codice in flash è
stop();
//=================================
// INIT
//=================================
//declare path to php files
lvOut = new LoadVars(); //create lv object
lvIn = new LoadVars(); //create lv object
lvIn.onLoad = function (success) {
if(success){
output.text = lvIn.returnVal;//PHP variable value to textbox
}else{
output.text = "fail"; //or notify of failure
}
}
//=================================
// BTN
//=================================
myBtn.onRelease = function(){
lvOut.years = years.text; //assign user-input value to lv property called years
//lvOut.send(path + "dogyears.php","_blank"); //send to a blank window
lvOut.sendAndLoad(path + "dogyears.php", lvIn, "POST"); //get results returned to lvIn
};
dove:
un input text chesi chiama years, da un pulsante che si chiama myBtn e da una dynamic text che si chiama output
in teoria se non erro dovrebbe essere scritto
echo "returnVal=$calculation";
passando con post years=7
la variabile che flash prenderà sarà returnVal=49
non capisco perchè ce scritto la E commerciale prima di returnVal :master: sembrerebbe un ulteriore concatenamento si variabili, ma se tu ne usi solo una…
comunque hai provato il mio Tutorial??
saluti
Ciao!
Complimenti per loscript.
Sai dirmi perchè mi ritorna l’url dell’immagine nel file swf e non l’immagine?
… e quindi dico…. se mi ritorna l’url vuol dire che la variabile è stata assegnata, come mai non mi appare l’immagine?
ciao nel database viene salvato l’url correttamente?
Grazie julius per la celere risposta.
Comunque nel database cè l’url http://www.sito.estensione/cartella/immagine.estensione
e nel movie flash mi viene fuori l’url che ti ho appena indicato e non l’immagine.
mmm strano..vedendo l’url dovrebbe essere un buon segno, infatti vuol dire che viene salvato…
questa immagine ha estensioni compatibili con flash?? jpg png gif ecc
Possibile che sia molto pesante e ci metta tanto a caricarla??
non lo sò….sto un pò sparando ^_^
in teoria quell’url viene caricato in un loadMovie… hai cambiato qualcosa a livello di codice AS?
Sembra quasi che siamo in chat! :))
Grazie ancora una volta per la celerità nel rispondermi, davvero ho bisogno diuno script del ge nere, si vede che lo haicapito. :P
Ti posto l’url quasi esatto
http://www.********.com/img/prova.gif
Naturalmente è un’immagine di prova.
No nello script non ho sostituito assolutamente niente, anche perchè l’ho prelevato questo pomeriggio, dopo che mi sono svenato a trovare qualcosa del genere nel web.
In pratica mi appare la cornicetta celeste ed in basso ad essa allineato a sinistra dello schermo, in colore grigio, l’url che ti ho inserito.
Questa cosa è molto strana o.O lo provi in Locale o Online??
se ti da errore Online inviami i file che lo controllo :)
Provo online, in pratica è come il tuo esempio, sotto esce l’url, giustamente nel campo di testo dinamico, e sopra l’immagine, solo che io l’immagine non la vedo! -.-‘
mi sembra molto strano come ti ho gia detto ^_^ ti vorrei dire di inviarmi i file, ma alla fine dovrebbero essere uguali ai miei.. ^^”
Hai provato con altre immagini?
A questo punto… posso invitarti su msn? :D
Si i file sono gli stessi.
Si ho sostituito l’immagine con gif, jpeg ed ho provato a dare l’url nell campo del database solo a img/prova.gif
Non vorrei sia proprio li l problema ora che ci penso, perchè nel tuo zip non cè la query mysql. O.O Quindi è l’unica cosa che ho creato con le mie manine.
si ok per msn…
cmq la query è descritta nell’articolo…
nome db: Immagini
Campo Tipo Collation Attributi Null Predefinito Extra Azione
id int(11) No auto_increment
foto varchar(255) latin1_swedish_ci No
Guarda in teoria se nel filmato flash vedi l’url in grigio dovrebbe funzionare l’interazione con il DB…
ora stacco…magari ci ri-aggiorniamo domani
ciao
Aggiunto a contatti msn, vediamo di risolvere questo problema, credo che non sarò l’unico ad avere bisogno di questo script, e magari facciamo qualcosa di utile per iprosperi! :)
Bè… dopo tutti questi giorni di prove rieccomi qui!
Ho provato e riprovato all’infinito, ma nulla.
Insomma Julius i file sono quelli tuoi del tutorial, unica cosa è il database, che ti ho pubblicato sopra, e crdo vada bene.
Ninete continua ad uscirmi l’url dell’immagine ma non l’immagine1 :(
Ok julius…. intanto scusami per il troppo disturbo ingiustificato.
Dunque la soluzione al problema è questa, dopo l’ennesimo test.
Lo script funziona benissimo ma accetta solo immagini jpg
Ora a me serve che legga ogni tipo di immagine. come posso ovviare al problema?
Grazie per la cortesia e la disponibilità
be in teoria dovrebbe funzionare anche con gif e png, tu cosa hai caricato?
Grazie Julius per la risposta.
Io ho caricato jpg e va benissimo, ma provando con la stessa immagine nella stessa directory ma in formato gif oppure png (a me serve la trasparenza sotto l’immagine) non va. :(
Certo in teoria dovrebbe funzionare, se carica jpg che differenza cè a caricare un’altro formato?
Puoi fare tu stesso delle prove perfavore? tanto i file sono gli stessi dei tuoi… anzi sono tuoi! :)
Grazie
Ho fatto delle prove, ed effettivamente i file gif non li carica o.O
Li caricherebbe se cambi
loadMovie(foto, _root.box);
con
loadMovieNum(foto, 1);
però a questo punto non gestiresti più lo zoom o.o
vedo di trovare un’altra soluzione
ciao
Grazie Julius, a me lo zoom non interessa! :D
Approposito… nello script php come faccio per pescare in modo random le immagini?
Nel database ho aggiunto un campo id autoincrement
inserisci una funzione random che la utilizzerai per cecercare il valore autoincrement
nel mio caso id
<?php
include(’connessione.php’); //creo una connessione
$val= rand (1, 20);// valore random pesca un numero da 1 a 20 in questo caso
$risultato=mysql_query(”Select* from Immagini WHERE id=$val”) or die (”non trovo la tabella”); //seleziono tutto dalla tabella Immagini
$numRecord=mysql_num_rows($risultato);if($numRecord!=0){while($record=mysql_fetch_array($risultato)){
$Foto = $record[’foto’]; //appoggio il record foto nella variabile foto
echo”immagine=$Foto”; stampo la variabile foto seguita da immagine=
}
}
?>
ciao a tutti.
in questo tutorial ho visto come leggere un campo di una tabella…come faccio a mandare un comando mysql con flash e php?? tipo cancella record, o aggiorna un campo?
Grazie atutti.
P.s.
davvero bravo
Ciao Antonio,
dai uno sguardo a questo 3D sul forum di HTML.it
Ciao Julius
Ma hai qualche esempio anche in ASP di accesso a DB Access?
Saluti
Antonello
Siceramente di linguaggio ASP non sono molto ferrato…
Ti posso consigliare una guida ma un esempio in asp per ora non ci sarà
Ciao Julius stavo vedendo questo tutorial, ma quello che mi chiedeve è:
Se io avessi un 10 di foto, e dovessi caricarle tutte insieme come dovrei fare??
Mi sono buttato giusto da poco su php-mysql-flash e non ne riesco a venire a capo
matteo ha scritto:
Hola julius! Anche io sto impazzendo per far funzionare il tuo script con più immagini, ho trovato come fare ma richiamando un file datix.php per ogni immagine, ho provato ad usare piu righe di variabili (immagine1, immagine2 ecc..) nello stesso dati.php ma non funziona.
Spero di essermi spiegato bene. Se preferisci ti carico uno zip con tutto su un mio spazio se ti può servire.
Saluti elle
In pratica dovreste fare un array nel quale inserire il tot di immagini e caricarle in modo ciclico…
Magari faccio un esempio, tempo permettendo…
Eh per chi come me non mastica molto di actionscript un esempio sarebbe molto utile.. tempo permettendo.. chiaro ;)
Grazie
Ciao elle
Ciao a tutti!
Sulla base di questo Tutorial (che a me funziona!!! ;) ) ho deciso di implementarlo, ma sto incontrando dei problemi.
Il mio progetto è questo: caricare tante immagini da un DB mysql su un MC dinamico (con attachMovie).
Come posso risolvere sto problema?
posto il cod. FLASH, quello php è rimasto +o- uguale al tutorial.
grazie in anticipo a tutti e sopratutto a Julius che mi salva ad ogni intoppo con i suoi tutorial ;)!!!
dati = new LoadVars(); //creo una variabile
dati.load(“dati.php”);//associo la variabile al file dinamico php
dati.onLoad = function() {
var box: MovieClip = this.createEmptyMovieClip(“box”, 1);
colonne = 7;
foto = this.immagine; //associo foto al parametro immagine
sectionCount = this.count_record;//numero foto
for (var i:Number=0; i<sectionCount; i++){
loadMovie(foto, this.box); // carico la foto nel clip box
var depthCount: Number = box.getNextHighestDepth();
var cat: MovieClip = box.attachMovie ("cat", "cat" + i, depthCount);
if (i<colonne) { //fino a 7 riquadri stanno in orizzontale all'8 si passa alla riga sottostante
box["cat"+i]._y = 0;
box["cat"+i]._x =136*i+20; //dimensione Mc 135 +1(linea di stacco)
} else {
box["cat"+i]._y = Number(box["cat"+(i-colonne)]._y)+136;//(dimensioneMC + linea stacco orizzontale[tra le righe])
box["cat"+i]._x = box["cat"+(i-colonne)]._x;
}
}
}
/* codice "buono"
var box: MovieClip = this.createEmptyMovieClip("box", 1);
colonne = 7;
dati = new LoadVars(); //creo una variabile
dati.load("dati.php"); //associo la variabile al file dinamico php
dati.onLoad = function() {
foto = this.immagine; //associo foto al parametro immagine
//var sectionCount : Number= this.count_record;
sectionCount = this.count_record;//numero foto
for (var i:Number=0; i<sectionCount; i++){
var depthCount: Number = box.getNextHighestDepth();
var cat: MovieClip = box.attachMovie ("cat", "cat" + i, depthCount);
box["cat"+i].loadMovie(foto, _root.box); // carico la foto nel clip box
if (i<colonne) {
box["cat"+i]._y = 0;
box["cat"+i]._x =136*i+20;
} else {
box["cat"+i]._y = Number(box["cat"+(i-colonne)]._y)+136;
box["cat"+i]._x = box["cat"+(i-colonne)]._x;
}
}
}*/