Ciao a tutti.
E' una vita che no uso più flash e devo rimettermi a studiarlo da capo.
ho un problema sto provando ad eseguire un tutorial pubblicato su di un forum (l'ho inserito in fondo al messaggio) per fare delle news con flash-php-mysql.
dopo aver creato tutta la parte in php con tanto di db su mysql ho creato la parte del filmato in flash, ma quando faccio il test del movie ottengo questo errore.
WARNING: This movie uses features that are not supported in the Flash 5 player
Scene=hp, Layer=Layer 70, Frame=1: Flash MX Text Field Instance Name
Ho eseguito il tutorial alla lettera, io uso flash mx, non vorrei che il tutorial fosse per mx 2004 (c'era scritto per mx!?!!)
C'è qualcuno che può dirmi dove posso aver sbagliato.
Di seguito metto per esteso il tutorial utilizzato:
flash news [Php -mysql][FMX]
Dopo 2 giorni di lavoro ecco un tutorial su come realizzare un sitema di news utilizzando php MySql e flashMx grazie anche alla collaborazione di Bear
Iniziamo subito a realizzare la parte piu complicata, cioè, tutto cio che riguarda il lato server.
Andremo a creare subito 4 files.php
install.php
add_news.php
show_news.php
user_property.php
Il file user_property.php contiene solamente i parametri della connessione al database e la password per inserire nuovi articoli ed'e cosi sviluppato
code:
--------------------------------------------------------------------------------
<?
$db_host="localhost";
$db_name="nomeDB";
$db_user="nome_Utente";
$db_password="password";
$user_password="password_a_scelta";
?>
--------------------------------------------------------------------------------
Il nome del database, il nome utente e la db_password e fornita di solito dall'host
Mi sembra che sin'ora non ci sia bisogno di spiegazioni
-------------------------------------------------------------------------
il file install.php serve a creare una nuova tabella nel db che risiede sul server
procediamo con il codice
code:
--------------------------------------------------------------------------------
<?
//includiamo il file con i parametri di connessione
include("user_property.php");
//inizio connessione al db se non e possibile mi stampa un messaggio di errore
$conn=mysql_connect($db_host,$db_user,$db_password ) or die("Errore nella connessione al database") ;
//selezioniamo il db e anche qui viene stampato a video un messaggio di errore in caso di fallimento dell'operazione
mysql_select_db($db_name,$conn) or die ("impossibile selezionare il database");
//questo e quello che chiediamo di fare al nostro db tramite il comando sql CREATE TABLE
//anche qui verrà stampato un messaggio di errore in caso di fallimento
$query="CREATE TABLE novita (id INT(5) UNSIGNED not null AUTO_INCREMENT, data_news VARCHAR(15) not null,titolo VARCHAR(60) not null, news TEXT not null,PRIMARY KEY(id))";
if(mysql_query($query,$conn)){
echo "Installazione completata.... rimuovere questo file dal server per incominciare a postare le vostre news";
}else{
echo "Impossibile installare la tabella";
}
//ciudiamo la connessione
mysql_close($conn);
?>
--------------------------------------------------------------------------------
Se e andato a buon fine verra stampato a video questo messaggio:
"Installazione completata.... rimuovere questo file dal server per incominciare a postare le vostre news" e bisognerà rimuovere il file install.php dal server altrimenti non potrete postare le vostre news
--------------------------------------------------------------------------------
Passiamo ora al file che permetterà di inserire le vostre news cioe: add_news.php
subito il codice
code:
--------------------------------------------------------------------------------
<?
//includiamo sempre i parametri di connessione
include("user_property.php");
//quindi: se il file install.php esiste verra stampato sul campo dinamico "output" all'interno dell'swf un messaggio di errore
if(file_exists("install.php")){
echo "output=Il file d'installazione non e stato ancora rimosso dal server";
}else{
//altrimenti si procede....
//verifica della password inserita
if($password!=$user_password){
echo "output=Passoword errata";
}else{
//se e andato a buon fine ...
$news_t=stripslashes($news_t);
$news_txt=stripslashes ($news_txt);
//Creo la data...
$data=date("d/m/Y");
//apriamo la connessione al db
$conn=mysql_connect($db_host,$db_user,$db_password ) or die ("Impossibile connettersi al database");
//selezioniamo il db
mysql_select_db($db_name,$conn) or die ("Impossibile selezionare il database");
//query da inviare al db...
$query="INSERT INTO novita (data_news,titolo,news) VALUES ('$data','$news_t','$news_txt')";
//$news_t e $news_txt sono le variabili inviate dal Flash-form
if(mysql_query($query,$conn)){
echo "output=News inserita correttamente";
}else{
echo "output=Non e stato possibile inserire questa news";
}
//chiusura della connessione
mysql_close($conn);
}
}
?>
--------------------------------------------------------------------------------
------------------------------------------------------------------------------------
Passiamo ora all'ultimo dei 4 file php
non ripeterò nuovamente quanto già detto...
show_news.php
code:
--------------------------------------------------------------------------------
<?
include("user_property.php");
if(file_exists("install.php")){
echo "output=Il file d'installazione non e stato ancora rimosso dal server...";
}else{
$conn=mysql_connect($db_host,$db_user,$db_password ) or die ("Impossibile connetersi al database");
mysql_select_db($db_name,$conn) or die ("impossibile selezionare il database");
//la query chede al db di selezionare tutti ("*") i campi e di ordinarli in ordine "id" decrescente
$query="SELECT * FROM novita ORDER BY id DESC";
$r=mysql_query($query,$conn);
//eseguo un ciclo while e concateniamo delle stringhe che verranno
//stampate e "splittate"(myvar.split()) su flash
while($i=mysql_fetch_array($r)){
$data_str.=$i[data_news]."|";
$tit_str.=$i[titolo]."|";
$news_str.=$i[news]."|";
}
//Finalmente stampiamo le variabili
echo "&varData=$data_str";
echo "&varTitolo=$tit_str";
echo "&varNews=$news_str";
mysql_close($conn);
}
?>
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
Finalmente un po di flash!
Prepariamo il filmato...
si va subito a creare un movieclip con istanza "mc", che contiene al suo interno un campo di testo "dinamico" che istanzieremo con il nome "data_title" ove apparirà il titolo della news
Ora: in _root su un frame mettiamo un campo di testo dinamico e lo istanziamo con nome "testoNews" inseriamo lo script
code:
--------------------------------------------------------------------------------
onLoad = function() {
//PATH DEL FILE PHP
path = "show_news.php";
loadVariablesNum(path, 0);
//CREO DEGLI ARRAY CONTENITORI CHE VERRANNOP RIEMPITI NON APPENA SARANNO PERVENUTI I DATI
dataArray = new Array();
titleArray = new Array();
newsArray = new Array();
};
onData = function() {
testoNews.html = 1;
dataArray = varData.split("|");
titleArray = varTitolo.split("|");
newsArray = varNews.split("|");
if (dataTitolo.length-1<15) {
for (var i = 0; i<dataArray.length-1; i++) {
//duplichiamo i movieclip...
duplicateMovieClip("mc", "mc"+i, i);
//li posizioniamo in verticale...
this["mc"+i]._x = 50;
this["mc"+i]._y = 50+i*20;
this["mc"+i].data_title.text = titleArray[i];
//gli assegnamo le funzioni prototype
this["mc"+i].rollovers();
this["mc"+i].rollouts();
this["mc"+i].releases(dataArray[i], newsArray[i]);
}
} else {
//quindi se l'array dataTitolo e maggiore di 15 (io ho messo quindici voi potete mettere il numero che volete, dipende da quante news volete visualizzare) eseguo le stesse operazioni riportate sopra
for (var i = 0; i<15; i++) {
duplicateMovieClip("mc", "mc"+i, i);
this["mc"+i]._x = 50;
this["mc"+i]._y = 50+i*20;
this["mc"+i].data_title.text = titleArray[i];
this["mc"+i].rollovers();
this["mc"+i].rollouts();
this["mc"+i].releases(dataArray[i],newsArray[i]);
}
}
};
//Queste sono le proto che permetteranno di visualizzare le news e di creare un piccolo effetto al rollOver del mouse
MovieClip.prototype.rollovers = function() {
this.onRollOver = function() {
c = new Color(this);
c.setRGB(0xFFFFFF);
};
};
MovieClip.prototype.rollouts = function() {
this.onRollOut = function() {
c = new Color(this);
c.setRGB(0x000000);
};
};
MovieClip.prototype.releases = function(dataTesto, newstesto) {
this.onRelease = function() {
_root.testoNews.htmlText = "<font color='#FF0000'>"+dataTesto+"</font>"+newline+newstesto;
};
};
--------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
Ora andiamo a creare il form per l'invio dei dati al php
lo facciamo semplice semplice
dobbiamo solo creare un nuovo filmato e inserire dei campi di testo di input al suo interno
uno con nome variabile password (singola riga) dove verra inserita la password che vi siete scelti voi
un'altro con nome variabile news_t (signola riga) dove verra scritto il titolo della news
e l'ultimo un campo di testo (input multiriga) nome variabile news_txt dove scriverete la vostra news completa
Ci serve ancora una textfield per verificare se i dati sono stati inseriti o meno,quindi la creo e le do un nome variabile output
Ora create un pulsante e istanziatelo in "bottone"
quindi dalla _root
code:
--------------------------------------------------------------------------------
bottone.onRelease=function(){
loadVariableNum("add_news.php","","POST")
}
--------------------------------------------------------------------------------
Finito!
Istruzioni:
- Salvate tutto nella stessa directory quindi pubblicatela sul vostro server
- Lanciate il vostro browser puntando al file install.php, se e andato tutto bene rimuovete il file d'installazione e cominciate a postare le vostre news!
---------------------------------------------------------------------------------------
Ricordandovi di attenervi al regolamento di questo forum , tutte le funzioni di php le trovate nell'antico testamento del php
Buon Lavoro
-------------------
Piccola modifica!!!!!
ho preparato una piccola modifica nel file flash per chi volesse visualizzare tutte le news all'interno di un campo di testo
stop();
dataArray = new Array();
titleArray = new Array();
newsArray = new Array();
sql = new LoadVars();
sql.load("show_news.php");
sql.onLoad = function() {
if (sql.loaded) {
testoNews.html = 1;
dataArray = this.varData.split("|");
titleArray = this.varTitolo.split("|");
newsArray = this.varNews.split("|");
for (var t = 0; t<titleArray.length-1; t++) {
num = t+1;
mystr = "<font color='#576C73'><u>"+titleArray[t]+"</u></font>"+newline+dataArray[t]+"
"+newsArray[t]+newline+"----------------------------------------------------";
testoNews.htmlText += mystr;
}
}
};