Flash PHP: inserire un sondaggio

Di: TCK | 26/09/2020 18:35:14
Ciao a tutti. Avrei necessità di inserire un sondaggio con votazioni aperte a tutti i visitatori su un sito costruito in flash e montato su dreamweaver. C'è la possibilità di crearlo in una di queste due applicazioni?

Risposte



Ciao Biagio,
come promesso ho fatto uno scheletro di sondaggio, per farlo funzionare ho dovuto ricorrere a PHP, quindi è necessario che tu abbia uno spazio web dove puoi utilizzare PHP.
Per gestire diversi sondaggi ho fatto in modo che sia i titoli che le opzioni siano ricavate dai nomi di file e cartelle, così per aggiungere un nuovo sondaggio non devi fare altro che aggiungere una cartella, dentro quella posizionerai un file di testo per ogni opzione.
Dentro ai file di testo saranno scritti dei numeri, che non sono altro che il conteggio dei voti.
Quindi andiamo ad iniziare...
Creiamo i file e le cartelle necessari al sondaggio, se non c'è neanche un sondaggio all'inizio avremo un errore, io ho creato una cartella chiamata Sondaggio e al suo interno ho messo altre due cartelle:
- 001_ti-piace-di-più
- 002_cosa-detesti
I numeri all'inizio del nome servono solo per tenerli nell'ordine preferito, non si vedranno.
Le parole sono separate da un segno meno (-), ci penserà PHP a mettere in ordine le cose.
Dentro ognuna di queste cartelle ho creato tre file di testo vuoti, ma non è necessario che siano tre, possono essere una o mille. I miei file sono questi:
- la-cioccolata.txt
- la-marmellata.txt
- le-caramelle.txt
Anche qui le parole sono separate dal segno meno, non si usano gli spazi.
I file sono normalissimi file di testo vuoti.
A questo punto ci serve il PHP, ho separato in tre file perché così sono più brevi e si capisce quello che fanno, il primo si chiama indice.php, e questo è il suo contenuto:
[HR]
<?php
print("<?xml version=\\"1.0\\" encoding=\\"iso-8859-1\\"?>\\n");
print"<sondaggi>\\n";
$rep=opendir('.');
while ($file = readdir($rep)){
if($file != '..' && $file !='.' && $file !=''){
if (is_dir($file)){
$nicenameA = explode("_", $file);
$nicename = str_replace("-", " ", $nicenameA[1]);
print("\t<sondaggio dirname=\\"$file\\">$nicename</sondaggio>\\n");
}
}
}
print("</sondaggi>");
closedir($rep);
clearstatcache();
?>
[HR]
Si occupa di fare la lista dei sondaggi semplicemente leggendo la lista delle cartelle presenti.
Il secondo file PHP viene richiamato per leggere le varie opzioni per il sondaggio scelto, si chiama Sondaggio.php e questo è il suo contenuto:
[HR]
<?php
if (isset($_POST["myDir"])) {
print("<?xml version=\\"1.0\\" encoding=\\"iso-8859-1\\"?>\\n");
print"<opzioni>\\n";
$rep=opendir($_POST["myDir"]);
while ($file = readdir($rep)){
if($file != '..' && $file !='.' && $file !=''){
$nicename = str_replace("-", " ", $file);
$nicename = str_replace(".txt", "", $nicename);
print("\t<opzione nome=\\"$file\\">$nicename</opzione>\\n");
}
}
print("</opzioni>");
closedir($rep);
clearstatcache();
} else {
print("nessun post arrivato");
}
?>
[HR]
L'ultimo file si chiama Vota.php, si occupa di registrare il voto e in ogni caso ci mostra il risultato:
[HR]
<?php
if (isset($_POST["opzione"])) {
/// Aggiorno il risultato
$value = file_get_contents($_POST["sondaggio"]."/".$_POST["opzione"]);
$value = $value==""?0:$value;
$value++;
$fp = fopen($_POST["sondaggio"]."/".$_POST["opzione"], "w+");
fwrite($fp, $value);
fclose($fp);
}
print("<?xml version=\\"1.0\\" encoding=\\"iso-8859-1\\"?>\\n");
print"<risultati>\\n";
$rep=opendir($_POST["sondaggio"]);
while ($file = readdir($rep)){
if($file != '..' && $file !='.' && $file !=''){
$value = file_get_contents($_POST["sondaggio"]."/".$file);
$nicename = str_replace("-", " ", $file);
$nicename = str_replace(".txt", "", $nicename);
$totalvotes = file_get_contents($_POST["sondaggio"]."/".$file);
$totalvotes = $totalvotes==""?0:$totalvotes;
print("\t<opzione totale=\\"$totalvotes\\">$nicename</opzione>\\n");
}
}
print("</risultati>");
closedir($rep);
clearstatcache();
[HR]
Anche in Flash ho diviso la cosa su tre fotogrammi, anche se ne sarebbe bastato uno, ma così il lavoro è diviso e si capisce cosa succede.
Nel primo fotogramma ho questo script:
[HR]
stop();
function gotoPoll(pollTitle) {
_global.pollTitle = pollTitle;
gotoAndStop(2);
}
var myPollList:XML = new XML();
myPollList.ignoreWhite = true;
System.useCodepage = true;
myPollList.onLoad = function(src:String) {
if (src == "undefined") {
listaSondaggi.htmlText = "<b>Errore nel caricamento</b>";
} else {
lista = myPollList.firstChild.childNodes;
for (i=0; i<lista.length; i++) {
var myNode:XML = lista[i];
nicename = myNode.firstChild;
dir_name = myNode.attributes.dirname;
listaSondaggi.htmlText += "<a href=\\"asfunction:gotoPoll,"+dir_name+"\">"+nicename+"</a><br>";
}
}
};
myPollList.load("http://localhost/Sondaggio/indice.php");
[HR]
C'è una casella di testo dinamica settata per l'HTML, quando riceviamo la lista dei sondaggi questa apparirà all'interno della casella di testo e sarà cliccabile.
La casella di testo deve chiamarsi listaSondaggi.
Sul secondo fotogramma possiamo esprimere il voto, anche qui c'è una casella di testo dinamico, questo è lo script:
[HR]
stop();
var resList:XML = new XML;
resList.ignoreWhite = true;
resList.onLoad = function(src:String) {
if (src == "undefined") {
Sondaggio.htmlText += "<a href=\\"asfunction:gotoAndStop,1\\">Errore nella connessione, riprova.</a><br>";
} else {
gotoAndStop(3);
}
};
function votePoll(opzione) {
var myVote:LoadVars = new LoadVars();
Sondaggio.htmlText = "invio il tuo voto";
myVote.opzione = opzione;
myVote.sondaggio = _global.pollTitle;
myVote.sendAndLoad("http://localhost/Sondaggio/vota.php", resList, "POST");
}
var myPoll:LoadVars = new LoadVars();
var myOptions:XML = new XML();
myOptions.ignoreWhite = true;
myPoll.myDir = _global.pollTitle;
myOptions.onLoad = function(src:String) {
if (src == "undefined") {
Sondaggio.htmlText = "<b>Errore nel caricamento</b>";
} else {
opzioni = myOptions.firstChild.childNodes;
for (i=0; i<opzioni.length; i++) {
var myNode:XML = opzioni[i];
nicename = myNode.firstChild;
opt_name = myNode.attributes.nome;
Sondaggio.htmlText += "<a href=\\"asfunction:votePoll,"+opt_name+"\">"+nicename+"</a><br>";
}
}
};
myPoll.sendAndLoad("http://localhost/Sondaggio/sondaggio.php", myOptions, "POST");
[HR]
La casella di testo per questo fotogramma è uguale a quella sul primo, ma si chiama Sondaggio.
Sul terzo fotogramma si vedono i risultati del sondaggio, sempre attraverso la solita casella di testo che per l'occasione si chiama Risultati.
Questo è lo script:
[HR]
Results = resList.firstChild.childNodes;
for (i=0; i<Results.length; i++) {
var myNode:XML = Results[i];
nicename = myNode.firstChild;
totale = myNode.attributes.totale;
Risultati.htmlText += nicename+" <b>"+totale+"</b><br>";
}
[HR]
Naturalmente per funzionare il tutto ha bisogno di PHP, quindi al posto degli indirizzi che ho usato io dovrai mettere gli indirizzi dei file sul tuo spazio web, dove gira PHP.
Esempio:
sostituisci
"http://localhost/Sondaggio/sondaggio.php"
con
"http://www.tuosito.it/Sondaggio/sondaggio.php"

Di: Professore | 26/09/2020 18:35:14

sondaggio

Grazie professore... sei un grande!

Di: TCK | 26/09/2020 18:35:14